{"$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":"D13","name":"Secret Scanning","shortDescription":{"text":"Secret Scanning"},"helpUri":"https://codehealth.canine.dev/dimensions/D13","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D15","name":"Churn \u00D7 Complexity Hotspots","shortDescription":{"text":"Churn \u00D7 Complexity Hotspots"},"helpUri":"https://codehealth.canine.dev/dimensions/D15"},{"id":"D16","name":"Bus Factor","shortDescription":{"text":"Bus Factor"},"helpUri":"https://codehealth.canine.dev/dimensions/D16"},{"id":"D19","name":"Documentation Quality","shortDescription":{"text":"Documentation Quality"},"helpUri":"https://codehealth.canine.dev/dimensions/D19"},{"id":"D21","name":"Naming Consistency","shortDescription":{"text":"Naming Consistency"},"helpUri":"https://codehealth.canine.dev/dimensions/D21"},{"id":"D28","name":"Secrets (history)","shortDescription":{"text":"Secrets (history)"},"helpUri":"https://codehealth.canine.dev/dimensions/D28","relationships":[{"target":{"id":"CWE-798","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-259","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-798","CWE-259"]}},{"id":"D29","name":"Static Analysis (SAST)","shortDescription":{"text":"Static Analysis (SAST)"},"helpUri":"https://codehealth.canine.dev/dimensions/D29","relationships":[{"target":{"id":"CWE-79","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-89","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-77","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-79","CWE-89","CWE-78","CWE-94","CWE-77"]}},{"id":"D33","name":"JS/npm Dependency Vulnerabilities","shortDescription":{"text":"JS/npm Dependency Vulnerabilities"},"helpUri":"https://codehealth.canine.dev/dimensions/D33","relationships":[{"target":{"id":"CWE-1395","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-937","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1395","CWE-937"]}},{"id":"D34","name":"Knowledge Freshness","shortDescription":{"text":"Knowledge Freshness"},"helpUri":"https://codehealth.canine.dev/dimensions/D34"},{"id":"D35","name":"Change Coupling","shortDescription":{"text":"Change Coupling"},"helpUri":"https://codehealth.canine.dev/dimensions/D35"},{"id":"D36","name":"Supply-chain Provenance \u0026 Signing","shortDescription":{"text":"Supply-chain Provenance \u0026 Signing"},"helpUri":"https://codehealth.canine.dev/dimensions/D36","relationships":[{"target":{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]},{"target":{"id":"CWE-494","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1357","CWE-494"]}},{"id":"D37","name":"Vulnerability-disclosure Policy","shortDescription":{"text":"Vulnerability-disclosure Policy"},"helpUri":"https://codehealth.canine.dev/dimensions/D37","relationships":[{"target":{"id":"CWE-1059","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},"kinds":["relevant"]}],"properties":{"cwe":["CWE-1059"]}}]}},"results":[{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.readCode (cyclomatic 529): ClassReader.readCode has cyclomatic complexity 529 (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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1538}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3f1ec7f9afabbc5ca8d82deece6710ff5ebf96861ab7f5f584fd696a4a7543f"}},{"ruleId":"D1","level":"warning","message":{"text":"Frame.execute (cyclomatic 191): Frame.execute has cyclomatic complexity 191 (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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c540087df94962e5def309e17be6a105cd7fd2dc90e9f407bacf1677284d85a"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstructorResolver.instantiateUsingFactoryMethod (cyclomatic 61): ConstructorResolver.instantiateUsingFactoryMethod has cyclomatic complexity 61 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"47622197aa1e3dcc108400f776686ddbba249a48cc0498ad5a940354b0b6e910"}},{"ruleId":"D1","level":"warning","message":{"text":"Tokenizer.process (cyclomatic 61): Tokenizer.process has cyclomatic complexity 61 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"227a12e4c85f8a58d83dcc8d3927a045bab5ff82fc9e271a47762f0b09af0114"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractBeanFactory.isTypeMatch (cyclomatic 54): AbstractBeanFactory.isTypeMatch has cyclomatic complexity 54 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"12680089a34aead35f14b5a898c18083ca39b8a1684c7605ae37c2d5039ba5ce"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeConverterDelegate.convertIfNecessary (cyclomatic 53): TypeConverterDelegate.convertIfNecessary 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e309e2798cccc4d73ac0c4a0379a245e5b31ea70510678b15092fdb880891d33"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.accept (cyclomatic 50): ClassReader.accept 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"62df4c26a08f201ea9587cdb93b4dc51daa270cc4473cce43bfd711415b24732"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassWriter.toByteArray (cyclomatic 46): ClassWriter.toByteArray has cyclomatic complexity 46 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassWriter.java"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed2a37015cb7bd88a2f5b378ff9fd54d1790b5e353ae7c4b8b6741d8470a3d44"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.putMethodInfo (cyclomatic 43): MethodWriter.putMethodInfo 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":2181}}}],"partialFingerprints":{"codehealthFindingId/v1":"b653be02b17c3d0da8452f6600e81af4dccf73550888a193ad848a5e812052aa"}},{"ruleId":"D1","level":"warning","message":{"text":"Ipv6Address.parse (cyclomatic 42): Ipv6Address.parse 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f09a74bdb9a6624e9738f135bd64f5dbeb7b15ff21d233e0e0bb9b566c9920e"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstructorResolver.autowireConstructor (cyclomatic 40): ConstructorResolver.autowireConstructor 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9a8a56acc750b561f7972639bef09d852c91a62f9e6d9f6d1460077c345e2b0"}},{"ruleId":"D1","level":"warning","message":{"text":"CallMetaDataContext.reconcileParameters (cyclomatic 40): CallMetaDataContext.reconcileParameters 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"40d613cd57c36a77f292968120e92d130228b58024d38a7ba0adf9a254d6a676"}},{"ruleId":"D1","level":"warning","message":{"text":"LazyConnectionInvocationHandler.invoke (cyclomatic 40): LazyConnectionInvocationHandler.invoke has cyclomatic complexity 40 (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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea1f6d2cb6888857ee742ddee3018c512c475a6e09a4ea0e55d03c728c72627e"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractMessageConverterMethodProcessor.writeWithMessageConverters (cyclomatic 40): AbstractMessageConverterMethodProcessor.writeWithMessageConverters 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"a72950808c9a74b3fbd08d2d69f7e3a4433fa01a6190ff165f850991a7bf69ce"}},{"ruleId":"D1","level":"warning","message":{"text":"AntPathMatcher.doMatch (cyclomatic 39): AntPathMatcher.doMatch 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"d938f81310a6d86701aae7f052c482e9c50067934d6ac2952e63cbff39000a1b"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCreatorUtils.setValue (cyclomatic 39): StatementCreatorUtils.setValue 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d95e19788a9a76f78a5a99e7700bd6c167628381ffceb203fcdb5ae0a533cc6"}},{"ruleId":"D1","level":"warning","message":{"text":"ResolvableType.isAssignableFrom (cyclomatic 38): ResolvableType.isAssignableFrom 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":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e36d7393af4e615b19264cafff6f4e19050e0b1247a9b429fbd07a00650a77"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.readMethod (cyclomatic 38): ClassReader.readMethod 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"298f98d39704d9c9dc776f330a3036cce0ac4a802d786e77ee1b97703eb051ce"}},{"ruleId":"D1","level":"warning","message":{"text":"CachedSessionInvocationHandler.invoke (cyclomatic 38): CachedSessionInvocationHandler.invoke 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":"spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c57e5eb8c7ff8e0fa5b2e9a3d59f92d02ba837f44ec8bcf9d041823ebae7713"}},{"ruleId":"D1","level":"warning","message":{"text":"BaseDefaultCodecs.initCodec (cyclomatic 36): BaseDefaultCodecs.initCodec 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":"spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f008342bb57ea6d918e0da5b7a732f235ac8c13b19a6f976b823bbf2dab7e37"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.readElementValue (cyclomatic 36): ClassReader.readElementValue 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":3042}}}],"partialFingerprints":{"codehealthFindingId/v1":"248d80540a8928f1ea10d132d7c94bfd754867714b64ebebbe6b779756c539c6"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultSingletonBeanRegistry.getSingleton (cyclomatic 35): DefaultSingletonBeanRegistry.getSingleton 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"736d29e55ba7c71c6e7e771e8b323517eadca4f9eeeec7fc6d0a52b019967b30"}},{"ruleId":"D1","level":"warning","message":{"text":"JdbcUtils.getResultSetValue (cyclomatic 35): JdbcUtils.getResultSetValue 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"304e77bc696a9a1fae76cf7d94e552b27f1f95a83b6cc45fe27651c6cb1a5de7"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultBuilder.detectMessageConverters (cyclomatic 34): DefaultBuilder.detectMessageConverters 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":"spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"3671e7c7812f3095a1e953f3ba702dfb6b5df14fef11ff594abf18cbfbe8f391"}},{"ruleId":"D1","level":"warning","message":{"text":"SQLErrorCodeSQLExceptionTranslator.doTranslate (cyclomatic 34): SQLErrorCodeSQLExceptionTranslator.doTranslate 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"55fac453cf4734d477b39ab50e524396b10a58fbd140f7b1d3952781799d16fa"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedConnectionInvocationHandler.invoke (cyclomatic 34): SharedConnectionInvocationHandler.invoke 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":"spring-jms/src/main/java/org/springframework/jms/connection/SingleConnectionFactory.java"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"58f4b0a3b8e196e5b4fdc5370f2d3e2b3963e79c1fcabd148b750bdb159133a4"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractMockHttpServletRequestBuilder.merge (cyclomatic 33): AbstractMockHttpServletRequestBuilder.merge 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":"spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfe3154dff5e72fd70a01f6076d62734216d24d09f7da6feedd2d53b6253f2fd"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractSockJsService.handleRequest (cyclomatic 33): AbstractSockJsService.handleRequest 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"98cbf0cd5da2b42ad79fda1418a3a9ce8d52caeef71fed40f85beceebc3e8261"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parseMapElement (cyclomatic 32): BeanDefinitionParserDelegate.parseMapElement 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"26b7b848d858f31e6ebc2c3c543546e50712b080a8a211298507a63a12621400"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultListableBeanFactory.doGetBeanNamesForType (cyclomatic 32): DefaultListableBeanFactory.doGetBeanNamesForType 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"2398e59cabf7a4e0049eddd05590320e9a53e25b8eeb3ee9e0add19f91712f0f"}},{"ruleId":"D1","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.findPathMatchingResources (cyclomatic 32): PathMatchingResourcePatternResolver.findPathMatchingResources 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34a08e9f38ed1ebe4d7bbabb9d15de5d10d39daa3a1c0742674462b91ab32b5"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionAspectSupport.invokeWithinTransaction (cyclomatic 32): TransactionAspectSupport.invokeWithinTransaction 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":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"b00f7ba7cf440b608a15f949a60cd73bac30873b08caad3e16c5a9d23431235d"}},{"ruleId":"D1","level":"warning","message":{"text":"Type.getOpcode (cyclomatic 32): Type.getOpcode has cyclomatic complexity 32 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/Type.java"},"region":{"startLine":795}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0f3e95b93699e83881ae7ff7752a69026cdf4f7e4ffb2bf020ba5f0964f04c9"}},{"ruleId":"D1","level":"warning","message":{"text":"XStreamMarshaller.configureXStream (cyclomatic 32): XStreamMarshaller.configureXStream 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":"spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"37994bab785347eaebb9cc1267008e9dc03e691a509f1ccf2982a38db1f1ffd8"}},{"ruleId":"D1","level":"warning","message":{"text":"StompSubProtocolHandler.handleMessageFromClient (cyclomatic 31): StompSubProtocolHandler.handleMessageFromClient 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":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"481b3f41cc9071922b1b757264f275e40e1fdf43419e5e681a7ad3d33e3361a2"}},{"ruleId":"D1","level":"warning","message":{"text":"TransportHandlingSockJsService.handleTransportRequest (cyclomatic 31): TransportHandlingSockJsService.handleTransportRequest 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/TransportHandlingSockJsService.java"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"720cdc6ac4d49c7f5115a0a501d697634a10617072e1cebc97a0819ae30f37c5"}},{"ruleId":"D1","level":"warning","message":{"text":"ReflectiveMethodResolver.resolve (cyclomatic 30): ReflectiveMethodResolver.resolve 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dca97a4145ade1d9f219ddf16bd9a024ed501915de05de6dcaf6dd892a93928"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedParameterUtils.parseSqlStatement (cyclomatic 30): NamedParameterUtils.parseSqlStatement 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"7738943ac4b590b38d9ab9242bc9529d8548acdbfa570b854b0629d20a073c05"}},{"ruleId":"D1","level":"warning","message":{"text":"HibernateExceptionTranslator.convertHibernateAccessException (cyclomatic 30): HibernateExceptionTranslator.convertHibernateAccessException has cyclomatic complexity 30 (threshold 15). To reduce it, split the body: these branches sit side by side rather than nested inside one another, so extracting each one on its own would leave a function per branch. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateExceptionTranslator.java"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"bde4b8666f2faf0afc3016c25c5e7ea9b7542c4745e84dd2d7ca73c479bc6277"}},{"ruleId":"D1","level":"warning","message":{"text":"HibernateTransactionManager.doBegin (cyclomatic 30): HibernateTransactionManager.doBegin 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a11188c6ac2608b30cd36f66270b60d6af50f6a697695e31d421d255356fa0d"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractMockHttpServletRequestBuilder.buildRequest (cyclomatic 30): AbstractMockHttpServletRequestBuilder.buildRequest 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":"spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ae40bee13eb84c6a8267c61f03bd918a5145beff9e3a50591407c7ace3b8c86"}},{"ruleId":"D1","level":"warning","message":{"text":"HttpClientErrorException.create (cyclomatic 30): HttpClientErrorException.create 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":"spring-web/src/main/java/org/springframework/web/client/HttpClientErrorException.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d065874bf470d5a3181b0d1cebbf355f38dde80bf55a72c146c91ae01c5458c"}},{"ruleId":"D1","level":"warning","message":{"text":"6.handle (cyclomatic 30): 6.handle 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1472}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0105070f6df77fe24361105d2b90248a4e6585db92caee40aa44375d487b42d"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters (cyclomatic 30): AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e07f07a462499951d10681580b11f8ca8561aaef547a9266fb8bed17e79fd5f"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod (cyclomatic 29): AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a840f713c672ece6b568200053be81825ea35f553e4cc742a86055a66c2f93b"}},{"ruleId":"D1","level":"warning","message":{"text":"Selection.getValueRef (cyclomatic 29): Selection.getValueRef 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Selection.java"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"27bbbc30f37d4ea8a74dd4defbc67bccce6ceb9ea8b797eddea1e2021d5a0435"}},{"ruleId":"D1","level":"warning","message":{"text":"DataBinder.createObject (cyclomatic 29): DataBinder.createObject 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":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"c900669d0dacc8ecbe273f5ba9ae769fff1c9c8a90e9ca3a40ff62c17c51b35c"}},{"ruleId":"D1","level":"warning","message":{"text":"StompBrokerRelayMessageHandler.handleMessageInternal (cyclomatic 29): StompBrokerRelayMessageHandler.handleMessageInternal 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c90ef281d452958475d79d11b7b9739b41c5f1c85163aef4eed3773462f5147"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalSessionFactoryBean.afterPropertiesSet (cyclomatic 29): LocalSessionFactoryBean.afterPropertiesSet 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBean.java"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"e84fe40baec2ea33893a6343abfe725e580578ac4f4a1730f71007ffe30536bb"}},{"ruleId":"D1","level":"warning","message":{"text":"2.handle (cyclomatic 29): 2.handle 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"675e4faa7683c592fe606cdc64b307de6482a25842bcbdaf72f919cbf0136c1e"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptTemplateView.initApplicationContext (cyclomatic 29): ScriptTemplateView.initApplicationContext 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/script/ScriptTemplateView.java"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"1eb4d97c855f2936b2d22a9fda9f50f22aad6d7890638be4bbb4be979c88aabe"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultListableBeanFactory.doResolveDependency (cyclomatic 28): DefaultListableBeanFactory.doResolveDependency 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f792737acb4189483e891e6d735f68fdbac7778766e3c5943ae3311fa6563b4"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.visitFrame (cyclomatic 28): MethodWriter.visitFrame 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"aadd1c2af27bec458222b40d3d44895735b67153c1eb4112e407ee63b96dbf49"}},{"ruleId":"D1","level":"warning","message":{"text":"ReflectUtils.defineClass (cyclomatic 28): ReflectUtils.defineClass has cyclomatic complexity 28 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aab85a714e38dab62245204c361e27f080d0823018361a02ea8af38a8974bdd"}},{"ruleId":"D1","level":"warning","message":{"text":"AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors (cyclomatic 27): AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc6781b2f11ba6d226b46e5fb06f8fd1d921e898d5a126c462e8c23d9408022b"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractBeanFactory.doGetBean (cyclomatic 27): AbstractBeanFactory.doGetBean 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfdfea1d0beee4c7587d391b377df57ca0e7ddd21494498c8178552d9f591605"}},{"ruleId":"D1","level":"warning","message":{"text":"OpMinus.getValueInternal (cyclomatic 27): OpMinus.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"84086cfc10c3a71fd4003f581c659193ff7bf00cec2361ec2620ac4cf2a429a5"}},{"ruleId":"D1","level":"warning","message":{"text":"OpPlus.getValueInternal (cyclomatic 27): OpPlus.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e40ac3d50f35bc4ea7a518a2185a01827c346489bfbba46ea76e38879eb83cd"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.readTypeAnnotations (cyclomatic 27): ClassReader.readTypeAnnotations has cyclomatic complexity 27 (threshold 15). To reduce it, keep the dispatch but shrink the arms: move each non-trivial case body into its own named function (or onto the value being matched) so the dispatch reads one line per case, and group related cases into a sub-dispatch. Where every arm is uniform \u2014 the same kind of value, with no behaviour of its own \u2014 a table keyed by the case is the shorter form; wherever the arms carry different data or different behaviour, keep them as cases, because collapsing those trades an explicit, reviewable set of cases for nothing."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":2756}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d21f191e31926903bb92f90f838cb0bbfbee08353ed44661fc4c4101b85d1dc"}},{"ruleId":"D1","level":"warning","message":{"text":"DeferredQueryInvocationHandler.invoke (cyclomatic 27): DeferredQueryInvocationHandler.invoke 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":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f054d79fe8fa2205ff74fb91ee8c0ff39beaee2bd55726b00007e509e1b24d"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractMessageReaderArgumentResolver.readBody (cyclomatic 27): AbstractMessageReaderArgumentResolver.readBody 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageReaderArgumentResolver.java"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5b9b1b76bc1ed24e90aa7a98f798e97844b7fb0a2a5f4c9299aeb217b2ff808"}},{"ruleId":"D1","level":"warning","message":{"text":"ViewResolutionResultHandler.handleResult (cyclomatic 27): ViewResolutionResultHandler.handleResult 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandler.java"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff186a06244bb5c639ecd2e280612383e0878f3fc8c41daf3dc9f6d91c4c9a79"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationWriter.visit (cyclomatic 26): AnnotationWriter.visit 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":"spring-core/src/main/java/org/springframework/asm/AnnotationWriter.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"30ea3116afa3a7d3b5fe7766ddcd003f952428a7f550782cad8f4c8cf7ba35ec"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.putFrame (cyclomatic 26): MethodWriter.putFrame 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"981e0b5608cafe6e6ea74ef5c156f2a4576237c0b7a33146ec8efd2f964db65b"}},{"ruleId":"D1","level":"warning","message":{"text":"NamedParameterUtils.parseSqlStatement (cyclomatic 26): NamedParameterUtils.parseSqlStatement 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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddc2e689a27f62bad8f6ff4f8a83db305e6621e3905a24617511da9b3c9e0124"}},{"ruleId":"D1","level":"warning","message":{"text":"WhatWgUrlParser.isDoubleDotPathSegment (cyclomatic 26): WhatWgUrlParser.isDoubleDotPathSegment 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"427edc030c7ea916eaf30dada46e4c42c7bbf7f77263c3e2790b74f7bf733beb"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractMessageWriterResultHandler.writeBody (cyclomatic 26): AbstractMessageWriterResultHandler.writeBody 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageWriterResultHandler.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"37f3f639fcefb14ca92a5b1dcf0b72354699e98e7b81b1aa093ea4f7485feb4c"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptTemplateView.setApplicationContext (cyclomatic 26): ScriptTemplateView.setApplicationContext 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/script/ScriptTemplateView.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"3df28698fcb967dcad48c44124733bc72d5b72f01bc48c8075688f1128b3ac97"}},{"ruleId":"D1","level":"warning","message":{"text":"QualifierAnnotationAutowireCandidateResolver.checkQualifier (cyclomatic 25): QualifierAnnotationAutowireCandidateResolver.checkQualifier 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4e80591b600182fff288fc505b6d996ed0fbd968264a76327dec871d2ebf254"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanDefinitionValueResolver.resolveValueIfNecessary (cyclomatic 25): BeanDefinitionValueResolver.resolveValueIfNecessary 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionValueResolver.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"e933bd0720af781386f793363cc111146c2668af82bc1c34e2c5bd3486afc216"}},{"ruleId":"D1","level":"warning","message":{"text":"ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod (cyclomatic 25): ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"784443795c3cde0382d76d497f08c7006ba3ba5680fb26a06ac66983652d960a"}},{"ruleId":"D1","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.doFindPathMatchingJarResources (cyclomatic 25): PathMatchingResourcePatternResolver.doFindPathMatchingJarResources 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ed38d9d1e11914946035d70bcabc6283c51d03b67dc5d08c9c15ab73bca3294"}},{"ruleId":"D1","level":"warning","message":{"text":"Operator.equalityCheck (cyclomatic 25): Operator.equalityCheck 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a2ddae33a6fe925b345da0650d06eb6bc9a8db65767bfc10c909621b1d678a5"}},{"ruleId":"D1","level":"warning","message":{"text":"CodeFlow.insertAnyNecessaryTypeConversionBytecodes (cyclomatic 25): CodeFlow.insertAnyNecessaryTypeConversionBytecodes 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":"spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java"},"region":{"startLine":419}}}],"partialFingerprints":{"codehealthFindingId/v1":"62911383a48cce1c179a9a09a83ef49bbfaa22867fed3cbc0f070dc2f28b808e"}},{"ruleId":"D1","level":"warning","message":{"text":"JmsListenerContainerParser.parseSpecificContainerProperties (cyclomatic 25): JmsListenerContainerParser.parseSpecificContainerProperties 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":"spring-jms/src/main/java/org/springframework/jms/config/JmsListenerContainerParser.java"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f774f8bae4a565792889de087ca9943de53c4b6ebed89ff52f6d092add617a"}},{"ruleId":"D1","level":"warning","message":{"text":"AsyncMessageListenerInvoker.run (cyclomatic 25): AsyncMessageListenerInvoker.run 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":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e35cb83a7521eeecb2f9773a2d706b585b5302c8ef91702cd1cc3449d93716"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedEntityManagerInvocationHandler.invoke (cyclomatic 25): SharedEntityManagerInvocationHandler.invoke has cyclomatic complexity 25 (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":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"3ecb3400930f43e316a0084b339d5bcc62f1e8f300b40da7010a1b8df7197eab"}},{"ruleId":"D1","level":"warning","message":{"text":"InternalPathPatternParser.parse (cyclomatic 25): InternalPathPatternParser.parse 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":"spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd54b7efd5d6ba88184add3652d76fcef12111aefc1ad46aadb400ddb8519f1e"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.getTypeForFactoryBean (cyclomatic 24): AbstractAutowireCapableBeanFactory.getTypeForFactoryBean 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"3066abab19e0ba2e9fbb2802531b2b5d9300d5b4d3c0cd6788e9ac4149300530"}},{"ruleId":"D1","level":"warning","message":{"text":"GenericTypeAwareAutowireCandidateResolver.checkGenericTypeMatch (cyclomatic 24): GenericTypeAwareAutowireCandidateResolver.checkGenericTypeMatch 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"d53428e659b3aae812dac38acc5f760d366498b31bf5d5d19eee93072e40c6ec"}},{"ruleId":"D1","level":"warning","message":{"text":"StandardTypeComparator.compare (cyclomatic 24): StandardTypeComparator.compare 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeComparator.java"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"0087b9f76c7cd2a1389fb4aaca2b16053026ea63ac9e180286809278baaa0364"}},{"ruleId":"D1","level":"warning","message":{"text":"ConstructorReference.createArray (cyclomatic 24): ConstructorReference.createArray 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3f95f5ea0a1ccae78b28db31283b58c07799bdcb3d3f1d6b1600724f8a77aff"}},{"ruleId":"D1","level":"warning","message":{"text":"Indexer.getValueRef (cyclomatic 24): Indexer.getValueRef 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"733f755858341797d900c7dbf910bd464a3533ba0720da23fd59350dadbddb00"}},{"ruleId":"D1","level":"warning","message":{"text":"ScheduledAnnotationBeanPostProcessor.processScheduledTask (cyclomatic 24): ScheduledAnnotationBeanPostProcessor.processScheduledTask 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":"spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99f1fff6d5c97f3d9e9db51c05eedffcc92a4ba8726f3051f333314c648c6be"}},{"ruleId":"D1","level":"warning","message":{"text":"GenericCallMetaDataProvider.processProcedureColumns (cyclomatic 24): GenericCallMetaDataProvider.processProcedureColumns 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f07a27a72316277704b0a2960221a7dddb6fb9c374fcafc75063f3efd2f31f"}},{"ruleId":"D1","level":"warning","message":{"text":"TransactionAwareInvocationHandler.invoke (cyclomatic 24): TransactionAwareInvocationHandler.invoke 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dfe0531e02195872ff29c4882edbb99409d9c3b34c3900eff88de64ce315e67"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultHandlerExceptionResolver.doResolveException (cyclomatic 24): DefaultHandlerExceptionResolver.doResolveException 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9325574299d4395d765a658aed509bdf53c9461ef01f55c1be8b7f6a71f0f8"}},{"ruleId":"D1","level":"warning","message":{"text":"ProxyCallbackFilter.accept (cyclomatic 23): ProxyCallbackFilter.accept 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":"spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"e02eb301d9b6b9cda8ccacb804ab08ee40a4fd0ff4378471e8157bfce606d4e4"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.getPropertyValue (cyclomatic 23): AbstractNestablePropertyAccessor.getPropertyValue 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ffff956afc828097cbd9199bf382a9d0f0c2398a1b60b7630f4e618c8c39e19"}},{"ruleId":"D1","level":"warning","message":{"text":"CommonAnnotationBeanPostProcessor.buildResourceMetadata (cyclomatic 23): CommonAnnotationBeanPostProcessor.buildResourceMetadata 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":"spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd10534b45d6013ff84895b7639b1b928ca8ae6965f46556f98de222d2d6f2c4"}},{"ruleId":"D1","level":"warning","message":{"text":"ConfigurationClassPostProcessor.processConfigBeanDefinitions (cyclomatic 23): ConfigurationClassPostProcessor.processConfigBeanDefinitions 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"54858d05c5d5bc2b78a211d4c4462884d8979655ff559ad479b478eaa0bc27d8"}},{"ruleId":"D1","level":"warning","message":{"text":"Indexer.generateCode (cyclomatic 23): Indexer.generateCode 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"d969544dd9a0552083cee32374750f727de2de14ff553799c3b3dad1dc3d8321"}},{"ruleId":"D1","level":"warning","message":{"text":"Operator.generateComparisonCode (cyclomatic 23): Operator.generateComparisonCode 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1b2f5d7d31b52e73fd52fba04003b908dffa297587a34245fc9eb0e08cfa9a"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptUtils.executeSqlScript (cyclomatic 23): ScriptUtils.executeSqlScript 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3c3773ca57b003940ba3d8ddaa19ec30a0f03e001c3d936b2417841348f113a"}},{"ruleId":"D1","level":"warning","message":{"text":"AutowireUtils.resolveReturnTypeForFactoryMethod (cyclomatic 22): AutowireUtils.resolveReturnTypeForFactoryMethod 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"2bf20b5b59e7d723f2e20aa4d5c158c201fa6c1240dcc38b657dcb79d0df0724"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeConverterDelegate.convertToTypedMap (cyclomatic 22): TypeConverterDelegate.convertToTypedMap 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"05f9335f675ef41804c67b04a18f1ffd7400366ff3486b4bce3fdd2a29a349ff"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptUtils.splitSqlScript (cyclomatic 22): ScriptUtils.splitSqlScript 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"b04bf464455bac19e1baac383a61885d04f58e46d1d98b9626d896ac9a40b5a8"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleJmsHeaderMapper.toHeaders (cyclomatic 22): SimpleJmsHeaderMapper.toHeaders 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":"spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb15a5b058b911b9ae0897d111de85957a7123a417bf6622909a81afc1564d0f"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptUtils.splitSqlScript (cyclomatic 22): ScriptUtils.splitSqlScript 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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"59cf64e488b376ccffe5ba2a729cc52e50a301df9a45b56ab88d717a59cc7e02"}},{"ruleId":"D1","level":"warning","message":{"text":"ServletRequestMethodArgumentResolver.resolveArgument (cyclomatic 22): ServletRequestMethodArgumentResolver.resolveArgument 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletRequestMethodArgumentResolver.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"95edf83a024e9425496f434b68a768cb8be36b89c04b2b5be3cd01ae72751f34"}},{"ruleId":"D1","level":"warning","message":{"text":"Jackson2ObjectMapperBuilder.configure (cyclomatic 21): Jackson2ObjectMapperBuilder.configure 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":"spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"46a062b6ce9a7a8ed4cf5fb144f4b2a64ef5ff7734c7300543f0300f7e4b004b"}},{"ruleId":"D1","level":"warning","message":{"text":"JdkDynamicAopProxy.invoke (cyclomatic 21): JdkDynamicAopProxy.invoke 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":"spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"769806c220ebaa49460b7d37f6a8e49fa0ccda16084bea2fe59cdda787b81dba"}},{"ruleId":"D1","level":"warning","message":{"text":"GroovyBeanDefinitionWrapper.setProperty (cyclomatic 21): GroovyBeanDefinitionWrapper.setProperty 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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionWrapper.java"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a5db9b358ca2e5e7026ad4ed1b2cbbf89d84512b8bbddf41a0b9557735f78b5"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.doCreateBean (cyclomatic 21): AbstractAutowireCapableBeanFactory.doCreateBean 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"56d1836a9bbe3243ed20677327b3b8171a1d55c823dda40c8fb775671f94aa94"}},{"ruleId":"D1","level":"warning","message":{"text":"LazyDependencyTargetSource.getTarget (cyclomatic 21): LazyDependencyTargetSource.getTarget 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":"spring-context/src/main/java/org/springframework/context/annotation/ContextAnnotationAutowireCandidateResolver.java"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"80f1e87b703a07ac78b41ddaf0286119d523b8bdeee280b2b25aff574ae8fc85"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractApplicationEventMulticaster.retrieveApplicationListeners (cyclomatic 21): AbstractApplicationEventMulticaster.retrieveApplicationListeners 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":"spring-context/src/main/java/org/springframework/context/event/AbstractApplicationEventMulticaster.java"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6c3c7d9c6244fcf04ccd3bef2107f216a8835f3549ae23501bf0b5b5190ded9"}},{"ruleId":"D1","level":"warning","message":{"text":"OpGT.getValueInternal (cyclomatic 21): OpGT.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGT.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"33726d600a9070faee5c43f4eb469b156ee12495698f169a077ef9b0322387a0"}},{"ruleId":"D1","level":"warning","message":{"text":"OpLT.getValueInternal (cyclomatic 21): OpLT.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpLT.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"728d3a2e646d0b2d94547f58c17a16b17af83765d62ba9e8fb11cd5d5422e06d"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.readField (cyclomatic 21): ClassReader.readField 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"34546d516c9c49b85c5abe3da82d9af2204418eda30219d2e78a21ab5d9102f2"}},{"ruleId":"D1","level":"warning","message":{"text":"StaxEventXMLReader.parseInternal (cyclomatic 21): StaxEventXMLReader.parseInternal 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":"spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"54963e40d7de209623583e32bd61d98fdd2919057be9c287f1021454698ecca8"}},{"ruleId":"D1","level":"warning","message":{"text":"AntPatternComparator.compare (cyclomatic 21): AntPatternComparator.compare 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c86b552adf956b2d2f1ad39e4a68b7f78d07c32739c9d7e513bbc3814500e05"}},{"ruleId":"D1","level":"warning","message":{"text":"StatementCreatorUtils.setNull (cyclomatic 21): StatementCreatorUtils.setNull 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dc819303380efd6cb437b60e9b170eb8cc2dbe87073ca3b9cd94382503047fd"}},{"ruleId":"D1","level":"warning","message":{"text":"MultipartResolutionDelegate.resolveMultipartArgument (cyclomatic 21): MultipartResolutionDelegate.resolveMultipartArgument 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":"spring-web/src/main/java/org/springframework/web/multipart/support/MultipartResolutionDelegate.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f7871a3b6f3fe61225c5cd3c4d30836a8a10a514fcacab8b6f560b573bbafb9"}},{"ruleId":"D1","level":"warning","message":{"text":"HttpEntityMethodProcessor.handleReturnValue (cyclomatic 21): HttpEntityMethodProcessor.handleReturnValue 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1ace4275bc01d5092fe6f8e90365061da7e3f0a68764b1278619382ee70256b"}},{"ruleId":"D1","level":"warning","message":{"text":"ResponseEntityExceptionHandler.handleException (cyclomatic 21): ResponseEntityExceptionHandler.handleException 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityExceptionHandler.java"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"237b4e41bb2bf9acf7fd95d67e1a82dcc5efae242f9acfc94310a4b5067bbeb3"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractTemplateView.renderMergedOutputModel (cyclomatic 21): AbstractTemplateView.renderMergedOutputModel 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractTemplateView.java"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"d005d7bfd7a5f4dcb67a57018f77afcc3f33448f628aa928cd239844caa89d62"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.populateBean (cyclomatic 20): AbstractAutowireCapableBeanFactory.populateBean 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"11764d07d4387000af400759f451a05033e1c963af9181398fe1c556a1f54086"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeConverterDelegate.convertToTypedCollection (cyclomatic 20): TypeConverterDelegate.convertToTypedCollection 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"d05cd8b65eb22a3af15ea8ea0b387fd72e8508d0e08a428199365e8d4c5379c1"}},{"ruleId":"D1","level":"warning","message":{"text":"ConfigurationClassParser.doProcessConfigurationClass (cyclomatic 20): ConfigurationClassParser.doProcessConfigurationClass 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2f5638e17a23da0809822415986b952b89cdb71d3fd476d70de145cd1960511"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeMappedAnnotation.adapt (cyclomatic 20): TypeMappedAnnotation.adapt 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":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotation.java"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c07ff25022e8f84d27654e3c7079b0633a0e8652686ebd5fa2a3637fba9da5d"}},{"ruleId":"D1","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.doFindPathMatchingFileResources (cyclomatic 20): PathMatchingResourcePatternResolver.doFindPathMatchingFileResources 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1f39437f46e97490ed697ee296b288cfd09185b9d1110482dc6e5b6abb7ddbf"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodReference.generateCode (cyclomatic 20): MethodReference.generateCode 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd0e0ccc525d0ade5c98c4a4eaf959e505c44b2859bcfe7e0e05fb0bfc7b59a5"}},{"ruleId":"D1","level":"warning","message":{"text":"Tokenizer.lexNumericLiteral (cyclomatic 20): Tokenizer.lexNumericLiteral 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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"11bf3f7d993e9322843003eb7238ef9febe9b5618afc1ccd243ced4467eb774c"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractPlatformTransactionManager.handleExistingTransaction (cyclomatic 20): AbstractPlatformTransactionManager.handleExistingTransaction 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":"spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"41dc4b1877a136ac7df9fb479bee1c58c700ffbfb0d6b9654e14223700eeedba"}},{"ruleId":"D1","level":"warning","message":{"text":"Frame.merge (cyclomatic 20): Frame.merge 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"1bbcc6a7602cddff84f09e9cf74bda6588bb0014cb8d34fe8f5544d1f86272d8"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.computeMethodInfoSize (cyclomatic 20): MethodWriter.computeMethodInfoSize 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":2076}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3eb4e5dd19a59bff0610a713e4e73de70d4373c20e1be38319f11f0ed76c2b3"}},{"ruleId":"D1","level":"warning","message":{"text":"SQLErrorCodeSQLExceptionTranslator.createCustomException (cyclomatic 20): SQLErrorCodeSQLExceptionTranslator.createCustomException 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"17350b291e927b8b8b73b20c246ab80834de9324274a0abf0dab566600cd399e"}},{"ruleId":"D1","level":"warning","message":{"text":"ExtendedEntityManagerInvocationHandler.invoke (cyclomatic 20): ExtendedEntityManagerInvocationHandler.invoke 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":"spring-orm/src/main/java/org/springframework/orm/jpa/ExtendedEntityManagerCreator.java"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a5e1a53c367707668538a7c6d614d0ec64a0e4c2f78928e99e634c6ccdfe9d3"}},{"ruleId":"D1","level":"warning","message":{"text":"ResponseEntityResultHandler.handleResult (cyclomatic 20): ResponseEntityResultHandler.handleResult 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandler.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"59579740f392720eaf13ffc2affec635ebf6c7de5fd95029d506bf0b4573c605"}},{"ruleId":"D1","level":"warning","message":{"text":"MessageBrokerBeanDefinitionParser.registerMessageBroker (cyclomatic 20): MessageBrokerBeanDefinitionParser.registerMessageBroker 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":"spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d265cf821b3f7d31d5dc0ef65ff9231f895efb61dfd1a453a95e6b9cf7354c"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.applyPropertyValues (cyclomatic 19): AbstractAutowireCapableBeanFactory.applyPropertyValues 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1660}}}],"partialFingerprints":{"codehealthFindingId/v1":"157349215826cd6c62809a1ad8e4d82b8291d9f7498ff026193c0223918103b7"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertiesBeanDefinitionReader.registerBeanDefinition (cyclomatic 19): PropertiesBeanDefinitionReader.registerBeanDefinition 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/PropertiesBeanDefinitionReader.java"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"35072242f59ce6b14ec4df67e828727d6cfbc307cef5b42c8ee72aee0c2f6199"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.processLocalProperty (cyclomatic 19): AbstractNestablePropertyAccessor.processLocalProperty 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"e679f0608e884af4bfe8c26119f58f20aba4f7cf18f77edc739d3936761da4c2"}},{"ruleId":"D1","level":"warning","message":{"text":"CachedIntrospectionResults.\u003Cinit\u003E (cyclomatic 19): CachedIntrospectionResults.\u003Cinit\u003E 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":"spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"91100cf5d29f2158f5a1ec25b6e476acbf1e1e5264df373ad9e04f9dc46bff8c"}},{"ruleId":"D1","level":"warning","message":{"text":"ReflectionHelper.compareArgumentsVarargs (cyclomatic 19): ReflectionHelper.compareArgumentsVarargs 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"d54b70235ebf744fe905c58ee98c8447e8cc36c8890f91086619c505416e2234"}},{"ruleId":"D1","level":"warning","message":{"text":"ReflectivePropertyAccessor.read (cyclomatic 19): ReflectivePropertyAccessor.read 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"07897248b45761c5606f39fd67a70bde55a8534a1d66ff2e0a57c0c289009d81"}},{"ruleId":"D1","level":"warning","message":{"text":"OpGE.getValueInternal (cyclomatic 19): OpGE.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGE.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"6298fdb5681ea74fb7ab8d583f2e0209d50f7bfda6754ff11ee93a98ec18584a"}},{"ruleId":"D1","level":"warning","message":{"text":"OpLE.getValueInternal (cyclomatic 19): OpLE.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpLE.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"c16b854a4845fe1b5a3d8fe156df8cd2bdb437d4c55b1af365f53a93f74adebe"}},{"ruleId":"D1","level":"warning","message":{"text":"JavaMailSenderImpl.doSend (cyclomatic 19): JavaMailSenderImpl.doSend 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":"spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e6adb4bc78614fd465d0c4ee10161b0e85741524db1adf196ce9c6979c86dc7"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodValidationAdapter.adaptViolations (cyclomatic 19): MethodValidationAdapter.adaptViolations 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationAdapter.java"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"f40a1ce4a0d9fa81d450932b6befb71675e98f0da9f862ed2f04a8af5184b707"}},{"ruleId":"D1","level":"warning","message":{"text":"StaxStreamXMLReader.parseInternal (cyclomatic 19): StaxStreamXMLReader.parseInternal 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":"spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aa8c44869b270983d2d84ebe003179b5a32bf25f3f1c840e1b0de96c8fefbcf"}},{"ruleId":"D1","level":"warning","message":{"text":"ObjectUtils.arrayEquals (cyclomatic 19): ObjectUtils.arrayEquals 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":"spring-core/src/main/java/org/springframework/util/ObjectUtils.java"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"7035570f7013ed5d0f5a945cff0c019f383932f4b99b5f4a600e67f6c5efd49d"}},{"ruleId":"D1","level":"warning","message":{"text":"CallMetaDataProviderFactory.createMetaDataProvider (cyclomatic 19): CallMetaDataProviderFactory.createMetaDataProvider 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d46f28f670982d123f8cd6872038e4004502ed70415e8bbf272e62dae777084"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractPollingMessageListenerContainer.doReceiveAndExecute (cyclomatic 19): AbstractPollingMessageListenerContainer.doReceiveAndExecute 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":"spring-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"976ed69cf08d2ceeb0f4615da71fe5cd465aab128fb986ccc0295749e3575a38"}},{"ruleId":"D1","level":"warning","message":{"text":"SimpleJmsHeaderMapper.fromHeaders (cyclomatic 19): SimpleJmsHeaderMapper.fromHeaders 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":"spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"444630f5ee76264b204e39bb6681ac8986a93cd5deb498e7550e35f6c09a6cc8"}},{"ruleId":"D1","level":"warning","message":{"text":"SharedEntityAgentInvocationHandler.invoke (cyclomatic 19): SharedEntityAgentInvocationHandler.invoke 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":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0648c2d70e4a7663f6089a475729de0e2732ca300cc5cf4f7fee7f7c9d678f9"}},{"ruleId":"D1","level":"warning","message":{"text":"PathPattern.combine (cyclomatic 19): PathPattern.combine 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":"spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"5fd9429171c548ecc66619fa0b1bcb3973695911016ff7c2350594a4eef5388c"}},{"ruleId":"D1","level":"warning","message":{"text":"JavaScriptUtils.javaScriptEscape (cyclomatic 19): JavaScriptUtils.javaScriptEscape 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":"spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"d949b3d7eadc0c75d32349a9d7f752218758a5aefb68a983583dd843dd49eecd"}},{"ruleId":"D1","level":"warning","message":{"text":"13.handle (cyclomatic 19): 13.handle 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"4179a79df1446b9b6744bebee04ce5fcd71d83744c2e25ca751e345798d51cf3"}},{"ruleId":"D1","level":"warning","message":{"text":"ServerSentEventHttpMessageReader.buildEvent (cyclomatic 18): ServerSentEventHttpMessageReader.buildEvent 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":"spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee9ebc8fa6381a0752b9324cd655ea3e93873201bd1af28dbd2f52cff2ed7b02"}},{"ruleId":"D1","level":"warning","message":{"text":"ContentDisposition.parse (cyclomatic 18): ContentDisposition.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":"spring-web/src/main/java/org/springframework/http/ContentDisposition.java"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f541d40f917666dfe100336e8507b10631411f56d3bdad4501252a2f44519d3"}},{"ruleId":"D1","level":"warning","message":{"text":"ContentDisposition.transliterateToAscii (cyclomatic 18): ContentDisposition.transliterateToAscii 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":"spring-web/src/main/java/org/springframework/http/ContentDisposition.java"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"8026b1457bab12dd307aa9c27dc4831a70a193dfd98979834bf8fc6732ed246d"}},{"ruleId":"D1","level":"warning","message":{"text":"AspectJAdviceParameterNameDiscoverer.getParameterNames (cyclomatic 18): AspectJAdviceParameterNameDiscoverer.getParameterNames 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff858a14123542d43dc4b1b85eba5b6d6fb62f66eb231b8350344c25dd7e4bf"}},{"ruleId":"D1","level":"warning","message":{"text":"AspectJExpressionPointcut.getShadowMatch (cyclomatic 18): AspectJExpressionPointcut.getShadowMatch 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"f5cdcc63432dfcd39db0b24e3daedfb5f41a33f913286e18cc8d903f28aa9604"}},{"ruleId":"D1","level":"warning","message":{"text":"GroovyBeanDefinitionReader.invokeMethod (cyclomatic 18): GroovyBeanDefinitionReader.invokeMethod 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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8a6a3325f8afed6a22763af19ad1c75d80052f1e5a077c8530cedc4d4c780f5"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultListableBeanFactory.findAutowireCandidates (cyclomatic 18): DefaultListableBeanFactory.findAutowireCandidates 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1959}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ac57f11c792db582dad1fb6a910d3212bf02bbe1c58aa21a5eef503fb37cc36"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultListableBeanFactory.resolveNamedBean (cyclomatic 18): DefaultListableBeanFactory.resolveNamedBean 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1569}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4b82eb595a9f0ed433a21fa3d7f0e233a85eed5f6cd357f26e3a3af6f45c386"}},{"ruleId":"D1","level":"warning","message":{"text":"DisposableBeanAdapter.destroy (cyclomatic 18): DisposableBeanAdapter.destroy 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"c38fbbe35bcdfcc7157f8784254f893d6911280449675ac8794a99b2236104b1"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.processKeyedProperty (cyclomatic 18): AbstractNestablePropertyAccessor.processKeyedProperty 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"43db332beba8064cf5903b7bcb8760b46a8e8c487705c648b193395c47144ccd"}},{"ruleId":"D1","level":"warning","message":{"text":"PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors (cyclomatic 18): PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors 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":"spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a12974bdfb85fb73d790a4b93acaca881133d87e5d2d4bf7fded9a1cc29e2f"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationsScanner.processMethodHierarchy (cyclomatic 18): AnnotationsScanner.processMethodHierarchy 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationsScanner.java"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"77b5fe05e85544b15b0f161c0c18c8fab1c27c97c706394bbb5275cd399ffd80"}},{"ruleId":"D1","level":"warning","message":{"text":"PropertyOrFieldReference.readProperty (cyclomatic 18): PropertyOrFieldReference.readProperty 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/PropertyOrFieldReference.java"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"268fa61829869635d7287478594880f3f03dfe590f1ef5cada9375d535c6c28f"}},{"ruleId":"D1","level":"warning","message":{"text":"CodeFlow.insertUnboxInsns (cyclomatic 18): CodeFlow.insertUnboxInsns 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":"spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"ac9cc297ab51d09fab9fb034c6b89a9bb9a80ce720d3795d4b8f445138090731"}},{"ruleId":"D1","level":"warning","message":{"text":"TemplateAwareExpressionParser.skipToCorrectEndSuffix (cyclomatic 18): TemplateAwareExpressionParser.skipToCorrectEndSuffix 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":"spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"294f435ad446e635468a9fdf5e05bae74fc431b784a480a0f8556c47e6f02848"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanValidationDelegate.processAheadOfTime (cyclomatic 18): BeanValidationDelegate.processAheadOfTime 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a940784fcaa2bf566c5b45011c4476eb3ae761b0a7b7369e9f7a1cf23abd699"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.computeImplicitFrame (cyclomatic 18): ClassReader.computeImplicitFrame 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2a87eedd437a881fc40149f9852651c98466b8856a87e1380c51bde8ba1c338"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.computeMaxStackAndLocal (cyclomatic 18): MethodWriter.computeMaxStackAndLocal 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a4f254b7d1e74dd2e93c30ada1d22afba11fda65fa1bc5d0235899b2fa5d404"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.visitJumpInsn (cyclomatic 18): MethodWriter.visitJumpInsn 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ff0f87a67183ebe5904fad5015c0e002f609f9464b47cf4e9f7ae1dccb698f"}},{"ruleId":"D1","level":"warning","message":{"text":"AntPathMatcher.combine (cyclomatic 18): AntPathMatcher.combine 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"55b7a7364ceca011d28724dbe785e66fb20bdfac2232b9fbeb1ca113ab54da6d"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeUtils.isAssignable (cyclomatic 18): TypeUtils.isAssignable 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":"spring-core/src/main/java/org/springframework/util/TypeUtils.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"d17b1abb80ec0f251304ddd937b1847639221fdd7d0e88e5a8bbacb7ed5d7cbc"}},{"ruleId":"D1","level":"warning","message":{"text":"SQLExceptionSubclassTranslator.doTranslate (cyclomatic 18): SQLExceptionSubclassTranslator.doTranslate 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLExceptionSubclassTranslator.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca3163d773ef825e7af56e2ccc4a1e3238b2026de00fb1976ba5d546e501339a"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractJmsListenerContainerFactory.createListenerContainer (cyclomatic 18): AbstractJmsListenerContainerFactory.createListenerContainer 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":"spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerContainerFactory.java"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"5eff1235e29fde9830b7a0a79f782c0ca84185e2d8617d80bc8e37de03b22168"}},{"ruleId":"D1","level":"warning","message":{"text":"RSocketServiceMethod.initResponseFunction (cyclomatic 18): RSocketServiceMethod.initResponseFunction 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":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"41761d8d7534fadd8b8087532c2aaf58dae7714d913f006aba4b7c01df7b12b3"}},{"ruleId":"D1","level":"warning","message":{"text":"SpringSessionContext.currentSession (cyclomatic 18): SpringSessionContext.currentSession 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/SpringSessionContext.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"eea1ac6ded4ae9fcc57bdfb240867ae8f868c81d9a9820c8517fadc581ec747c"}},{"ruleId":"D1","level":"warning","message":{"text":"EntityManagerFactoryUtils.doGetTransactionalEntityManager (cyclomatic 18): EntityManagerFactoryUtils.doGetTransactionalEntityManager 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":"spring-orm/src/main/java/org/springframework/orm/jpa/EntityManagerFactoryUtils.java"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"405ba20b4a82b281b68172625a016ebcba95ced1874a5688bd9c6b0d7f2611a9"}},{"ruleId":"D1","level":"warning","message":{"text":"KotlinDelegate.invokeFunction (cyclomatic 18): KotlinDelegate.invokeFunction 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ea30bfb09abe6d9fcf3d861e92b4ff47bf3908f09ee386fd8c30f096a7cd787"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationDrivenBeanDefinitionParser.getMessageConverters (cyclomatic 18): AnnotationDrivenBeanDefinitionParser.getMessageConverters 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b8aded7154771b68a40de47cbbd7c620dffd4e93fc804001a4d4061ff4f4f65"}},{"ruleId":"D1","level":"warning","message":{"text":"ETag.parse (cyclomatic 17): ETag.parse has cyclomatic complexity 17 (threshold 15). To reduce it, separate the cases: extract each independent branch into its own named function, and where the body has guards that only reject input, fold those into early returns at the top."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/ETag.java"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"13ba5078181a80030da3825c077c626d2499da1c442ef092f2876e89bedbc934"}},{"ruleId":"D1","level":"warning","message":{"text":"BindingReflectionHintsRegistrar.registerReflectionHints (cyclomatic 17): BindingReflectionHintsRegistrar.registerReflectionHints 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":"spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d5ea3ff0eb8eb4934f25b960bf5a792245d4a0e347738c3530f50ede1f4c267"}},{"ruleId":"D1","level":"warning","message":{"text":"DisposableBeanAdapter.inferDestroyMethodsIfNecessary (cyclomatic 17): DisposableBeanAdapter.inferDestroyMethodsIfNecessary 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"4db7fc2a59aca52118af55cc7052ef1b95a23a34a621a8ee20acaac8f6e75032"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassPathScanningCandidateComponentProvider.scanCandidateComponents (cyclomatic 17): ClassPathScanningCandidateComponentProvider.scanCandidateComponents 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":"spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a6901e94889f0a389160ed8b9257c4211e03cf7647fe6438ba73bed8bd28434"}},{"ruleId":"D1","level":"warning","message":{"text":"ConfigurationClassPostProcessor.enhanceConfigurationClasses (cyclomatic 17): ConfigurationClassPostProcessor.enhanceConfigurationClasses 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"92570952e0d8cdb579544419411ef9be854d197ff458adbdcbbe17a5bd6ff5e7"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultLifecycleProcessor.doStop (cyclomatic 17): DefaultLifecycleProcessor.doStop 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":"spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"36f62aa163a12a04ea1aabf7ecbaa5cc6eef94eb8fc8a8ae78bb8c791799ce33"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractTypeHierarchyTraversingFilter.match (cyclomatic 17): AbstractTypeHierarchyTraversingFilter.match 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":"spring-core/src/main/java/org/springframework/core/type/filter/AbstractTypeHierarchyTraversingFilter.java"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"26efa3c68ddb85fc17f46d2437ff5e58d6248a94b4f82a57baf50d9093c72e11"}},{"ruleId":"D1","level":"warning","message":{"text":"ReflectivePropertyAccessor.write (cyclomatic 17): ReflectivePropertyAccessor.write 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"f63722f6dedcefdb3d8a370edb9f72f9de10c83eead87722def1164552a7b3da"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodReference.getValueInternal (cyclomatic 17): MethodReference.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4d07c449ef2acb2841fa4a20781a167b6a9bab185c8be5f09b9f19990a8e05f"}},{"ruleId":"D1","level":"warning","message":{"text":"OpDec.getValueInternal (cyclomatic 17): OpDec.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDec.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"4dcafca7b00db1a0554e3206753aa3d190fce32ab601e757a6ffd5038b9a1b71"}},{"ruleId":"D1","level":"warning","message":{"text":"OpInc.getValueInternal (cyclomatic 17): OpInc.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpInc.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2b6cb57ba7dcea03114954a9014f34c9dee575ea1c82a7cca0b6c18be5d849a"}},{"ruleId":"D1","level":"warning","message":{"text":"OpMultiply.getValueInternal (cyclomatic 17): OpMultiply.getValueInternal 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e273fa4118ac811defd606cb90d5f719c580d0cc42931be3e226df98b2f21a6"}},{"ruleId":"D1","level":"warning","message":{"text":"CodeFlow.toDescriptor (cyclomatic 17): CodeFlow.toDescriptor 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":"spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f6b6fd36f1b8f3532071ae13ccd7d110436896eb63fc24870e9e261c3dc60d"}},{"ruleId":"D1","level":"warning","message":{"text":"MBeanExporter.autodetect (cyclomatic 17): MBeanExporter.autodetect 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":"spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"02498898d5f281e6f5064790300e4ba021f3c5a64dcaa26d0bbc8ce035668bac"}},{"ruleId":"D1","level":"warning","message":{"text":"ClassReader.readRecordComponent (cyclomatic 17): ClassReader.readRecordComponent 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2eccdf6412add91cb76363b4964ba546d76732e5ab45016c7c97e22d5371949"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.visitFieldInsn (cyclomatic 17): MethodWriter.visitFieldInsn 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ba6c48b0e726e61b5e9d848e90cd3ff50eb3e48f58cc3108ed028ee7159c70"}},{"ruleId":"D1","level":"warning","message":{"text":"CodeEmitter.cast_numeric (cyclomatic 17): CodeEmitter.cast_numeric 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":"spring-core/src/main/java/org/springframework/cglib/core/CodeEmitter.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"855937c984e7b5da190fa42483850198f1e42ce2c43db0a78dd60021c71e8ebc"}},{"ruleId":"D1","level":"warning","message":{"text":"NumberUtils.convertNumberToTargetClass (cyclomatic 17): NumberUtils.convertNumberToTargetClass 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":"spring-core/src/main/java/org/springframework/util/NumberUtils.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e8961c9010e72cf28a4e467acd3a3194c596b23a4e89681ce7e8a8ba0ec2094"}},{"ruleId":"D1","level":"warning","message":{"text":"LazyConnectionInvocationHandler.getTargetConnection (cyclomatic 17): LazyConnectionInvocationHandler.getTargetConnection 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"03e691dce086d7e08d06dbfe3ff332572314e06bafe509227cd869836970ba34"}},{"ruleId":"D1","level":"warning","message":{"text":"SQLStateSQLExceptionTranslator.doTranslate (cyclomatic 17): SQLStateSQLExceptionTranslator.doTranslate 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ecdff5770dde098b5fd0d8a5327c0de73d5dfa196590236444af592047a42e0"}},{"ruleId":"D1","level":"warning","message":{"text":"RelayConnectionHandler.forward (cyclomatic 17): RelayConnectionHandler.forward 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"85cf999d06e552a4dc5396802996633862065d38fa7f1c341123531113aa2002"}},{"ruleId":"D1","level":"warning","message":{"text":"AnnotationConfigWebApplicationContext.loadBeanDefinitions (cyclomatic 17): AnnotationConfigWebApplicationContext.loadBeanDefinitions 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":"spring-web/src/main/java/org/springframework/web/context/support/AnnotationConfigWebApplicationContext.java"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"2935c171564472d7cabfd48d93bca6fde4c29fdbf47c1bccd400f13a23667abd"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractNamedValueMethodArgumentResolver.resolveArgument (cyclomatic 17): AbstractNamedValueMethodArgumentResolver.resolveArgument 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":"spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b9bd31ef704166a716f77b6241f1aeb5c6304c4dc18c8e85444abb0c3b41e6"}},{"ruleId":"D1","level":"warning","message":{"text":"RequestParamMapMethodArgumentResolver.resolveArgument (cyclomatic 17): RequestParamMapMethodArgumentResolver.resolveArgument 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":"spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMapMethodArgumentResolver.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"3150452b9eb1268f0793af95930bb0cc7d23f2c33725512083d98c269ef4e86a"}},{"ruleId":"D1","level":"warning","message":{"text":"PathPattern.extractPathWithinPattern (cyclomatic 17): PathPattern.extractPathWithinPattern has cyclomatic complexity 17 (threshold 15). To reduce it, separate the branches: extract each independent case into its own named function so the top-level body reads as a short sequence of named decisions."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bd0c6822a96d918b9cc76cd5ab8473831083bf002af74b0cc7ff866f760d1ef"}},{"ruleId":"D1","level":"warning","message":{"text":"ForwardedHeaderUtils.parseFirstElement (cyclomatic 17): ForwardedHeaderUtils.parseFirstElement 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":"spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"8101eb16262ec1d445288f3d576186ff2f720e6383f322513372af9fa0631cb6"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractAutoProxyCreator.buildProxy (cyclomatic 16): AbstractAutoProxyCreator.buildProxy 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":"spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"5776e449082bafb49632efba7669ec4452d94225fa486b74a1d05658eb458158"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parseBeanDefinitionAttributes (cyclomatic 16): BeanDefinitionParserDelegate.parseBeanDefinitionAttributes 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"40a142987d4ec8e5aad93e62b51aa58cb0097a790d3c9ea7c57f8aea0b16613c"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parsePropertySubElement (cyclomatic 16): BeanDefinitionParserDelegate.parsePropertySubElement 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"0da22b7815457e3aefeb961986cac119160c1774ea1dfb3a40aee4f0026902d3"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanFactoryAnnotationUtils.isQualifierMatch (cyclomatic 16): BeanFactoryAnnotationUtils.isQualifierMatch 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/BeanFactoryAnnotationUtils.java"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"486326e74d102b85ba7f7da1190053571a438411b09af9569e8b25f5aac5ebd7"}},{"ruleId":"D1","level":"warning","message":{"text":"QualifierAnnotationAutowireCandidateResolver.checkQualifiers (cyclomatic 16): QualifierAnnotationAutowireCandidateResolver.checkQualifiers 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ef5911b3159558bfa9a0975e56ddcb2746ab1f8a3c0a984df6f7a61dba1bfc7"}},{"ruleId":"D1","level":"warning","message":{"text":"BeanDefinitionVisitor.resolveValue (cyclomatic 16): BeanDefinitionVisitor.resolveValue 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":"spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionVisitor.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdf12b2eafb14da440cb62bd19135f683a8aac5237e235dad742b06fc04eda8f"}},{"ruleId":"D1","level":"warning","message":{"text":"GroovyBeanDefinitionReader.invokeBeanDefiningMethod (cyclomatic 16): GroovyBeanDefinitionReader.invokeBeanDefiningMethod 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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bca87a69f309a22caa5e51e3ca85d70bc1d63291732293785d9e92e6970d58e"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractBeanFactory.getMergedBeanDefinition (cyclomatic 16): AbstractBeanFactory.getMergedBeanDefinition 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":1409}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c358369544430851c451ecedaded651f22b2e1bc446b3ffca76743b5324272c"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractBeanFactory.getType (cyclomatic 16): AbstractBeanFactory.getType 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"455e59997b29566e1e383656d939616ee5eeb4d5b921611d15f3df47dfa0d142"}},{"ruleId":"D1","level":"warning","message":{"text":"DefaultListableBeanFactory.resolveMultipleBeans (cyclomatic 16): DefaultListableBeanFactory.resolveMultipleBeans 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1793}}}],"partialFingerprints":{"codehealthFindingId/v1":"0df9574ae3de4e3f23d58cf9e8aa82f184ab0f7d42f55851de23dda7c13a29f8"}},{"ruleId":"D1","level":"warning","message":{"text":"ConfigurationClassUtils.checkConfigurationClassCandidate (cyclomatic 16): ConfigurationClassUtils.checkConfigurationClassCandidate 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"56903856346bc610f4aef6c01a477a60d77b59066fec875d4e6c903a22386e08"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeMappedAnnotation.adaptForAttribute (cyclomatic 16): TypeMappedAnnotation.adaptForAttribute 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":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotation.java"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"a869373705fbe9f4dd7b4cbd8e3b28dc257b0a30b25f5435cb68046222c6073a"}},{"ruleId":"D1","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.getClassPathManifestEntriesFromJar (cyclomatic 16): PathMatchingResourcePatternResolver.getClassPathManifestEntriesFromJar 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"341095920009d5cf3fad8ddf41f7ade716942853f49d8db81d35eec9d7045ca3"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractFileResolvingResource.exists (cyclomatic 16): AbstractFileResolvingResource.exists 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":"spring-core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"394f332bc1709af97d8779863f7cbfdb9bfd9343d4606db5698eb09a027c4fcb"}},{"ruleId":"D1","level":"warning","message":{"text":"ReflectivePropertyAccessor.createOptimalAccessor (cyclomatic 16): ReflectivePropertyAccessor.createOptimalAccessor 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a349c98d619035afabe94110b4addbd63eb6d822077cee8b689447a9f4073eb"}},{"ruleId":"D1","level":"warning","message":{"text":"Projection.getValueRef (cyclomatic 16): Projection.getValueRef 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Projection.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd254bb4a95ac881ca51bf357d78c894224e3ea69af3f304b7684c1a5dd669f0"}},{"ruleId":"D1","level":"warning","message":{"text":"SchedulerAccessor.registerJobsAndTriggers (cyclomatic 16): SchedulerAccessor.registerJobsAndTriggers 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":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerAccessor.java"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8ed7b7fe81258e1ab4a17d9a435ffd0e94f9003a1b6488114fc30aa36670e1b"}},{"ruleId":"D1","level":"warning","message":{"text":"ScriptBeanDefinitionParser.parseInternal (cyclomatic 16): ScriptBeanDefinitionParser.parseInternal 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":"spring-context/src/main/java/org/springframework/scripting/config/ScriptBeanDefinitionParser.java"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"1d4d3525bc901f712455e15917f098eede1e4b96aef4c3d5c21a4a6b2a5b3318"}},{"ruleId":"D1","level":"warning","message":{"text":"LocalValidatorFactoryBean.afterPropertiesSet (cyclomatic 16): LocalValidatorFactoryBean.afterPropertiesSet 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.java"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"adb9d9eb95cf8b25582dbcb67023bec6344215fbd2d90c7acf0fa58ebf79ed9d"}},{"ruleId":"D1","level":"warning","message":{"text":"Frame.putAbstractType (cyclomatic 16): Frame.putAbstractType 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":1420}}}],"partialFingerprints":{"codehealthFindingId/v1":"f8560aa1d4675020665bfea669a70bd404785908356ccf5fb5989511e1b5dc9f"}},{"ruleId":"D1","level":"warning","message":{"text":"MethodWriter.visitVarInsn (cyclomatic 16): MethodWriter.visitVarInsn 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1e707aed48248fb3940e8dc76ed3c6b6f8a10c3ae7e82e62413b025c7dd7c67"}},{"ruleId":"D1","level":"warning","message":{"text":"SymbolTable.addConstant (cyclomatic 16): SymbolTable.addConstant 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":"spring-core/src/main/java/org/springframework/asm/SymbolTable.java"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a29769643aeb3d8316d14b1052a198e6cb0d72012ac8b9be46e82da1bd582f8"}},{"ruleId":"D1","level":"warning","message":{"text":"EmitUtils.append_string_helper (cyclomatic 16): EmitUtils.append_string_helper 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":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"6039cfbae2053e3b88741eded9cd013ced97d8eae7587bb28c32a1e27d9998c4"}},{"ruleId":"D1","level":"warning","message":{"text":"Enhancer.validate (cyclomatic 16): Enhancer.validate 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":"spring-core/src/main/java/org/springframework/cglib/proxy/Enhancer.java"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fcc44d5209406dbb159c09f1b5e4bbd05e49b09de79f76e89bc4a0ff977c24b"}},{"ruleId":"D1","level":"warning","message":{"text":"MimeType.isCompatibleWith (cyclomatic 16): MimeType.isCompatibleWith 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":"spring-core/src/main/java/org/springframework/util/MimeType.java"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"c582b8f33f4f0e73a0678fa72f9f73ca99ad8fd39558e31948bd71806a87a2e8"}},{"ruleId":"D1","level":"warning","message":{"text":"StringUtils.cleanPath (cyclomatic 16): StringUtils.cleanPath 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":"spring-core/src/main/java/org/springframework/util/StringUtils.java"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"73ee83647227e85a2ff99de0f57e1268e14794b9bc2a8579fbc156f46699d77c"}},{"ruleId":"D1","level":"warning","message":{"text":"TypeUtils.isAssignable (cyclomatic 16): TypeUtils.isAssignable 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":"spring-core/src/main/java/org/springframework/util/TypeUtils.java"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"2ea0b16642391fe73008feeac66812332383c519ce353668e29097fea691d62a"}},{"ruleId":"D1","level":"warning","message":{"text":"ConnectionFactoryUtils.doGetTransactionalSession (cyclomatic 16): ConnectionFactoryUtils.doGetTransactionalSession 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":"spring-jms/src/main/java/org/springframework/jms/connection/ConnectionFactoryUtils.java"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"82f9da9af61fc28fb4f8f6b45d1e15b1eaf502760f8ec4e12e242323811f4d34"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractEntityManagerFactoryBean.afterPropertiesSet (cyclomatic 16): AbstractEntityManagerFactoryBean.afterPropertiesSet 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":"spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"598d8c4a06682d97efdd963cf93f02ac65c53414864b389139d0113b7d9108ec"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractRequestLoggingFilter.createMessage (cyclomatic 16): AbstractRequestLoggingFilter.createMessage 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":"spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"87e9322e20538d0e2880ed1f26162188de2d470ef48abaa5a74bde950441ba21"}},{"ruleId":"D1","level":"warning","message":{"text":"WhatWgUrlParser.sanitizeInput (cyclomatic 16): WhatWgUrlParser.sanitizeInput 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"d06213baad549be5c394f726381a52b86124bd33faef42bfbfb0b55c9d23df86"}},{"ruleId":"D1","level":"warning","message":{"text":"InvocableHandlerMethod.invoke (cyclomatic 16): InvocableHandlerMethod.invoke 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cc27c33bb4607735310e6a3033a7a28fa884f719f1650aa8dbefce155438736"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractHandlerMapping.getHandler (cyclomatic 16): AbstractHandlerMapping.getHandler 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"55fc049e77f91f81bbeeeba5555712c816bac6b797bd00de674d6501d3d36cee"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractUrlHandlerMapping.lookupHandler (cyclomatic 16): AbstractUrlHandlerMapping.lookupHandler 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"08b34e62899f2dd3684cfa7df4c3e071a224352bd3a4e709e6d1080e94950ca3"}},{"ruleId":"D1","level":"warning","message":{"text":"MappedInterceptor.matches (cyclomatic 16): MappedInterceptor.matches 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/MappedInterceptor.java"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a3296d27ebcbecf578fc650a6aa26acb837532f99d7e54e0c7e340a23215409"}},{"ruleId":"D1","level":"warning","message":{"text":"AbstractEmitterSubscriber.run (cyclomatic 16): AbstractEmitterSubscriber.run 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"be212291367c3af83639e632cff82a5b8ccac24125a4687b81640bf7d86efa25"}},{"ruleId":"D1","level":"warning","message":{"text":"WebSocketNamespaceUtils.registerSockJsService (cyclomatic 16): WebSocketNamespaceUtils.registerSockJsService 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":"spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ab74f3f855f031dcfbb86e167ed33647be980f602b12540dd400ffc73198bb4"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readCode (cognitive 185): ClassReader.readCode has cognitive complexity 185 (threshold 15). Drivers by points: if/else 107, loops 51, boolean chains 12, ternaries 8, match/switch 7 (nesting depth added 101). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1538}}}],"partialFingerprints":{"codehealthFindingId/v1":"ee804c1be47f14153d11a09c1f800f0cfc37ce24e1101bb96d9f44bb860a0a21"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorResolver.instantiateUsingFactoryMethod (cognitive 168): ConstructorResolver.instantiateUsingFactoryMethod has cognitive complexity 168 (threshold 15). Drivers by points: if/else 104, ternaries 31, loops 18, boolean chains 10, error handling 5 (nesting depth added 104). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":397}}}],"partialFingerprints":{"codehealthFindingId/v1":"a93298a4ccdac255914627f28eb96686cb7431908c0cab57e8d35d889cf0f248"}},{"ruleId":"D2","level":"warning","message":{"text":"CachedSessionInvocationHandler.invoke (cognitive 154): CachedSessionInvocationHandler.invoke has cognitive complexity 154 (threshold 15). Drivers by points: if/else 80, ternaries 48, match/switch 10, boolean chains 8, error handling 8 (nesting depth added 123). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"415b895f0ade5f3b4249c46a9ae87dec94844786feb731407a94b374795addc7"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCreatorUtils.setValue (cognitive 153): StatementCreatorUtils.setValue has cognitive complexity 153 (threshold 15). Drivers by points: if/else 134, error handling 12, boolean chains 7 (nesting depth added 103). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"9ac5a94ed1766b16d45eaebc751b5cce3439d8651f844dad6e20868e8ccd3509"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConverterDelegate.convertIfNecessary (cognitive 127): TypeConverterDelegate.convertIfNecessary has cognitive complexity 127 (threshold 15). Drivers by points: if/else 98, error handling 15, boolean chains 14 (nesting depth added 74). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"aae4a521a787f6cda4ee313f4fefe59acccbc8d3fb2a779871f7438cd40fe0f9"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationWriter.visit (cognitive 122): AnnotationWriter.visit has cognitive complexity 122 (threshold 15). Drivers by points: loops 92, if/else 16, ternaries 14 (nesting depth added 96). 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":"spring-core/src/main/java/org/springframework/asm/AnnotationWriter.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e5f21190532f6d0d99ede775352eec82b4fe15ec0662313ffcf02e7eebdaeb5"}},{"ruleId":"D2","level":"warning","message":{"text":"CallMetaDataContext.reconcileParameters (cognitive 116): CallMetaDataContext.reconcileParameters has cognitive complexity 116 (threshold 15). Drivers by points: if/else 96, ternaries 10, boolean chains 6, loops 4 (nesting depth added 72). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java"},"region":{"startLine":312}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f64dec18d337fcfb7ee008f4b315311d7c059f9666dd0f5769b980ca2c6773c"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.isTypeMatch (cognitive 114): AbstractBeanFactory.isTypeMatch has cognitive complexity 114 (threshold 15). Drivers by points: if/else 96, boolean chains 17, ternaries 1 (nesting depth added 59). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab408f8bd8150b507fcc73926b24462dd68bb171577869f98162cbc8600708e0"}},{"ruleId":"D2","level":"warning","message":{"text":"Ipv6Address.parse (cognitive 110): Ipv6Address.parse has cognitive complexity 110 (threshold 15). Drivers by points: if/else 59, ternaries 34, loops 12, boolean chains 5 (nesting depth added 67). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":2528}}}],"partialFingerprints":{"codehealthFindingId/v1":"9045b62b430998c3917bb28a7d40cea0627131227ab3751073163c0c2dd03c37"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorResolver.autowireConstructor (cognitive 103): ConstructorResolver.autowireConstructor has cognitive complexity 103 (threshold 15). Drivers by points: if/else 76, boolean chains 8, error handling 7, loops 6, ternaries 6 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1d4affa1c51e463c8f3c7ee62fe1a9eaf2c01c71767504f8cd0f0c451bf71b5"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod (cognitive 98): AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod has cognitive complexity 98 (threshold 15). Drivers by points: if/else 61, ternaries 22, loops 7, error handling 6, boolean chains 2 (nesting depth added 68). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":710}}}],"partialFingerprints":{"codehealthFindingId/v1":"caaf84b34a3e7be47709869a298dfd6af702780a878b5e90bb87d7a23f07dbed"}},{"ruleId":"D2","level":"warning","message":{"text":"JdbcUtils.getResultSetValue (cognitive 98): JdbcUtils.getResultSetValue has cognitive complexity 98 (threshold 15). Drivers by points: if/else 55, error handling 34, boolean chains 8, ternaries 1 (nesting depth added 65). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"73fdeba1d85a5875989d50d8d3e4df2e932b026cde50fdbdb1f601c6c751159b"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractSockJsService.handleRequest (cognitive 93): AbstractSockJsService.handleRequest has cognitive complexity 93 (threshold 15). Drivers by points: if/else 85, boolean chains 5, error handling 2, ternaries 1 (nesting depth added 60). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d09053c479be4b8631b4af0e718681e93bdb6c04c73eacd3319d7fb4f7229f"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultSingletonBeanRegistry.getSingleton (cognitive 88): DefaultSingletonBeanRegistry.getSingleton has cognitive complexity 88 (threshold 15). Drivers by points: if/else 63, error handling 13, loops 7, boolean chains 5 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java"},"region":{"startLine":255}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f4c2cda8ab725e5b325db11130b67c992439e6099a88c0f8474115959dc19da"}},{"ruleId":"D2","level":"warning","message":{"text":"AutowireUtils.resolveReturnTypeForFactoryMethod (cognitive 87): AutowireUtils.resolveReturnTypeForFactoryMethod has cognitive complexity 87 (threshold 15). Drivers by points: if/else 63, error handling 14, loops 8, boolean chains 2 (nesting depth added 65). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AutowireUtils.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c4830f413c80a595baa1993073af1f0745ca96d4fc9db7cd3f10e2557ea6023"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedParameterUtils.parseSqlStatement (cognitive 85): NamedParameterUtils.parseSqlStatement has cognitive complexity 85 (threshold 15). Drivers by points: if/else 66, loops 12, boolean chains 7 (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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f9c4d261ec4fe2a4a4a5474191cd34e9f8742ee77a6155de76f72c27c545c99"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionValueResolver.resolveValueIfNecessary (cognitive 83): BeanDefinitionValueResolver.resolveValueIfNecessary has cognitive complexity 83 (threshold 15). Drivers by points: if/else 55, error handling 21, loops 6, boolean chains 1 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionValueResolver.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab0598a3010682c68c134f520bc00443fd8309ddfe148ea256728d64c5391590"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMessageConverterMethodProcessor.writeWithMessageConverters (cognitive 80): AbstractMessageConverterMethodProcessor.writeWithMessageConverters has cognitive complexity 80 (threshold 15). Drivers by points: if/else 60, boolean chains 6, error handling 5, match/switch 5, loops 4 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"684d9f11904588768167e5195926ea2434a43c3bbac8d91a18323eeded5cbdaf"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.doGetBeanNamesForType (cognitive 73): DefaultListableBeanFactory.doGetBeanNamesForType has cognitive complexity 73 (threshold 15). Drivers by points: if/else 47, boolean chains 12, error handling 8, ternaries 4, loops 2 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba88215a82226812d1ef1c58e3e0e10b277f84281db93d6a262244dc92565925"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.accept (cognitive 73): ClassReader.accept has cognitive complexity 73 (threshold 15). Drivers by points: if/else 46, loops 21, ternaries 4, 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"44f9a56cf72d73a798c632ff26bb9a9cdf5049311a323c9b38b0c5eea54a87e4"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedParameterUtils.parseSqlStatement (cognitive 73): NamedParameterUtils.parseSqlStatement has cognitive complexity 73 (threshold 15). Drivers by points: if/else 56, loops 12, boolean chains 5 (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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"15be72f368d9554b09bf9bbb465f82368501f8006552268f69e02ebda52e3618"}},{"ruleId":"D2","level":"warning","message":{"text":"AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors (cognitive 72): AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors has cognitive complexity 72 (threshold 15). Drivers by points: if/else 55, error handling 9, boolean chains 4, loops 3, ternaries 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":349}}}],"partialFingerprints":{"codehealthFindingId/v1":"94149a3e9302819f27a8cd4503fd85f87ffe37232dd18095748c7988af9222ae"}},{"ruleId":"D2","level":"warning","message":{"text":"DataBinder.createObject (cognitive 71): DataBinder.createObject has cognitive complexity 71 (threshold 15). Drivers by points: if/else 42, error handling 11, ternaries 7, boolean chains 6, loops 5 (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":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":900}}}],"partialFingerprints":{"codehealthFindingId/v1":"44a1bf289b1300cc42f2274b5b29274afedd43b81993f05cffea0715e6cd180e"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.visitFrame (cognitive 70): MethodWriter.visitFrame has cognitive complexity 70 (threshold 15). Drivers by points: if/else 46, loops 20, match/switch 3, boolean chains 1 (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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a180207bda48874eee9a732ed1697de69baedc4af3b70bce59d7ba21b3ff217"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalPathPatternParser.parse (cognitive 69): InternalPathPatternParser.parse has cognitive complexity 69 (threshold 15). Drivers by points: if/else 53, ternaries 11, boolean chains 4, loops 1 (nesting depth added 44). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bfa6f1f48c6368bfa5d1e5d17d2be628d7743d394d010a5cd3b1bf63064b2e4"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvableType.isAssignableFrom (cognitive 68): ResolvableType.isAssignableFrom has cognitive complexity 68 (threshold 15). Drivers by points: if/else 45, ternaries 13, boolean chains 7, loops 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":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"35be4d2ad7f3c369575303b95a4ad8c1813278f13feae225a192eb93f0e77c10"}},{"ruleId":"D2","level":"warning","message":{"text":"BaseDefaultCodecs.initCodec (cognitive 67): BaseDefaultCodecs.initCodec has cognitive complexity 67 (threshold 15). Drivers by points: if/else 67 (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":"spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4118325d35b24065888f0b363accdfd310bfc0fea60f8b8273a58403367569"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.doGetBean (cognitive 67): AbstractBeanFactory.doGetBean has cognitive complexity 67 (threshold 15). Drivers by points: if/else 47, error handling 15, loops 3, boolean chains 2 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"21821c399c73077b1ac27351b38bc9e040aab8aa65faad6dcaf49aff1660c00f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.getPropertyValue (cognitive 67): AbstractNestablePropertyAccessor.getPropertyValue has cognitive complexity 67 (threshold 15). Drivers by points: if/else 50, loops 10, error handling 5, boolean chains 2 (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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":598}}}],"partialFingerprints":{"codehealthFindingId/v1":"34e37fc6f796e1bec1a6d7bee173fdeb7033f376eb4ce5984191e6d836b5e3b5"}},{"ruleId":"D2","level":"warning","message":{"text":"SQLErrorCodeSQLExceptionTranslator.doTranslate (cognitive 67): SQLErrorCodeSQLExceptionTranslator.doTranslate has cognitive complexity 67 (threshold 15). Drivers by points: if/else 46, ternaries 9, loops 7, boolean chains 5 (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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"820bb29f8c54bc7ca2ed8bd26d92bae399c314403e2ba0d10e8e6418173e0b64"}},{"ruleId":"D2","level":"warning","message":{"text":"XStreamMarshaller.configureXStream (cognitive 67): XStreamMarshaller.configureXStream has cognitive complexity 67 (threshold 15). Drivers by points: if/else 47, loops 19, error handling 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":"spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java"},"region":{"startLine":471}}}],"partialFingerprints":{"codehealthFindingId/v1":"ded7fd7fba46b0af035faccaaa18d95ac2ce2f2c3c0b14d456a1136848da79dc"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionAspectSupport.invokeWithinTransaction (cognitive 66): TransactionAspectSupport.invokeWithinTransaction has cognitive complexity 66 (threshold 15). Drivers by points: if/else 36, error handling 19, boolean chains 7, ternaries 4 (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":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b68d304123d1033911de69c2e594d6077dd196440f3e844d4dd0ac205cdde56"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentDisposition.parse (cognitive 64): ContentDisposition.parse has cognitive complexity 64 (threshold 15). Drivers by points: if/else 39, loops 18, boolean chains 4, ternaries 3 (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":"spring-web/src/main/java/org/springframework/http/ContentDisposition.java"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a66fc54aa12c7e45e5772de32abf07ef314561e44990a0bd33bbf2253cf7147"}},{"ruleId":"D2","level":"warning","message":{"text":"Tokenizer.process (cognitive 64): Tokenizer.process has cognitive complexity 64 (threshold 15). Drivers by points: if/else 60, match/switch 3, loops 1 (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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"7da127c6a5559a607ef7f178605891c70bba89fd816b4218277c9cadf306747c"}},{"ruleId":"D2","level":"warning","message":{"text":"AntPathMatcher.doMatch (cognitive 64): AntPathMatcher.doMatch has cognitive complexity 64 (threshold 15). Drivers by points: if/else 41, loops 15, boolean chains 8 (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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aa4c884236f67bcfb404c544b75fa3485aac6508860ae47f73d0947129cd8da"}},{"ruleId":"D2","level":"warning","message":{"text":"StompBrokerRelayMessageHandler.handleMessageInternal (cognitive 64): StompBrokerRelayMessageHandler.handleMessageInternal has cognitive complexity 64 (threshold 15). Drivers by points: if/else 57, ternaries 4, boolean chains 3 (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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":504}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5198149e2ba10f915dbc4c603536e3755e2ee39434838644d7644d18bd8205"}},{"ruleId":"D2","level":"warning","message":{"text":"MultipartResolutionDelegate.resolveMultipartArgument (cognitive 64): MultipartResolutionDelegate.resolveMultipartArgument has cognitive complexity 64 (threshold 15). Drivers by points: if/else 43, ternaries 20, boolean chains 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":"spring-web/src/main/java/org/springframework/web/multipart/support/MultipartResolutionDelegate.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"31d065ba8c10dc1080a55d8a9f2f2c338e95196bfbdcd7a92cab6315f38bc039"}},{"ruleId":"D2","level":"warning","message":{"text":"Selection.getValueRef (cognitive 63): Selection.getValueRef has cognitive complexity 63 (threshold 15). Drivers by points: if/else 52, boolean chains 5, loops 4, ternaries 2 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Selection.java"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"79087af954ca32f12da013ec04cc1943c079a1c2319347ecff436c3af601e738"}},{"ruleId":"D2","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.findPathMatchingResources (cognitive 61): PathMatchingResourcePatternResolver.findPathMatchingResources has cognitive complexity 61 (threshold 15). Drivers by points: if/else 46, boolean chains 9, loops 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":685}}}],"partialFingerprints":{"codehealthFindingId/v1":"7fef4301825eb289150d10866d53252094a5b0263857a8254e4d8773cc7e8d68"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.putMethodInfo (cognitive 61): MethodWriter.putMethodInfo has cognitive complexity 61 (threshold 15). Drivers by points: if/else 50, ternaries 8, loops 2, boolean chains 1 (nesting depth added 19). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":2181}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c4f014d8dcad87b2782a9e674eaa3da8b029b52d6c58ff45f6bd1c7c32c2df1"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectUtils.defineClass (cognitive 59): ReflectUtils.defineClass has cognitive complexity 59 (threshold 15). Drivers by points: error handling 29, if/else 27, boolean chains 3 (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":"spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java"},"region":{"startLine":448}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b0a706dc6d7d3bc19d13c0f5032ab046a15ec4e96ccf3ba73966bab8ecf32f5"}},{"ruleId":"D2","level":"warning","message":{"text":"ViewResolutionResultHandler.handleResult (cognitive 59): ViewResolutionResultHandler.handleResult has cognitive complexity 59 (threshold 15). Drivers by points: if/else 36, ternaries 19, boolean chains 3, error handling 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandler.java"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"dfdd89f42fae0d111102e9bca531dc977a3149c5407bb546c3bcee6f20620f94"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parseMapElement (cognitive 58): BeanDefinitionParserDelegate.parseMapElement has cognitive complexity 58 (threshold 15). Drivers by points: if/else 43, boolean chains 12, loops 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":1162}}}],"partialFingerprints":{"codehealthFindingId/v1":"346b59bd699fa02bdbf10ac47560abafde11b92831d273e270847c3bb0025641"}},{"ruleId":"D2","level":"warning","message":{"text":"GroovyBeanDefinitionWrapper.setProperty (cognitive 58): GroovyBeanDefinitionWrapper.setProperty has cognitive complexity 58 (threshold 15). Drivers by points: if/else 44, ternaries 9, loops 4, boolean chains 1 (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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionWrapper.java"},"region":{"startLine":167}}}],"partialFingerprints":{"codehealthFindingId/v1":"c92f5e20b54fad63438daba3607703f4e6842de3b7253566410dbd332baab3c9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractApplicationEventMulticaster.retrieveApplicationListeners (cognitive 58): AbstractApplicationEventMulticaster.retrieveApplicationListeners has cognitive complexity 58 (threshold 15). Drivers by points: if/else 48, error handling 3, loops 3, boolean chains 2, ternaries 2 (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":"spring-context/src/main/java/org/springframework/context/event/AbstractApplicationEventMulticaster.java"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"d59eccad8dbd75c22d1d6a2c442164bb46b514a1ae2b0759ca18bbbf97840c83"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericTypeResolver.resolveType (cognitive 55): GenericTypeResolver.resolveType has cognitive complexity 55 (threshold 15). Drivers by points: if/else 50, loops 5 (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":"spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"5300d7bc1e2dd9ece8e2a61a0ed2c071a4f8ec1aa5f73da65c2d58e3a50e622f"}},{"ruleId":"D2","level":"warning","message":{"text":"2.handle (cognitive 55): 2.handle has cognitive complexity 55 (threshold 15). Drivers by points: if/else 42, boolean chains 11, ternaries 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":761}}}],"partialFingerprints":{"codehealthFindingId/v1":"415548be7c1893f87d93af60675dd3492ec6ae87e928634bbfa3cb78c8d543d1"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMessageReaderArgumentResolver.readBody (cognitive 55): AbstractMessageReaderArgumentResolver.readBody has cognitive complexity 55 (threshold 15). Drivers by points: if/else 37, ternaries 12, boolean chains 4, error handling 1, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageReaderArgumentResolver.java"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1854f67adb832a31d3b034245de94252c6904ddb8c34f6d3f14db2d3fb189a"}},{"ruleId":"D2","level":"warning","message":{"text":"StompSubProtocolHandler.handleMessageFromClient (cognitive 55): StompSubProtocolHandler.handleMessageFromClient has cognitive complexity 55 (threshold 15). Drivers by points: if/else 43, boolean chains 4, ternaries 4, error handling 3, 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":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"57ffbe7e054e0d8bec3b4ab12cd150f33bea10cfbac02518fe5c3f10f72185e3"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectiveMethodResolver.resolve (cognitive 54): ReflectiveMethodResolver.resolve has cognitive complexity 54 (threshold 15). Drivers by points: if/else 41, boolean chains 4, loops 4, ternaries 4, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"90d130a5789f69d4a0f771df6eec845f0be6059606af3e85601ab16e885fb6a5"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedConnectionInvocationHandler.invoke (cognitive 54): SharedConnectionInvocationHandler.invoke has cognitive complexity 54 (threshold 15). Drivers by points: if/else 40, error handling 5, ternaries 5, boolean chains 3, match/switch 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":"spring-jms/src/main/java/org/springframework/jms/connection/SingleConnectionFactory.java"},"region":{"startLine":614}}}],"partialFingerprints":{"codehealthFindingId/v1":"f19d1b252a98430de7413bcb51ad2c634a366c7b9378b237e905f41affd2e7dc"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanFactoryAspectJAdvisorsBuilder.buildAspectJAdvisors (cognitive 53): BeanFactoryAspectJAdvisorsBuilder.buildAspectJAdvisors has cognitive complexity 53 (threshold 15). Drivers by points: if/else 44, error handling 5, loops 4 (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":"spring-aop/src/main/java/org/springframework/aop/aspectj/annotation/BeanFactoryAspectJAdvisorsBuilder.java"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"fd7ff6217a31574ae2fe5cb932603fbf27b7241d48fba074e7d49ea95e5f2092"}},{"ruleId":"D2","level":"warning","message":{"text":"ServletRequestMethodArgumentResolver.resolveArgument (cognitive 53): ServletRequestMethodArgumentResolver.resolveArgument has cognitive complexity 53 (threshold 15). Drivers by points: if/else 29, ternaries 19, boolean chains 5 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ServletRequestMethodArgumentResolver.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"030b54684976fd90d402546aae4e14b1f7f09d5985c3235b5d71ae91b650057f"}},{"ruleId":"D2","level":"warning","message":{"text":"TransportHandlingSockJsService.handleTransportRequest (cognitive 53): TransportHandlingSockJsService.handleTransportRequest has cognitive complexity 53 (threshold 15). Drivers by points: if/else 45, boolean chains 6, error handling 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/TransportHandlingSockJsService.java"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"268750582f1ee4fb9a8626d00d95841433f5eb620b7c11fb54583af7bd5c0b76"}},{"ruleId":"D2","level":"warning","message":{"text":"GroovyBeanDefinitionReader.invokeBeanDefiningMethod (cognitive 51): GroovyBeanDefinitionReader.invokeBeanDefiningMethod has cognitive complexity 51 (threshold 15). Drivers by points: if/else 24, ternaries 21, loops 5, 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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a50ed32a967d8fe2214e6b9544d4a222c563207da80f95c1e918f911e68d99"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readMethod (cognitive 51): ClassReader.readMethod has cognitive complexity 51 (threshold 15). Drivers by points: if/else 33, loops 16, boolean chains 1, ternaries 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1255}}}],"partialFingerprints":{"codehealthFindingId/v1":"b469de3508291dc388d25ffa58b1a566e139ce6701f8f0caf2b746fb7f405a1c"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.doResolveDependency (cognitive 50): DefaultListableBeanFactory.doResolveDependency has cognitive complexity 50 (threshold 15). Drivers by points: if/else 32, ternaries 11, boolean chains 5, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"6cb6ec6660921acfe3596edf0f21f829ad09ad3b50b979b33bee7d28c06aa438"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractTypeHierarchyTraversingFilter.match (cognitive 50): AbstractTypeHierarchyTraversingFilter.match has cognitive complexity 50 (threshold 15). Drivers by points: if/else 40, error handling 8, loops 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":"spring-core/src/main/java/org/springframework/core/type/filter/AbstractTypeHierarchyTraversingFilter.java"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"c089588de88549f3e3aa2e4fe23b2bbad6b2d3fb919db85529b215200372a6c2"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultBuilder.detectMessageConverters (cognitive 49): DefaultBuilder.detectMessageConverters has cognitive complexity 49 (threshold 15). Drivers by points: if/else 47, 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":"spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java"},"region":{"startLine":296}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e9afba17a466ef932e011d3deaee7b04e7cd9b7b0f41f2387b84155beb39aea"}},{"ruleId":"D2","level":"warning","message":{"text":"HibernateTransactionManager.doBegin (cognitive 49): HibernateTransactionManager.doBegin has cognitive complexity 49 (threshold 15). Drivers by points: if/else 36, boolean chains 7, error handling 4, ternaries 2 (nesting depth added 18). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java"},"region":{"startLine":433}}}],"partialFingerprints":{"codehealthFindingId/v1":"527dd6917a03916198e9bd913d89b4b582011d89f4f667157fa7db2992b7bda9"}},{"ruleId":"D2","level":"warning","message":{"text":"6.handle (cognitive 49): 6.handle has cognitive complexity 49 (threshold 15). Drivers by points: if/else 34, boolean chains 15 (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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1472}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bde0a15154c5cc2e0fbf1af959f1f0ef15ed129c561bb724a1b6c852db7234c"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassWriter.toByteArray (cognitive 48): ClassWriter.toByteArray has cognitive complexity 48 (threshold 15). Drivers by points: if/else 34, loops 9, boolean chains 4, ternaries 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":"spring-core/src/main/java/org/springframework/asm/ClassWriter.java"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba4f97279b4e985cc3a0e8c62bc59022e241cb68976bd423aa77b7a65a4b9266"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedParameterUtils.skipCommentsAndQuotes (cognitive 48): NamedParameterUtils.skipCommentsAndQuotes has cognitive complexity 48 (threshold 15). Drivers by points: if/else 34, loops 14 (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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":228}}}],"partialFingerprints":{"codehealthFindingId/v1":"da040411113624aca424e3e0d2cccab90fabb06c85b0c3791f7905bcb68f2ba7"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptUtils.splitSqlScript (cognitive 48): ScriptUtils.splitSqlScript has cognitive complexity 48 (threshold 15). Drivers by points: if/else 41, boolean chains 5, loops 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":492}}}],"partialFingerprints":{"codehealthFindingId/v1":"f37020af949bd42632826f1c6d8427804f7b205f74372d153f1208948ae9d5a2"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptUtils.splitSqlScript (cognitive 48): ScriptUtils.splitSqlScript has cognitive complexity 48 (threshold 15). Drivers by points: if/else 41, boolean chains 5, loops 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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java"},"region":{"startLine":449}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0e2e38e26e460ce3558a8f3e35fe2bac728fa38ca5934e44df37cb8569297a9"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedParameterUtils.skipCommentsAndQuotes (cognitive 48): NamedParameterUtils.skipCommentsAndQuotes has cognitive complexity 48 (threshold 15). Drivers by points: if/else 34, loops 14 (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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b41012f945c0e65481531f406eae5cde6544330967dab33315900925a1f11b"}},{"ruleId":"D2","level":"warning","message":{"text":"MessageBrokerBeanDefinitionParser.registerMessageBroker (cognitive 48): MessageBrokerBeanDefinitionParser.registerMessageBroker has cognitive complexity 48 (threshold 15). Drivers by points: if/else 48 (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":"spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java"},"region":{"startLine":382}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c56a748693524843be5d06596c6b07f5bcb50557f481bf31bc9cc4b454dfac0"}},{"ruleId":"D2","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.doFindPathMatchingJarResources (cognitive 47): PathMatchingResourcePatternResolver.doFindPathMatchingJarResources has cognitive complexity 47 (threshold 15). Drivers by points: if/else 34, loops 5, error handling 4, boolean chains 2, ternaries 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":865}}}],"partialFingerprints":{"codehealthFindingId/v1":"d612ae2a27e8ce8e09820f5c509de5388738839643af0cd5567f191046a73fdd"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readStackMapFrame (cognitive 47): ClassReader.readStackMapFrame has cognitive complexity 47 (threshold 15). Drivers by points: loops 24, if/else 14, ternaries 8, boolean chains 1 (nesting depth added 31). 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":3297}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe315e9d067700e5f1d4432cf3a7e4eb3e18368b6e8e97309b4e0343e702b995"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncMessageListenerInvoker.run (cognitive 47): AsyncMessageListenerInvoker.run has cognitive complexity 47 (threshold 15). Drivers by points: if/else 31, ternaries 7, boolean chains 6, loops 2, 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":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":1313}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa9ee9020bb907ac564f9e463ca767c6a379b0f967a65d640c610736cd94e196"}},{"ruleId":"D2","level":"warning","message":{"text":"QualifierAnnotationAutowireCandidateResolver.checkQualifier (cognitive 46): QualifierAnnotationAutowireCandidateResolver.checkQualifier has cognitive complexity 46 (threshold 15). Drivers by points: if/else 36, boolean chains 5, error handling 4, 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a7fce425979c8bf621cb6d238fc88ab647d483d68afcde022920e1e62273c95"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassPostProcessor.processConfigBeanDefinitions (cognitive 46): ConfigurationClassPostProcessor.processConfigBeanDefinitions has cognitive complexity 46 (threshold 15). Drivers by points: if/else 34, loops 10, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"950169790e0b14d7cac89db6a7d4a1d955afcf0ba0248c847752ef7397308ab3"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectionHelper.compareArgumentsVarargs (cognitive 46): ReflectionHelper.compareArgumentsVarargs has cognitive complexity 46 (threshold 15). Drivers by points: if/else 41, loops 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"800415cc6efc4b46f2eb3a2e21470d3b00208140908f238d7b47c8b75be4ab28"}},{"ruleId":"D2","level":"warning","message":{"text":"DeferredQueryInvocationHandler.invoke (cognitive 46): DeferredQueryInvocationHandler.invoke has cognitive complexity 46 (threshold 15). Drivers by points: if/else 31, boolean chains 6, error handling 5, loops 3, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":541}}}],"partialFingerprints":{"codehealthFindingId/v1":"1fe7601783fd4347f903661917399685df28e2b67d2ad309519d0eb5bd3b0973"}},{"ruleId":"D2","level":"warning","message":{"text":"QualifierAnnotationAutowireCandidateResolver.checkQualifiers (cognitive 45): QualifierAnnotationAutowireCandidateResolver.checkQualifiers has cognitive complexity 45 (threshold 15). Drivers by points: if/else 35, loops 6, boolean chains 3, ternaries 1 (nesting depth added 29). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/QualifierAnnotationAutowireCandidateResolver.java"},"region":{"startLine":176}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7e9c4af46f6e75d689e820cf8ff79f8418fa7f944961f04a0bc24d051af0709"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.resolveNamedBean (cognitive 45): DefaultListableBeanFactory.resolveNamedBean has cognitive complexity 45 (threshold 15). Drivers by points: if/else 33, loops 5, ternaries 5, boolean chains 2 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1569}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aca1de36e69c5c3812522fd360d06307f3caf45c9676697a2a400abe97a33e8"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericCallMetaDataProvider.processProcedureColumns (cognitive 45): GenericCallMetaDataProvider.processProcedureColumns has cognitive complexity 45 (threshold 15). Drivers by points: if/else 33, ternaries 8, boolean chains 2, error handling 1, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"508d5dac6b71ee23025303876b5f55d8627720b0e8dd3bdbc37a83617252f98f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractTemplateView.renderMergedOutputModel (cognitive 45): AbstractTemplateView.renderMergedOutputModel has cognitive complexity 45 (threshold 15). Drivers by points: if/else 27, ternaries 9, loops 5, boolean chains 4 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractTemplateView.java"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d196d4fac958f7d47c1ff478395ac8d26370699f05662b2cfab7f9ef596fe33"}},{"ruleId":"D2","level":"warning","message":{"text":"ScheduledAnnotationBeanPostProcessor.processScheduledTask (cognitive 44): ScheduledAnnotationBeanPostProcessor.processScheduledTask has cognitive complexity 44 (threshold 15). Drivers by points: if/else 33, error handling 10, 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":"spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"f01bbdfaf65e738429846fb15f41f20ad8d597556d494d44268c266067d8366b"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeUtils.isAssignable (cognitive 44): TypeUtils.isAssignable has cognitive complexity 44 (threshold 15). Drivers by points: if/else 24, loops 20 (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":"spring-core/src/main/java/org/springframework/util/TypeUtils.java"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"311ca0f0ff4d0070f83ccb8683b72cafe179471816cee01335db7cd65573e56a"}},{"ruleId":"D2","level":"warning","message":{"text":"RequestParamMapMethodArgumentResolver.resolveArgument (cognitive 44): RequestParamMapMethodArgumentResolver.resolveArgument has cognitive complexity 44 (threshold 15). Drivers by points: if/else 25, loops 11, ternaries 6, 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":"spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMapMethodArgumentResolver.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"f09e9504143562ccc0e83fda35e23dbbf5bc40306eb57523d9df57ed7546b913"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.getTypeForFactoryBean (cognitive 43): AbstractAutowireCapableBeanFactory.getTypeForFactoryBean has cognitive complexity 43 (threshold 15). Drivers by points: if/else 34, ternaries 6, boolean chains 2, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"241a2649bcee70b09b141d41df4f3a94670a90b95dc6602e772bd88c48aa64d3"}},{"ruleId":"D2","level":"warning","message":{"text":"DisposableBeanAdapter.destroy (cognitive 43): DisposableBeanAdapter.destroy has cognitive complexity 43 (threshold 15). Drivers by points: if/else 30, loops 9, error handling 4 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"95ca37a4b423d2e5c9deefd0fdb733d3e50d3fe2915506b4e18a784cec5b2efb"}},{"ruleId":"D2","level":"warning","message":{"text":"DisposableBeanAdapter.inferDestroyMethodsIfNecessary (cognitive 43): DisposableBeanAdapter.inferDestroyMethodsIfNecessary has cognitive complexity 43 (threshold 15). Drivers by points: error handling 18, if/else 18, boolean chains 4, ternaries 3 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java"},"region":{"startLine":407}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0ff5de4fbffe0fd71a2ec06fc6ee8280b34ecf718df98db1137d49178d7846b"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericTypeAwareAutowireCandidateResolver.checkGenericTypeMatch (cognitive 43): GenericTypeAwareAutowireCandidateResolver.checkGenericTypeMatch has cognitive complexity 43 (threshold 15). Drivers by points: if/else 40, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/GenericTypeAwareAutowireCandidateResolver.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"359dae5c11494e0e2b3edb406dc4be562d79aaaf9215006e7a65ae1d2d0c18c0"}},{"ruleId":"D2","level":"warning","message":{"text":"CommonAnnotationBeanPostProcessor.buildResourceMetadata (cognitive 43): CommonAnnotationBeanPostProcessor.buildResourceMetadata has cognitive complexity 43 (threshold 15). Drivers by points: if/else 37, boolean chains 5, loops 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":"spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"d34f392647ce2d666bfe0f5d481b16617c2a1ac63353b039f6e2b2e5472c8f30"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultLifecycleProcessor.doStop (cognitive 43): DefaultLifecycleProcessor.doStop has cognitive complexity 43 (threshold 15). Drivers by points: if/else 38, error handling 2, loops 2, 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":"spring-context/src/main/java/org/springframework/context/support/DefaultLifecycleProcessor.java"},"region":{"startLine":458}}}],"partialFingerprints":{"codehealthFindingId/v1":"15a3ccaf4f4436351d9a16a151fdca81721bfc9fd8b36cf9221bc58e08313eb0"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotatedMethodParameter.getParameterAnnotations (cognitive 43): AnnotatedMethodParameter.getParameterAnnotations has cognitive complexity 43 (threshold 15). Drivers by points: if/else 27, loops 16 (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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotatedMethod.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f49455736df70032e77dba48ef72368db0bb167becf9d532ff6f1eabba4cb1"}},{"ruleId":"D2","level":"warning","message":{"text":"JavaMailSenderImpl.doSend (cognitive 43): JavaMailSenderImpl.doSend has cognitive complexity 43 (threshold 15). Drivers by points: if/else 14, error handling 13, ternaries 10, loops 5, 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":"spring-context-support/src/main/java/org/springframework/mail/javamail/JavaMailSenderImpl.java"},"region":{"startLine":367}}}],"partialFingerprints":{"codehealthFindingId/v1":"263676c7c700f97211af99ea46b5e1b1988e7fe8b54dd3034cbe665ef750b1cd"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpEntityRequestCallback.doWithRequest (cognitive 43): HttpEntityRequestCallback.doWithRequest has cognitive complexity 43 (threshold 15). Drivers by points: if/else 39, loops 2, ternaries 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":"spring-web/src/main/java/org/springframework/web/client/RestTemplate.java"},"region":{"startLine":944}}}],"partialFingerprints":{"codehealthFindingId/v1":"a46a34dd89c5762bfedfbafbe9dc4e3bc33223cfc67f3084b2c166526733bd6b"}},{"ruleId":"D2","level":"warning","message":{"text":"ProxyCallbackFilter.accept (cognitive 42): ProxyCallbackFilter.accept has cognitive complexity 42 (threshold 15). Drivers by points: if/else 37, boolean chains 5 (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":"spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cebee6442abf6d2bea9988422f3db37c830f7345a4f0595422aad20416d5896"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.processLocalProperty (cognitive 42): AbstractNestablePropertyAccessor.processLocalProperty has cognitive complexity 42 (threshold 15). Drivers by points: if/else 33, error handling 7, 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ab58ccfdfaedaa6ba07408a2c4576ab17008e975c1c1d338460bafab5f3a79"}},{"ruleId":"D2","level":"warning","message":{"text":"MBeanExporter.autodetect (cognitive 42): MBeanExporter.autodetect has cognitive complexity 42 (threshold 15). Drivers by points: if/else 29, ternaries 5, boolean chains 4, error handling 3, loops 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":"spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java"},"region":{"startLine":895}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2b95784e6da6effaa287655105556cb711c8f228642ce3cef163a3105ec678e"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.computeMaxStackAndLocal (cognitive 42): MethodWriter.computeMaxStackAndLocal has cognitive complexity 42 (threshold 15). Drivers by points: if/else 24, loops 13, ternaries 4, 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1662}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bf48d4ab5a7b638cb7d2e94833678d0af0f11faaa7fca05a67bf7a076dfc250"}},{"ruleId":"D2","level":"warning","message":{"text":"StatementCreatorUtils.setNull (cognitive 42): StatementCreatorUtils.setNull has cognitive complexity 42 (threshold 15). Drivers by points: if/else 30, boolean chains 6, error handling 6 (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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"965eb95deed52867216584fe1ecead90fc3cc188e959a70b39369dd3e06fb393"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters (cognitive 42): AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters has cognitive complexity 42 (threshold 15). Drivers by points: if/else 28, ternaries 6, boolean chains 5, error handling 2, loops 1 (nesting depth added 15). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodArgumentResolver.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d2b4335a655eba914c8b00b96d3425e5045a04271c3815b772fc5e80b515262"}},{"ruleId":"D2","level":"warning","message":{"text":"ServerSentEventHttpMessageReader.buildEvent (cognitive 41): ServerSentEventHttpMessageReader.buildEvent has cognitive complexity 41 (threshold 15). Drivers by points: if/else 23, ternaries 17, 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":"spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageReader.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"15ba2fd653798d3b518b5ffa6a69b66a3a68ac803e8054ecc3b7e3a8a7b50448"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultAdvisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice (cognitive 41): DefaultAdvisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice has cognitive complexity 41 (threshold 15). Drivers by points: if/else 31, loops 7, boolean chains 2, ternaries 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":"spring-aop/src/main/java/org/springframework/aop/framework/DefaultAdvisorChainFactory.java"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b970ac5dd92e18b3feb52ff1c877b2e05cfe7a83e64a5a67b58ec3ef2f974eb"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanFactoryAnnotationUtils.isQualifierMatch (cognitive 41): BeanFactoryAnnotationUtils.isQualifierMatch has cognitive complexity 41 (threshold 15). Drivers by points: if/else 36, error handling 2, loops 2, 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/BeanFactoryAnnotationUtils.java"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c0d5b1eb2fae929c117a1dfc11cfa083b4efa686d58f5c413f497a3f50a037"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedParameterUtils.substituteNamedParameters (cognitive 41): NamedParameterUtils.substituteNamedParameters has cognitive complexity 41 (threshold 15). Drivers by points: if/else 29, loops 11, boolean chains 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"c707ca0389b065044c118945bfeac8603dab969dfe54944300f6c97c805ce95b"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptUtils.executeSqlScript (cognitive 41): ScriptUtils.executeSqlScript has cognitive complexity 41 (threshold 15). Drivers by points: if/else 28, boolean chains 5, error handling 5, loops 3 (nesting depth added 17). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd909c028f7204f30bb56a0a79594d2be5a2e287df38549191cdd466f5e5bf0b"}},{"ruleId":"D2","level":"warning","message":{"text":"SQLExceptionSubclassTranslator.doTranslate (cognitive 40): SQLExceptionSubclassTranslator.doTranslate has cognitive complexity 40 (threshold 15). Drivers by points: if/else 35, ternaries 4, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLExceptionSubclassTranslator.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec1eed6a9ae9d388e1ea87ebe6f691aed81da070d4d5ba6073f370831f4335a"}},{"ruleId":"D2","level":"warning","message":{"text":"JmsListenerContainerParser.parseSpecificContainerProperties (cognitive 40): JmsListenerContainerParser.parseSpecificContainerProperties has cognitive complexity 40 (threshold 15). Drivers by points: if/else 39, 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":"spring-jms/src/main/java/org/springframework/jms/config/JmsListenerContainerParser.java"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"51ba94f4f0c2ffae35db2ef23af79b1dd5d283308c5a5ea60374cbee99103aa0"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractPollingMessageListenerContainer.doReceiveAndExecute (cognitive 40): AbstractPollingMessageListenerContainer.doReceiveAndExecute has cognitive complexity 40 (threshold 15). Drivers by points: if/else 28, ternaries 6, error handling 5, 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":"spring-jms/src/main/java/org/springframework/jms/listener/AbstractPollingMessageListenerContainer.java"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"5482b8973fd77ba5172b120dd431fe016f185eb93ca81778765e53441899d2ce"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMockHttpServletRequestBuilder.buildRequest (cognitive 40): AbstractMockHttpServletRequestBuilder.buildRequest has cognitive complexity 40 (threshold 15). Drivers by points: if/else 27, ternaries 6, boolean chains 3, error handling 3, loops 1 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java"},"region":{"startLine":826}}}],"partialFingerprints":{"codehealthFindingId/v1":"3adf35774307f9463c8371545eff4900508a46ad3ff91b06ef50a10cb836c175"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMockHttpServletRequestBuilder.merge (cognitive 40): AbstractMockHttpServletRequestBuilder.merge has cognitive complexity 40 (threshold 15). Drivers by points: if/else 32, loops 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":"spring-test/src/main/java/org/springframework/test/web/servlet/request/AbstractMockHttpServletRequestBuilder.java"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"60ae87d42114939f46a17d6449e9a0693cf91fcf1948d779110ed0d97932d8bb"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMessageWriterResultHandler.writeBody (cognitive 40): AbstractMessageWriterResultHandler.writeBody has cognitive complexity 40 (threshold 15). Drivers by points: if/else 20, ternaries 9, boolean chains 8, loops 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractMessageWriterResultHandler.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"182cb9f1b7be8387f9db6d553b6aa7105dc3f99b438865603991d5c971cce4c7"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.doCreateBean (cognitive 39): AbstractAutowireCapableBeanFactory.doCreateBean has cognitive complexity 39 (threshold 15). Drivers by points: if/else 27, loops 5, error handling 4, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":556}}}],"partialFingerprints":{"codehealthFindingId/v1":"fbb90b60063fcdc7b6f89e12085375ce98626ce8b6bd3640cc5b2e84b3d0ff48"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertiesBeanDefinitionReader.registerBeanDefinition (cognitive 39): PropertiesBeanDefinitionReader.registerBeanDefinition has cognitive complexity 39 (threshold 15). Drivers by points: if/else 26, ternaries 8, boolean chains 2, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/PropertiesBeanDefinitionReader.java"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"eecf5ca8ed5fb52140571ed5f06bdcbec6e6ac03dc660399dcb5d5444e3747c1"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.processKeyedProperty (cognitive 39): AbstractNestablePropertyAccessor.processKeyedProperty has cognitive complexity 39 (threshold 15). Drivers by points: if/else 20, error handling 11, boolean chains 4, loops 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a4e62f45dd0158addbc0e5ab567d327182f3084488ecca10cd934e320c811c6"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeMappedAnnotation.adapt (cognitive 39): TypeMappedAnnotation.adapt has cognitive complexity 39 (threshold 15). Drivers by points: loops 16, error handling 9, if/else 8, 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":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotation.java"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"511dcca15b45d444c5df9dc18e8a71c7250c31d692cd40b45973ad1ceaacf1d0"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractEmitterSubscriber.run (cognitive 39): AbstractEmitterSubscriber.run has cognitive complexity 39 (threshold 15). Drivers by points: if/else 28, error handling 11 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ReactiveTypeHandler.java"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f4e1afdaf35756136f78953fb5a9378b7110fc990707a0fc76547ff81c55f0"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultSimpUserRegistry.onApplicationEvent (cognitive 39): DefaultSimpUserRegistry.onApplicationEvent has cognitive complexity 39 (threshold 15). Drivers by points: if/else 38, 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":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/DefaultSimpUserRegistry.java"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"d896e7d6d654a7bd4275c6b0d1170abb2514691b384049fdb75d09a49b1c6739"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionVisitor.resolveValue (cognitive 38): BeanDefinitionVisitor.resolveValue has cognitive complexity 38 (threshold 15). Drivers by points: if/else 38 (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":"spring-beans/src/main/java/org/springframework/beans/factory/config/BeanDefinitionVisitor.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"56640f79a224eee0ac502bdc52b7a01487d4a154e9be341d16de4c6cad4fed9a"}},{"ruleId":"D2","level":"warning","message":{"text":"FactoryBeanRegistrySupport.getObjectFromFactoryBean (cognitive 38): FactoryBeanRegistrySupport.getObjectFromFactoryBean has cognitive complexity 38 (threshold 15). Drivers by points: if/else 33, error handling 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/FactoryBeanRegistrySupport.java"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf5315b9d1e288c068c0a2127b0fd36056955708c3dd5f97464865b204bafe1"}},{"ruleId":"D2","level":"warning","message":{"text":"EntityManagerFactoryUtils.doGetTransactionalEntityManager (cognitive 38): EntityManagerFactoryUtils.doGetTransactionalEntityManager has cognitive complexity 38 (threshold 15). Drivers by points: if/else 28, error handling 8, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/EntityManagerFactoryUtils.java"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"894c780c67664a355b714ec725e1aa78dcba3a0659b5994ce8ecedf01901d871"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.applyPropertyValues (cognitive 37): AbstractAutowireCapableBeanFactory.applyPropertyValues has cognitive complexity 37 (threshold 15). Drivers by points: if/else 29, error handling 4, boolean chains 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1660}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d1bc27dc8e12e0ccd6a5bb5f908c71c6ce725bf444ab9e3dddd03816ae9738e"}},{"ruleId":"D2","level":"warning","message":{"text":"EventListenerMethodProcessor.afterSingletonsInstantiated (cognitive 37): EventListenerMethodProcessor.afterSingletonsInstantiated has cognitive complexity 37 (threshold 15). Drivers by points: if/else 24, error handling 12, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/event/EventListenerMethodProcessor.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"792aa62785b25430e5dccf185599fac968f3997e3f006f4f6bc755c5d172b93b"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationsScanner.processClassInheritedAnnotations (cognitive 37): AnnotationsScanner.processClassInheritedAnnotations has cognitive complexity 37 (threshold 15). Drivers by points: if/else 25, loops 9, boolean chains 2, 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationsScanner.java"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bf81457fd725b3979389aa3945c28405a7204ff74657186acadcbb739d17017"}},{"ruleId":"D2","level":"warning","message":{"text":"Indexer.getValueRef (cognitive 37): Indexer.getValueRef has cognitive complexity 37 (threshold 15). Drivers by points: if/else 27, error handling 4, loops 4, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf16a5320e3a7af799608c63199d286dc000fb1f367b1cf130553b12b11fc9a"}},{"ruleId":"D2","level":"warning","message":{"text":"Tokenizer.lexNumericLiteral (cognitive 37): Tokenizer.lexNumericLiteral has cognitive complexity 37 (threshold 15). Drivers by points: if/else 27, loops 8, 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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java"},"region":{"startLine":341}}}],"partialFingerprints":{"codehealthFindingId/v1":"db6306676544c3a5af9bf6194e8ee4ce12b55f3bfbd3edfe06cec393eb1ca63b"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractPlatformTransactionManager.handleExistingTransaction (cognitive 37): AbstractPlatformTransactionManager.handleExistingTransaction has cognitive complexity 37 (threshold 15). Drivers by points: if/else 27, error handling 5, ternaries 4, 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":"spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"4715e264e1972438b47aa410fca3e9727c72441526b273b02e762e18270b2850"}},{"ruleId":"D2","level":"warning","message":{"text":"Frame.merge (cognitive 37): Frame.merge has cognitive complexity 37 (threshold 15). Drivers by points: if/else 29, boolean chains 5, ternaries 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":1275}}}],"partialFingerprints":{"codehealthFindingId/v1":"17c858b094e72bc2cba4585a559221dc0278af9e2ded956d9924270ac9883212"}},{"ruleId":"D2","level":"warning","message":{"text":"CallMetaDataContext.matchInParameterValuesWithCallParameters (cognitive 37): CallMetaDataContext.matchInParameterValuesWithCallParameters has cognitive complexity 37 (threshold 15). Drivers by points: if/else 36, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java"},"region":{"startLine":469}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8bdab9e1d439147d13a2aa9eef70353d1af8b448a786aaae098840e20db0e7a"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleJmsHeaderMapper.fromHeaders (cognitive 37): SimpleJmsHeaderMapper.fromHeaders has cognitive complexity 37 (threshold 15). Drivers by points: if/else 23, error handling 11, 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":"spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"acae3ffa46dca03621afb55a95b6852c7d2a14fea514646ada4a73024721c63b"}},{"ruleId":"D2","level":"warning","message":{"text":"NamedParameterUtils.substituteNamedParameters (cognitive 37): NamedParameterUtils.substituteNamedParameters has cognitive complexity 37 (threshold 15). Drivers by points: if/else 26, loops 11 (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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"934be898ca2d8e28c920299888bc4ff325071d163f728423bea6a36434dfe94c"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans (cognitive 36): BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans has cognitive complexity 36 (threshold 15). Drivers by points: if/else 30, error handling 4, boolean chains 1, 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":"spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/BeanFactoryAdvisorRetrievalHelper.java"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"84a6bec911a5fb2b01602123667944a28a7e4d73b093d8ea63eed1dc50b08f02"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassParser.doProcessConfigurationClass (cognitive 36): ConfigurationClassParser.doProcessConfigurationClass has cognitive complexity 36 (threshold 15). Drivers by points: if/else 25, loops 9, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":305}}}],"partialFingerprints":{"codehealthFindingId/v1":"9be99e718313ec481e524424ea588303983d684bfcf8abdf129c6f6ad1b6fe85"}},{"ruleId":"D2","level":"warning","message":{"text":"PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors (cognitive 36): PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors has cognitive complexity 36 (threshold 15). Drivers by points: if/else 21, loops 14, 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":"spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"f02a987b79786bed62177edff54ca60ebde8c076cc59f747d1095b6b635407fb"}},{"ruleId":"D2","level":"warning","message":{"text":"IsPresent.doWithAnnotations (cognitive 36): IsPresent.doWithAnnotations has cognitive complexity 36 (threshold 15). Drivers by points: if/else 28, loops 6, 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":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"db1c70dde5fec340d567ecb4d867c8aa42a0f2b86960b5b782c66e4645ac005f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractFileResolvingResource.exists (cognitive 36): AbstractFileResolvingResource.exists has cognitive complexity 36 (threshold 15). Drivers by points: if/else 32, ternaries 2, boolean chains 1, error handling 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":"spring-core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"d68b6681573a8fc0f630d43670c2e03b15bd658f2271f8845740db1f4be05380"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.visitJumpInsn (cognitive 36): MethodWriter.visitJumpInsn has cognitive complexity 36 (threshold 15). Drivers by points: if/else 30, ternaries 5, 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1095}}}],"partialFingerprints":{"codehealthFindingId/v1":"6034a168b42a893e314ac603dc158134df6287be37017f7812dc8ac1ea10ddf3"}},{"ruleId":"D2","level":"warning","message":{"text":"Segment.restructure (cognitive 36): Segment.restructure has cognitive complexity 36 (threshold 15). Drivers by points: if/else 22, loops 12, 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":"spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java"},"region":{"startLine":731}}}],"partialFingerprints":{"codehealthFindingId/v1":"b34f1396195fa9a67fba5bddbbaa1d96946a5e493821122f53b5d484ea13c597"}},{"ruleId":"D2","level":"warning","message":{"text":"SQLStateSQLExceptionTranslator.doTranslate (cognitive 36): SQLStateSQLExceptionTranslator.doTranslate has cognitive complexity 36 (threshold 15). Drivers by points: if/else 32, ternaries 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLStateSQLExceptionTranslator.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"394ee5a0eb8d3e2fb46cb44b4349adb98f6c83819393dbfeab8d81748828d97d"}},{"ruleId":"D2","level":"warning","message":{"text":"StompDecoder.readHeaders (cognitive 36): StompDecoder.readHeaders has cognitive complexity 36 (threshold 15). Drivers by points: if/else 19, ternaries 8, error handling 4, loops 3, 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java"},"region":{"startLine":216}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f90967eb8bcdc04cbfee21ac1b0ea00ea7bd5d1cff61c4e69828dcc5a7837c1"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalSessionFactoryBean.afterPropertiesSet (cognitive 36): LocalSessionFactoryBean.afterPropertiesSet has cognitive complexity 36 (threshold 15). Drivers by points: if/else 23, loops 12, boolean chains 1 (nesting depth added 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBean.java"},"region":{"startLine":464}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d2801ce427755da3493ab77ced77000547ebf836fa96e420f52bcdd683d496"}},{"ruleId":"D2","level":"warning","message":{"text":"13.handle (cognitive 36): 13.handle has cognitive complexity 36 (threshold 15). Drivers by points: if/else 29, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1127}}}],"partialFingerprints":{"codehealthFindingId/v1":"e41d63a9f0636a7d492703824d28587ec04c265b1c7af60195b2aabe47e246b9"}},{"ruleId":"D2","level":"warning","message":{"text":"ETag.parse (cognitive 35): ETag.parse has cognitive complexity 35 (threshold 15). Drivers by points: if/else 31, boolean chains 3, 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":"spring-web/src/main/java/org/springframework/http/ETag.java"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"c12f6fb86286f05dc5e886a759e9c7c4c6956f1c6734ae38342a3089167745a6"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorResolver.createArgumentArray (cognitive 35): ConstructorResolver.createArgumentArray has cognitive complexity 35 (threshold 15). Drivers by points: if/else 22, error handling 7, ternaries 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":720}}}],"partialFingerprints":{"codehealthFindingId/v1":"4797d5f96926d22c180a11fda5525c2fa70944ae744e2bbb6f7e38bc36a3e173"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentConvertingMethodInvoker.doFindMatchingMethod (cognitive 35): ArgumentConvertingMethodInvoker.doFindMatchingMethod has cognitive complexity 35 (threshold 15). Drivers by points: if/else 21, loops 7, error handling 6, 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":"spring-beans/src/main/java/org/springframework/beans/support/ArgumentConvertingMethodInvoker.java"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"baa5766aa130662d9badcaf7f647c5392e4e0e47deacc89fba25971cb8a09ac6"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassPathScanningCandidateComponentProvider.scanCandidateComponents (cognitive 35): ClassPathScanningCandidateComponentProvider.scanCandidateComponents has cognitive complexity 35 (threshold 15). Drivers by points: if/else 26, error handling 7, boolean chains 1, 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":"spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"e5726819d0de0123b485ae2a5540b10c06a8c7844534541efbb7fd8aefc3266b"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodValidationAdapter.adaptViolations (cognitive 35): MethodValidationAdapter.adaptViolations has cognitive complexity 35 (threshold 15). Drivers by points: if/else 21, ternaries 7, 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/MethodValidationAdapter.java"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"172b20786955ec78280ba8330053f70891caf049bab956697f7023af0c5b776e"}},{"ruleId":"D2","level":"warning","message":{"text":"Frame.execute (cognitive 35): Frame.execute has cognitive complexity 35 (threshold 15). Drivers by points: if/else 23, boolean chains 5, match/switch 5, ternaries 2 (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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":691}}}],"partialFingerprints":{"codehealthFindingId/v1":"205ec1b7a65a5d14a5a191f45f7a2917f4d7278f76464f0d155371334ac01b51"}},{"ruleId":"D2","level":"warning","message":{"text":"SpringSessionContext.currentSession (cognitive 35): SpringSessionContext.currentSession has cognitive complexity 35 (threshold 15). Drivers by points: if/else 30, boolean chains 3, error handling 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/SpringSessionContext.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"704eecdd2a5c7c1d43c0aff614df7f4ebc450d165256fea5e067c2be6f8c22a3"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractRequestLoggingFilter.createMessage (cognitive 35): AbstractRequestLoggingFilter.createMessage has cognitive complexity 35 (threshold 15). Drivers by points: if/else 28, loops 7 (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":"spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java"},"region":{"startLine":348}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ee9a45504ace89e1c401f5b9ef5c726f749a1bb0ae850c55cc2feaed1e124d"}},{"ruleId":"D2","level":"warning","message":{"text":"ForwardedHeaderUtils.parseFirstElement (cognitive 35): ForwardedHeaderUtils.parseFirstElement has cognitive complexity 35 (threshold 15). Drivers by points: if/else 22, loops 7, boolean chains 6 (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":"spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad06ffa6fa1bbded95a5d2c3fc87f6a4b1da86fc1b73f4826731ba2e5187681d"}},{"ruleId":"D2","level":"warning","message":{"text":"CookieLocaleResolver.parseLocaleCookieIfNecessary (cognitive 35): CookieLocaleResolver.parseLocaleCookieIfNecessary has cognitive complexity 35 (threshold 15). Drivers by points: if/else 20, ternaries 11, error handling 3, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/CookieLocaleResolver.java"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"61be9190059aa668bd3c2852a9bdf88094308e25c34c1ca93d0e244222ed84fb"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJExpressionPointcut.getShadowMatch (cognitive 34): AspectJExpressionPointcut.getShadowMatch has cognitive complexity 34 (threshold 15). Drivers by points: if/else 15, error handling 14, boolean chains 5 (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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java"},"region":{"startLine":465}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5db8d73e24df1264e4478d5861d502954c3496b97d944468a3c8a050b052a3"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassPostProcessor.enhanceConfigurationClasses (cognitive 34): ConfigurationClassPostProcessor.enhanceConfigurationClasses has cognitive complexity 34 (threshold 15). Drivers by points: if/else 25, error handling 4, boolean chains 3, loops 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"f008bd9ff9e88affb2b514a703a1465655b0684b07e3138f2766d2108737c10b"}},{"ruleId":"D2","level":"warning","message":{"text":"EventListenerMethodProcessor.processBean (cognitive 34): EventListenerMethodProcessor.processBean has cognitive complexity 34 (threshold 15). Drivers by points: if/else 24, loops 7, error handling 2, boolean chains 1 (nesting depth added 22). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/event/EventListenerMethodProcessor.java"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"2381434bc822483e6c01afc74edb1e5b22798fb4425e1b14da40dc5c921456b6"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectiveMethodResolver.getMethods (cognitive 34): ReflectiveMethodResolver.getMethods has cognitive complexity 34 (threshold 15). Drivers by points: if/else 19, loops 15 (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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java"},"region":{"startLine":227}}}],"partialFingerprints":{"codehealthFindingId/v1":"842872a1fe79f66261a87162f138e14f434827538d062248bae77065c31726f7"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readElementValue (cognitive 34): ClassReader.readElementValue has cognitive complexity 34 (threshold 15). Drivers by points: loops 24, match/switch 5, if/else 3, ternaries 2 (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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":3042}}}],"partialFingerprints":{"codehealthFindingId/v1":"925258803e5b03db270063f1d43ee4904291fe86c4282feca3d8458f488a5d5e"}},{"ruleId":"D2","level":"warning","message":{"text":"CallableStatementCreatorImpl.createCallableStatement (cognitive 34): CallableStatementCreatorImpl.createCallableStatement has cognitive complexity 34 (threshold 15). Drivers by points: if/else 30, ternaries 2, boolean chains 1, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/CallableStatementCreatorFactory.java"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"b965e47ed5632448a718f95ee31b318719d86d59901d7b1888f92ce49f5ad6aa"}},{"ruleId":"D2","level":"warning","message":{"text":"HibernateExceptionTranslator.convertHibernateAccessException (cognitive 34): HibernateExceptionTranslator.convertHibernateAccessException has cognitive complexity 34 (threshold 15). Drivers by points: if/else 32, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateExceptionTranslator.java"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"26fea73db62ccc8935e67fa64cbe67747357db65332b0e70cc73b6746c78d366"}},{"ruleId":"D2","level":"warning","message":{"text":"14.handle (cognitive 34): 14.handle has cognitive complexity 34 (threshold 15). Drivers by points: if/else 26, error handling 5, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1203}}}],"partialFingerprints":{"codehealthFindingId/v1":"f49db39dc155cbcf592559ec83089266bb122a30a4c12df5b7439e3ab0911b1e"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpEntityMethodProcessor.handleReturnValue (cognitive 34): HttpEntityMethodProcessor.handleReturnValue has cognitive complexity 34 (threshold 15). Drivers by points: if/else 28, boolean chains 4, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"5157845e3aaa35823f37cda07f834c96260a107100eacc7c9017bbbfc2e21ae2"}},{"ruleId":"D2","level":"warning","message":{"text":"DisposableBeanAdapter.\u003Cinit\u003E (cognitive 33): DisposableBeanAdapter.\u003Cinit\u003E has cognitive complexity 33 (threshold 15). Drivers by points: if/else 25, boolean chains 5, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"f52ccf38e7bd98ae374923cfcf07e3e92416465cbe5ab63ddc787bc37882bfb6"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectivePropertyAccessor.read (cognitive 33): ReflectivePropertyAccessor.read has cognitive complexity 33 (threshold 15). Drivers by points: if/else 19, error handling 6, ternaries 5, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":174}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4961f5787bb42f307ef7994b5abd7b7ededbccb0b701c00f7d8ee95b6e4ee67"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorReference.createArray (cognitive 33): ConstructorReference.createArray has cognitive complexity 33 (threshold 15). Drivers by points: if/else 23, loops 7, ternaries 2, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java"},"region":{"startLine":269}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f3bcffe69e4d513981f8818765b7da27810ee267d6776eca92084f786619ab5"}},{"ruleId":"D2","level":"warning","message":{"text":"OpPlus.getValueInternal (cognitive 33): OpPlus.getValueInternal has cognitive complexity 33 (threshold 15). Drivers by points: if/else 21, boolean chains 8, ternaries 4 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"62be6589eb9fdc71907da7068438d1a77181af623e02c46736340e0a507980ef"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyOrFieldReference.readProperty (cognitive 33): PropertyOrFieldReference.readProperty has cognitive complexity 33 (threshold 15). Drivers by points: if/else 27, error handling 4, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/PropertyOrFieldReference.java"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"fefdb47f5e373581fee5fde6a593c0487c2ab132a8c78325833fe562c3a9a314"}},{"ruleId":"D2","level":"warning","message":{"text":"ControllerMethodInvocationInterceptor.initProxy (cognitive 33): ControllerMethodInvocationInterceptor.initProxy has cognitive complexity 33 (threshold 15). Drivers by points: if/else 19, error handling 8, loops 5, ternaries 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.java"},"region":{"startLine":759}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a1bd22ae9296e1eb2ac041f37d4f822ac095f95a94306a9549eb58a567743f9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.populateBean (cognitive 32): AbstractAutowireCapableBeanFactory.populateBean has cognitive complexity 32 (threshold 15). Drivers by points: if/else 25, loops 4, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1390}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f58e64a27b4129110c6068a84bed5f3f9a2f317dc222e5654b0f113eba28441"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.doResolveBeanClass (cognitive 32): AbstractBeanFactory.doResolveBeanClass has cognitive complexity 32 (threshold 15). Drivers by points: if/else 24, error handling 4, loops 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":1595}}}],"partialFingerprints":{"codehealthFindingId/v1":"76eb43619aa3e1f745312fd7d167618ba7e86ddfe1792cc0b678b0f22bf38e7a"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.resolveMultipleBeans (cognitive 32): DefaultListableBeanFactory.resolveMultipleBeans has cognitive complexity 32 (threshold 15). Drivers by points: if/else 27, ternaries 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1793}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f9fdd935136f980d0ea07a2fe98da261210038b447aae51da5a3e2f66b58c98"}},{"ruleId":"D2","level":"warning","message":{"text":"LazyDependencyTargetSource.getTarget (cognitive 32): LazyDependencyTargetSource.getTarget has cognitive complexity 32 (threshold 15). Drivers by points: if/else 25, boolean chains 5, 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":"spring-context/src/main/java/org/springframework/context/annotation/ContextAnnotationAutowireCandidateResolver.java"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"451ec9f81975511848f56e5237201251f420da98ff4d48cb797d97a8086e7fa8"}},{"ruleId":"D2","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.doFindPathMatchingFileResources (cognitive 32): PathMatchingResourcePatternResolver.doFindPathMatchingFileResources has cognitive complexity 32 (threshold 15). Drivers by points: if/else 20, error handling 10, 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":1012}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bcd642be9504bbc09e618a8e61666ae760d807975cca70b4ee44e55ed07f3e8"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectionHelper.convertAllMethodHandleArguments (cognitive 32): ReflectionHelper.convertAllMethodHandleArguments has cognitive complexity 32 (threshold 15). Drivers by points: if/else 16, loops 7, ternaries 5, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":364}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a787519476294bae488e940087aef61fb6f53424b67aeda142e72fc83228158"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectionHelper.convertArguments (cognitive 32): ReflectionHelper.convertArguments has cognitive complexity 32 (threshold 15). Drivers by points: if/else 16, loops 7, ternaries 5, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"eba39469bc8c60d36f40d7ade18247a17b8bf8409e4d776f9385b9dd694021bb"}},{"ruleId":"D2","level":"warning","message":{"text":"Indexer.generateCode (cognitive 32): Indexer.generateCode has cognitive complexity 32 (threshold 15). Drivers by points: if/else 31, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"55cc4f94245367a78bb0fc7c44f301f7d77d7167b88a4f6f447f80b7fe1c7de1"}},{"ruleId":"D2","level":"warning","message":{"text":"OpMinus.getValueInternal (cognitive 32): OpMinus.getValueInternal has cognitive complexity 32 (threshold 15). Drivers by points: if/else 24, boolean chains 8 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"46f5750167b4f8e07f39729143491d85775ea443169b1e7eeb78acfa906dac8a"}},{"ruleId":"D2","level":"warning","message":{"text":"ConcurrencyLimitInterceptor.invoke (cognitive 32): ConcurrencyLimitInterceptor.invoke has cognitive complexity 32 (threshold 15). Drivers by points: if/else 23, ternaries 9 (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":"spring-context/src/main/java/org/springframework/resilience/annotation/ConcurrencyLimitBeanPostProcessor.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c7fb290adf63172ec234f0d0c0f21500218fd46f792394d0e88df1af5fc09720"}},{"ruleId":"D2","level":"warning","message":{"text":"SymbolTable.addConstant (cognitive 32): SymbolTable.addConstant has cognitive complexity 32 (threshold 15). Drivers by points: if/else 26, ternaries 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":"spring-core/src/main/java/org/springframework/asm/SymbolTable.java"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"771270a347df562d41696eb778434bbf0607629734fc2a0c2efa171bc79ec2d4"}},{"ruleId":"D2","level":"warning","message":{"text":"NumberUtils.convertNumberToTargetClass (cognitive 32): NumberUtils.convertNumberToTargetClass has cognitive complexity 32 (threshold 15). Drivers by points: if/else 29, 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":"spring-core/src/main/java/org/springframework/util/NumberUtils.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e739e35f52a869963aaa0f28941dc41befaf4a1ed6ffb88eed4643710bfdbf6a"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanPropertyRowMapper.mapRow (cognitive 32): BeanPropertyRowMapper.mapRow has cognitive complexity 32 (threshold 15). Drivers by points: if/else 19, error handling 6, boolean chains 3, ternaries 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/BeanPropertyRowMapper.java"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e16a118497e81d26ad498a4e7a59e6b4b992618ec632d24bbcbbfa6d17788c3"}},{"ruleId":"D2","level":"warning","message":{"text":"LazyConnectionInvocationHandler.invoke (cognitive 32): LazyConnectionInvocationHandler.invoke has cognitive complexity 32 (threshold 15). Drivers by points: if/else 25, boolean chains 3, match/switch 3, error handling 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"6694f2c03217ec012a29fc56b8944599f667a50d51670f8364e88589484f25b0"}},{"ruleId":"D2","level":"warning","message":{"text":"PayloadMethodArgumentResolver.decodeContent (cognitive 32): PayloadMethodArgumentResolver.decodeContent has cognitive complexity 32 (threshold 15). Drivers by points: if/else 22, ternaries 6, boolean chains 3, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/PayloadMethodArgumentResolver.java"},"region":{"startLine":214}}}],"partialFingerprints":{"codehealthFindingId/v1":"006a180d2c616d84bb784b1a4a544dceb9a183e20187d698dd4ae90629ae96ff"}},{"ruleId":"D2","level":"warning","message":{"text":"KotlinDelegate.invokeFunction (cognitive 32): KotlinDelegate.invokeFunction has cognitive complexity 32 (threshold 15). Drivers by points: if/else 17, ternaries 6, boolean chains 4, match/switch 3, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"8826c8a5e1a883c1f0cf1428cd277396a215de76eb65d22afc5e162466e4a4bd"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptTemplateView.initApplicationContext (cognitive 32): ScriptTemplateView.initApplicationContext has cognitive complexity 32 (threshold 15). Drivers by points: if/else 18, boolean chains 8, ternaries 6 (nesting depth added 3). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/script/ScriptTemplateView.java"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"2508ba8389b29005228f3ad85107476659d295167b9c64402cc1c64fffabb0bc"}},{"ruleId":"D2","level":"warning","message":{"text":"CglibAopProxy.doValidateClass (cognitive 31): CglibAopProxy.doValidateClass has cognitive complexity 31 (threshold 15). Drivers by points: if/else 26, boolean chains 3, loops 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":"spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"0128daa6e80269194f3b156147072a21f6c6d25272ea46cda3f882fa49d44603"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanUtils.copyProperties (cognitive 31): BeanUtils.copyProperties has cognitive complexity 31 (threshold 15). Drivers by points: if/else 17, error handling 6, ternaries 5, boolean chains 2, 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":"spring-beans/src/main/java/org/springframework/beans/BeanUtils.java"},"region":{"startLine":796}}}],"partialFingerprints":{"codehealthFindingId/v1":"620ba5ee32e878a2c899f4131cce2d4214c30196d8fdcfed8e29e5d1008cc673"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod (cognitive 31): ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForBeanMethod has cognitive complexity 31 (threshold 15). Drivers by points: if/else 24, boolean chains 3, loops 2, ternaries 2 (nesting depth added 5). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"353af36f2957d549e3be605ae26f34e23f78bbf50c7cac6ba06044c152c1523f"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanRegistrarAotContribution.generateApplyBeanRegistrarsMethod (cognitive 31): BeanRegistrarAotContribution.generateApplyBeanRegistrarsMethod has cognitive complexity 31 (threshold 15). Drivers by points: if/else 21, loops 9, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9bfce795d4c31d40710f7bc05b390af200a4f4ec2981f85764b57e9f432c91b"}},{"ruleId":"D2","level":"warning","message":{"text":"MergedAnnotationsCollection.find (cognitive 31): MergedAnnotationsCollection.find has cognitive complexity 31 (threshold 15). Drivers by points: if/else 16, ternaries 9, loops 4, 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":"spring-core/src/main/java/org/springframework/core/annotation/MergedAnnotationsCollection.java"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"507b8d4dfbff4cdfbc22091904edf0581d9476efe9b26c377e8b867e20ff950c"}},{"ruleId":"D2","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.addAllClassLoaderJarRoots (cognitive 31): PathMatchingResourcePatternResolver.addAllClassLoaderJarRoots has cognitive complexity 31 (threshold 15). Drivers by points: if/else 19, error handling 7, ternaries 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":510}}}],"partialFingerprints":{"codehealthFindingId/v1":"22ae5b3109a40f39b24642a47d1d15dd73019fa0499514da9f944efa1e1603ef"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractPlatformTransactionManager.processRollback (cognitive 31): AbstractPlatformTransactionManager.processRollback has cognitive complexity 31 (threshold 15). Drivers by points: if/else 29, boolean chains 1, error handling 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":"spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"},"region":{"startLine":874}}}],"partialFingerprints":{"codehealthFindingId/v1":"5aae4c105a59cc4d740e422b36084c02a33a07f1d831ee999808cf6cabf49f66"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.computeMethodInfoSize (cognitive 31): MethodWriter.computeMethodInfoSize has cognitive complexity 31 (threshold 15). Drivers by points: if/else 24, ternaries 7 (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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":2076}}}],"partialFingerprints":{"codehealthFindingId/v1":"119d0d5b4e7db81faccf7122be7ad93ea5732c0c183c156c552c8f1f4fdc59d9"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.visitFieldInsn (cognitive 31): MethodWriter.visitFieldInsn has cognitive complexity 31 (threshold 15). Drivers by points: ternaries 16, if/else 7, boolean chains 5, match/switch 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":992}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ed5b461d052961d660cb12166f4a7aebcfc470f52c497e535fcada4420655b4"}},{"ruleId":"D2","level":"warning","message":{"text":"JdbcTemplate.extractReturnedResults (cognitive 31): JdbcTemplate.extractReturnedResults has cognitive complexity 31 (threshold 15). Drivers by points: if/else 26, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":1248}}}],"partialFingerprints":{"codehealthFindingId/v1":"025cc9fc731b2b2e3731c2465c91e31e920319178599c8ce2d1939c1bc5e9e25"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptUtils.containsStatementSeparator (cognitive 31): ScriptUtils.containsStatementSeparator has cognitive complexity 31 (threshold 15). Drivers by points: if/else 27, boolean chains 3, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"99a333f1984018052946c528e7485dcd5ab9914242248a1a991bad56f7561b1c"}},{"ruleId":"D2","level":"warning","message":{"text":"JmsResourceHolder.commitAll (cognitive 31): JmsResourceHolder.commitAll has cognitive complexity 31 (threshold 15). Drivers by points: error handling 13, if/else 13, loops 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":"spring-jms/src/main/java/org/springframework/jms/connection/JmsResourceHolder.java"},"region":{"startLine":230}}}],"partialFingerprints":{"codehealthFindingId/v1":"89c188f34dba59bd71fd48a5ae3731db696146bd65d8b7498a9aaa9d7ada2648"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptUtils.containsStatementSeparator (cognitive 31): ScriptUtils.containsStatementSeparator has cognitive complexity 31 (threshold 15). Drivers by points: if/else 27, boolean chains 3, 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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java"},"region":{"startLine":366}}}],"partialFingerprints":{"codehealthFindingId/v1":"bd3b8a95b17b5673084eb8ceb2a7d9c9a62a32634fdad679d47fe621a0b0e22e"}},{"ruleId":"D2","level":"warning","message":{"text":"ConnectionFactoryUtils.convertR2dbcException (cognitive 31): ConnectionFactoryUtils.convertR2dbcException has cognitive complexity 31 (threshold 15). Drivers by points: if/else 27, ternaries 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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/ConnectionFactoryUtils.java"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"76ecc447d296b9af1341604ecdd45a70c84b3ac285a8582e52c67025ae2830d2"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpClientErrorException.create (cognitive 31): HttpClientErrorException.create has cognitive complexity 31 (threshold 15). Drivers by points: ternaries 28, if/else 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":"spring-web/src/main/java/org/springframework/web/client/HttpClientErrorException.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f91dc56283efaff8f8ff8cbdc54a19e276c10cfcf28e7cbbd5c502607cd55ab"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationConfigWebApplicationContext.loadBeanDefinitions (cognitive 31): AnnotationConfigWebApplicationContext.loadBeanDefinitions has cognitive complexity 31 (threshold 15). Drivers by points: if/else 23, loops 4, error handling 3, 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":"spring-web/src/main/java/org/springframework/web/context/support/AnnotationConfigWebApplicationContext.java"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb08c8f5d86a13c227871372c2660b42b6fe04693d29b10a5a737ba4b7d1b029"}},{"ruleId":"D2","level":"warning","message":{"text":"ControllerAdviceBean.getOrder (cognitive 31): ControllerAdviceBean.getOrder has cognitive complexity 31 (threshold 15). Drivers by points: if/else 26, error handling 4, 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":"spring-web/src/main/java/org/springframework/web/method/ControllerAdviceBean.java"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e920894b8eb81168a7f0e16b9f1bcc4155dd417075b5dc8be8beb77f358bfd6"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.findAutowireCandidates (cognitive 30): DefaultListableBeanFactory.findAutowireCandidates has cognitive complexity 30 (threshold 15). Drivers by points: if/else 17, loops 7, boolean chains 6 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1959}}}],"partialFingerprints":{"codehealthFindingId/v1":"e802dd5e8f4811d86129a4f1566f47fbcec3b235fe2e9b93a0260f18f33e9525"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.registerBeanDefinition (cognitive 30): DefaultListableBeanFactory.registerBeanDefinition has cognitive complexity 30 (threshold 15). Drivers by points: if/else 27, error handling 2, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1252}}}],"partialFingerprints":{"codehealthFindingId/v1":"9994f413ce36aedf92aad84eeabf4d8c2c18fb24e720d7dc5c50b923bd452a30"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConverterDelegate.convertToTypedMap (cognitive 30): TypeConverterDelegate.convertToTypedMap has cognitive complexity 30 (threshold 15). Drivers by points: if/else 14, ternaries 7, boolean chains 4, error handling 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":553}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c513481b4155d3e20bc96645cae6c8cbea944846e8fcd584040b079f1da0e54"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassParser.processImports (cognitive 30): ConfigurationClassParser.processImports has cognitive complexity 30 (threshold 15). Drivers by points: if/else 23, error handling 4, loops 2, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":581}}}],"partialFingerprints":{"codehealthFindingId/v1":"d42d0c77bb94bd3fb98435c6bc26aad20c9cba3598de6ddb92cebacbe01c28df"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotatedMethod.getInheritedParameterAnnotations (cognitive 30): AnnotatedMethod.getInheritedParameterAnnotations has cognitive complexity 30 (threshold 15). Drivers by points: if/else 17, loops 13 (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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotatedMethod.java"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7e831aa77513c4811f682e1d6019e03db7de425ed47c38ec0110fa90c9b6470"}},{"ruleId":"D2","level":"warning","message":{"text":"PathMatchingResourcePatternResolver.getClassPathManifestEntriesFromJar (cognitive 30): PathMatchingResourcePatternResolver.getClassPathManifestEntriesFromJar has cognitive complexity 30 (threshold 15). Drivers by points: if/else 15, error handling 5, ternaries 5, boolean chains 3, loops 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":615}}}],"partialFingerprints":{"codehealthFindingId/v1":"7465fbedbb977791d4cfc5ecc995ba63e5190ad38dc02dd5546e1077f8b93f8b"}},{"ruleId":"D2","level":"warning","message":{"text":"MimeType.compareTo (cognitive 30): MimeType.compareTo has cognitive complexity 30 (threshold 15). Drivers by points: if/else 29, 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":"spring-core/src/main/java/org/springframework/util/MimeType.java"},"region":{"startLine":577}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f47e4e67b79ec391e2c308f62bb9ef888a6d04bed00f37c5bb02571ba8abd27"}},{"ruleId":"D2","level":"warning","message":{"text":"NumberUtils.parseNumber (cognitive 30): NumberUtils.parseNumber has cognitive complexity 30 (threshold 15). Drivers by points: ternaries 20, if/else 9, 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":"spring-core/src/main/java/org/springframework/util/NumberUtils.java"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"a1b46f4daac78d3560f1e99428379d5993dedc2ee1e818feba785d7ade9e2147"}},{"ruleId":"D2","level":"warning","message":{"text":"DatabaseStartupValidator.afterPropertiesSet (cognitive 30): DatabaseStartupValidator.afterPropertiesSet has cognitive complexity 30 (threshold 15). Drivers by points: if/else 25, error handling 3, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/DatabaseStartupValidator.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"71b973f93545637a26859c958ac5860723bf0f1fe26152918b8a51e3f0cc21e7"}},{"ruleId":"D2","level":"warning","message":{"text":"MockHttpServletResponse.setSpecialHeader (cognitive 30): MockHttpServletResponse.setSpecialHeader has cognitive complexity 30 (threshold 15). Drivers by points: if/else 21, ternaries 8, 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":"spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java"},"region":{"startLine":734}}}],"partialFingerprints":{"codehealthFindingId/v1":"9642f4bfc5c7c34b31abb65f55f478a16b6b433d08875d9cd2f7c0049db4e292"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpMessageConverterExtractor.extractData (cognitive 30): HttpMessageConverterExtractor.extractData has cognitive complexity 30 (threshold 15). Drivers by points: if/else 26, boolean chains 2, error handling 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":"spring-web/src/main/java/org/springframework/web/client/HttpMessageConverterExtractor.java"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a20e0d13b73edeeaf6058cff956b521f002b6b48f3ab7649c3e6643ecd1b5d0"}},{"ruleId":"D2","level":"warning","message":{"text":"RegexPathElement.buildPattern (cognitive 30): RegexPathElement.buildPattern has cognitive complexity 30 (threshold 15). Drivers by points: if/else 26, boolean chains 2, loops 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":"spring-web/src/main/java/org/springframework/web/util/pattern/RegexPathElement.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"1afbafa5dbe4bf680f412572d64dbe6c5aa2b709d77b7f9c95edde42dcb66ae1"}},{"ruleId":"D2","level":"warning","message":{"text":"ExceptionHandlerExceptionResolver.getExceptionHandlerMethod (cognitive 30): ExceptionHandlerExceptionResolver.getExceptionHandlerMethod has cognitive complexity 30 (threshold 15). Drivers by points: if/else 23, loops 6, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ExceptionHandlerExceptionResolver.java"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"db8f9f0ff4b4807a33a08eac0bd3636a1921402613321a543520fd4026eab033"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceHttpRequestHandler.resolveResourceLocations (cognitive 30): ResourceHttpRequestHandler.resolveResourceLocations has cognitive complexity 30 (threshold 15). Drivers by points: if/else 26, loops 3, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java"},"region":{"startLine":429}}}],"partialFingerprints":{"codehealthFindingId/v1":"e19314d57c4345e36731d850bd15a84680b81852dd6d9e22b663d34000839071"}},{"ruleId":"D2","level":"warning","message":{"text":"WebSocketNamespaceUtils.registerSockJsService (cognitive 30): WebSocketNamespaceUtils.registerSockJsService has cognitive complexity 30 (threshold 15). Drivers by points: if/else 30 (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":"spring-websocket/src/main/java/org/springframework/web/socket/config/WebSocketNamespaceUtils.java"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"023b362f032b6266d56a1af479461774ed3c2778de4b30bf29d43bcd62606590"}},{"ruleId":"D2","level":"warning","message":{"text":"KotlinSerializationSupport.serializer (cognitive 29): KotlinSerializationSupport.serializer has cognitive complexity 29 (threshold 15). Drivers by points: if/else 18, error handling 7, ternaries 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":"spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a18678b827ace580e68c65e02bd5bd839ffaa87fe7cc2bcd15d042631f8a4f6"}},{"ruleId":"D2","level":"warning","message":{"text":"YamlProcessor.buildFlattenedMap (cognitive 29): YamlProcessor.buildFlattenedMap has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14, ternaries 9, loops 5, 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":"spring-beans/src/main/java/org/springframework/beans/factory/config/YamlProcessor.java"},"region":{"startLine":333}}}],"partialFingerprints":{"codehealthFindingId/v1":"2912b8495169748c6c22c6d60de36881ff8f06d720ff66cb8bbec12a8e4fc0cf"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyDescriptorUtils.determineBasicProperties (cognitive 29): PropertyDescriptorUtils.determineBasicProperties has cognitive complexity 29 (threshold 15). Drivers by points: if/else 18, ternaries 6, boolean chains 4, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"57b58e3501ed3ebf19ca965e49728f2618cff6fa448bd2bc3892d0f3c7e3fd53"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationsScanner.processMethodHierarchy (cognitive 29): AnnotationsScanner.processMethodHierarchy has cognitive complexity 29 (threshold 15). Drivers by points: if/else 22, loops 4, boolean chains 2, 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationsScanner.java"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"b740e5b2bfe0b3b059af6780864ddcc0426ceadbfc829584bf16375340bb04c3"}},{"ruleId":"D2","level":"warning","message":{"text":"KotlinDelegate.forParameter (cognitive 29): KotlinDelegate.forParameter has cognitive complexity 29 (threshold 15). Drivers by points: if/else 13, ternaries 9, loops 5, 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":"spring-core/src/main/java/org/springframework/core/Nullness.java"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6d233efb6900501c5f3604deb2f113e659a07fca38bb28c9752e4f278acb8a"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectivePropertyAccessor.write (cognitive 29): ReflectivePropertyAccessor.write has cognitive complexity 29 (threshold 15). Drivers by points: if/else 18, error handling 8, boolean chains 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"169e0fe9a74e1bf88bced264c418e969ab6297530358ed88f826f3e1ad86064e"}},{"ruleId":"D2","level":"warning","message":{"text":"MBeanClientInterceptor.convertResultValueIfNecessary (cognitive 29): MBeanClientInterceptor.convertResultValueIfNecessary has cognitive complexity 29 (threshold 15). Drivers by points: if/else 28, 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":"spring-context/src/main/java/org/springframework/jmx/access/MBeanClientInterceptor.java"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"766a5b29a6faa72b3f7087d720decc5c5b156a510bf385ac534e503ad13eede0"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.computeAllFrames (cognitive 29): MethodWriter.computeAllFrames has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12, loops 11, ternaries 5, 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1560}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ed29b9d5c772cf90d695e4f56b0c64178c5e5ebe048e2414a29e9ff99f9f587"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeEmitter.cast_numeric (cognitive 29): CodeEmitter.cast_numeric has cognitive complexity 29 (threshold 15). Drivers by points: if/else 29 (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":"spring-core/src/main/java/org/springframework/cglib/core/CodeEmitter.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e1ab9d5c89c55913e5ba99e73dd14443ec34695f229645b9a2a1ab346f47253"}},{"ruleId":"D2","level":"warning","message":{"text":"Enhancer.emitMethods (cognitive 29): Enhancer.emitMethods has cognitive complexity 29 (threshold 15). Drivers by points: if/else 14, error handling 8, ternaries 5, 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":"spring-core/src/main/java/org/springframework/cglib/proxy/Enhancer.java"},"region":{"startLine":1202}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad46cb865512556f42b4e426ee384e7bde2afee9fb2de70b7f128a71009329c8"}},{"ruleId":"D2","level":"warning","message":{"text":"JdbcTemplate.batchUpdate (cognitive 29): JdbcTemplate.batchUpdate has cognitive complexity 29 (threshold 15). Drivers by points: if/else 12, ternaries 10, error handling 4, loops 2, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":1091}}}],"partialFingerprints":{"codehealthFindingId/v1":"16e5a3b64f35ea5dd0b63569b56bf5bdae10c3b46c5d92eeefa8923fb4abb5ce"}},{"ruleId":"D2","level":"warning","message":{"text":"PreparedStatementCreatorImpl.setValues (cognitive 29): PreparedStatementCreatorImpl.setValues has cognitive complexity 29 (threshold 15). Drivers by points: if/else 17, loops 11, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/PreparedStatementCreatorFactory.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c5ab91bedfca08bffb6fb96cfbe5467cb396cb74c28689c08349b280a7d833f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractEntityManagerFactoryBean.afterPropertiesSet (cognitive 29): AbstractEntityManagerFactoryBean.afterPropertiesSet has cognitive complexity 29 (threshold 15). Drivers by points: if/else 23, ternaries 5, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"0090365cfa57479c0373ad45c0e4be496afa4d4849644fc0e119e4086a9af27b"}},{"ruleId":"D2","level":"warning","message":{"text":"RestClientUtils.readWithMessageConverters (cognitive 29): RestClientUtils.readWithMessageConverters has cognitive complexity 29 (threshold 15). Drivers by points: if/else 26, boolean chains 1, error handling 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":"spring-web/src/main/java/org/springframework/web/client/RestClientUtils.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6211a5107912eae7e082d21aec1e32727e3a025c76013718df58864b13de03f"}},{"ruleId":"D2","level":"warning","message":{"text":"ServletContextResourcePatternResolver.doRetrieveMatchingServletContextResources (cognitive 29): ServletContextResourcePatternResolver.doRetrieveMatchingServletContextResources has cognitive complexity 29 (threshold 15). Drivers by points: if/else 23, 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":"spring-web/src/main/java/org/springframework/web/context/support/ServletContextResourcePatternResolver.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"2789da4cb65c6b334c06ee114977c8ad07adebe7079d79baeebea3d78d94b64e"}},{"ruleId":"D2","level":"warning","message":{"text":"12.handle (cognitive 29): 12.handle has cognitive complexity 29 (threshold 15). Drivers by points: if/else 23, boolean chains 4, loops 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1055}}}],"partialFingerprints":{"codehealthFindingId/v1":"583715b4dbbeb5110521e60c4be5d26dbd14f3a2f2bfae20936e9d164c052dff"}},{"ruleId":"D2","level":"warning","message":{"text":"ControllerMethodResolver.getExceptionHandlerMethod (cognitive 29): ControllerMethodResolver.getExceptionHandlerMethod has cognitive complexity 29 (threshold 15). Drivers by points: if/else 22, loops 5, error handling 1, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ControllerMethodResolver.java"},"region":{"startLine":413}}}],"partialFingerprints":{"codehealthFindingId/v1":"1dea10b8264a00d85eda95b6566c01eedb68f3685df43ef47671b1ab03b272cb"}},{"ruleId":"D2","level":"warning","message":{"text":"MappedInterceptor.matches (cognitive 29): MappedInterceptor.matches has cognitive complexity 29 (threshold 15). Drivers by points: if/else 21, loops 8 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/MappedInterceptor.java"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"028c0fddfc8d8eb7eedcf41847b9356db10b41612daeb84c67e25aaf267037e8"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJAdviceParameterNameDiscoverer.maybeBindThisOrTargetOrArgsFromPointcutExpression (cognitive 28): AspectJAdviceParameterNameDiscoverer.maybeBindThisOrTargetOrArgsFromPointcutExpression has cognitive complexity 28 (threshold 15). Drivers by points: if/else 18, loops 8, 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d7911fa60916d5e77dffa46bbea089e1ac600965951871e9234db3b4e0804de"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parseBeanDefinitionElement (cognitive 28): BeanDefinitionParserDelegate.parseBeanDefinitionElement has cognitive complexity 28 (threshold 15). Drivers by points: if/else 19, ternaries 4, error handling 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":410}}}],"partialFingerprints":{"codehealthFindingId/v1":"69e5218904f4f6ce9ac21e980de7fef2e2222875b4851c9ebb0b5fb0beb8ce0e"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parsePropertySubElement (cognitive 28): BeanDefinitionParserDelegate.parsePropertySubElement has cognitive complexity 28 (threshold 15). Drivers by points: if/else 28 (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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":976}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ff782cd1bc946fc00464367321a0a15600ad00e67432787d2f9e07e7ac6e8eb"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.getMergedBeanDefinition (cognitive 28): AbstractBeanFactory.getMergedBeanDefinition has cognitive complexity 28 (threshold 15). Drivers by points: if/else 21, boolean chains 4, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":1409}}}],"partialFingerprints":{"codehealthFindingId/v1":"aeb9e4072e130088820a1ccc405bbc489dd02a08133686e6225b831619c601f2"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorResolver.resolvePreparedArguments (cognitive 28): ConstructorResolver.resolvePreparedArguments has cognitive complexity 28 (threshold 15). Drivers by points: if/else 19, error handling 6, boolean chains 1, loops 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":817}}}],"partialFingerprints":{"codehealthFindingId/v1":"0192883101f035b252a591e9a4b05cdf408d051abc8d86ec775936267c690c38"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConverterDelegate.attemptToConvertStringToEnum (cognitive 28): TypeConverterDelegate.attemptToConvertStringToEnum has cognitive complexity 28 (threshold 15). Drivers by points: if/else 19, error handling 8, 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":286}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b73688cc205732c44e0ee1ef5bc2898cf6711f3034120f397231496923a1006"}},{"ruleId":"D2","level":"warning","message":{"text":"ScheduledTaskRegistrar.scheduleTasks (cognitive 28): ScheduledTaskRegistrar.scheduleTasks has cognitive complexity 28 (threshold 15). Drivers by points: if/else 18, loops 10 (nesting depth added 11). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"a046fffb3906715734aa6c3932ee6f0dfb74c458c1b03c5f9aa37289a4ee80f1"}},{"ruleId":"D2","level":"warning","message":{"text":"TaskSchedulerRouter.determineDefaultScheduler (cognitive 28): TaskSchedulerRouter.determineDefaultScheduler has cognitive complexity 28 (threshold 15). Drivers by points: if/else 17, error handling 11 (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":"spring-context/src/main/java/org/springframework/scheduling/config/TaskSchedulerRouter.java"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ec6d29401bddd16a84efce3032ce542ebe7daab97fb4d67d63490600e65d2c1"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readField (cognitive 28): ClassReader.readField has cognitive complexity 28 (threshold 15). Drivers by points: if/else 15, loops 10, ternaries 3 (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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1071}}}],"partialFingerprints":{"codehealthFindingId/v1":"d20611b6bc77d93920928c7cbcac2413297caeb50aeb7501eb1c6703bb1ec949"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.visitLabel (cognitive 28): MethodWriter.visitLabel has cognitive complexity 28 (threshold 15). Drivers by points: if/else 27, 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1201}}}],"partialFingerprints":{"codehealthFindingId/v1":"146b51850348d43e1aa76b515c8f6b2048cf664b654205577163c8eb2a0ffabb"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionAwareInvocationHandler.invoke (cognitive 28): TransactionAwareInvocationHandler.invoke has cognitive complexity 28 (threshold 15). Drivers by points: if/else 24, boolean chains 2, error handling 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java"},"region":{"startLine":193}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3bdcf5d2383389ad8875023e24dfc3dcc194989ce7b8181db7837f6848e0575"}},{"ruleId":"D2","level":"warning","message":{"text":"ConnectionFactoryUtils.doGetTransactionalSession (cognitive 28): ConnectionFactoryUtils.doGetTransactionalSession has cognitive complexity 28 (threshold 15). Drivers by points: if/else 21, error handling 7 (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":"spring-jms/src/main/java/org/springframework/jms/connection/ConnectionFactoryUtils.java"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"e11832b5ab2ac4d69f201d8164200dee0d9da0db1eef9d5299ddfba8a6f49f53"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleJmsHeaderMapper.toHeaders (cognitive 28): SimpleJmsHeaderMapper.toHeaders has cognitive complexity 28 (threshold 15). Drivers by points: error handling 14, if/else 12, 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":"spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"2387d2c6f788f3ba2ec5e87777d193a8b83061ffc839b3d61fa5e7fd66cc3319"}},{"ruleId":"D2","level":"warning","message":{"text":"StompDecoder.decodeMessage (cognitive 28): StompDecoder.decodeMessage has cognitive complexity 28 (threshold 15). Drivers by points: if/else 26, 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"13e44024216a479961764140b17372ef47216392ecc3a1a023b66f8c9ebfba17"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractTestContextBootstrapper.getTestExecutionListeners (cognitive 28): AbstractTestContextBootstrapper.getTestExecutionListeners has cognitive complexity 28 (threshold 15). Drivers by points: if/else 21, ternaries 3, boolean chains 2, 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":"spring-test/src/main/java/org/springframework/test/context/support/AbstractTestContextBootstrapper.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"1927db9b3c96db5d61792bc340cf02225d31a9c8fc2d122c0f214efbde9a048e"}},{"ruleId":"D2","level":"warning","message":{"text":"WhatWgUrlParser.sanitizeInput (cognitive 28): WhatWgUrlParser.sanitizeInput has cognitive complexity 28 (threshold 15). Drivers by points: if/else 19, boolean chains 6, loops 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d362d01aaf8c7900239725e0010de5fb53364de1c0b95eef79bff1196376fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"JdkClientHttpRequest.executeInternal (cognitive 27): JdkClientHttpRequest.executeInternal has cognitive complexity 27 (threshold 15). Drivers by points: if/else 15, ternaries 9, error handling 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":"spring-web/src/main/java/org/springframework/http/client/JdkClientHttpRequest.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"027c33a393e93ac81b8a7010ffc296e6802c6bec45a55515a8930e604657814a"}},{"ruleId":"D2","level":"warning","message":{"text":"ThrowsAdviceInterceptor.\u003Cinit\u003E (cognitive 27): ThrowsAdviceInterceptor.\u003Cinit\u003E has cognitive complexity 27 (threshold 15). Drivers by points: if/else 25, 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":"spring-aop/src/main/java/org/springframework/aop/framework/adapter/ThrowsAdviceInterceptor.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"c0db9fbeaa3637a410e9735fa84a7163076a1945bd49a576ef829deac18e9366"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleConstructorNamespaceHandler.decorate (cognitive 27): SimpleConstructorNamespaceHandler.decorate has cognitive complexity 27 (threshold 15). Drivers by points: if/else 21, error handling 4, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/SimpleConstructorNamespaceHandler.java"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"350e272c28e81207a16973bbecf45e82037eaef137f616af5e2fdda3990345b2"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultSingletonBeanRegistry.getSingleton (cognitive 27): DefaultSingletonBeanRegistry.getSingleton has cognitive complexity 27 (threshold 15). Drivers by points: if/else 25, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4768b1a220f4eb54cfa087adb22e50fb08fbe2bd436fc23f5893878e504f840"}},{"ruleId":"D2","level":"warning","message":{"text":"CachedIntrospectionResults.\u003Cinit\u003E (cognitive 27): CachedIntrospectionResults.\u003Cinit\u003E has cognitive complexity 27 (threshold 15). Drivers by points: if/else 12, boolean chains 6, ternaries 6, loops 2, 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":"spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java"},"region":{"startLine":241}}}],"partialFingerprints":{"codehealthFindingId/v1":"16dd2f28663c3da19d7c2204aecc969b3e4b3dc0dc6c9472a6e1036badb0d3cb"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConverterDelegate.convertToTypedCollection (cognitive 27): TypeConverterDelegate.convertToTypedCollection has cognitive complexity 27 (threshold 15). Drivers by points: if/else 14, boolean chains 4, error handling 4, ternaries 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":480}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c0214644a4a76b5c2f27aac705679f3e604a13ee75e4598047ba74c0fcaf87d"}},{"ruleId":"D2","level":"warning","message":{"text":"ReloadableResourceBundleMessageSource.refreshProperties (cognitive 27): ReloadableResourceBundleMessageSource.refreshProperties has cognitive complexity 27 (threshold 15). Drivers by points: if/else 20, error handling 5, 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":"spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"f20ef5ce38d3b00566cf096c768e10a41e623a81f9a7f70eb4b7bceb9d31a98c"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectionHelper.getTypeDifferenceWeight (cognitive 27): ReflectionHelper.getTypeDifferenceWeight has cognitive complexity 27 (threshold 15). Drivers by points: if/else 21, loops 4, ternaries 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"5356e413abbf86bf41200fed190d4cdb02e25705d8a3322bd10b998b0d12b32b"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodReference.getValueInternal (cognitive 27): MethodReference.getValueInternal has cognitive complexity 27 (threshold 15). Drivers by points: if/else 21, error handling 3, ternaries 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6ed710dd4672419c0c19d4a29b859f7e0e9982ffddbb0f1508ffe8490c165b7"}},{"ruleId":"D2","level":"warning","message":{"text":"Projection.getValueRef (cognitive 27): Projection.getValueRef has cognitive complexity 27 (threshold 15). Drivers by points: if/else 19, loops 4, boolean chains 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Projection.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"501982262435f9d3f95d76d53fadde5390e1e71278173146e06f11cdcbac81ae"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSpelExpressionParser.eatRelationalExpression (cognitive 27): InternalSpelExpressionParser.eatRelationalExpression has cognitive complexity 27 (threshold 15). Drivers by points: if/else 27 (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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e8952e4b1db389253bbaaf520b405e63799a01f35ad44be971cb53dff34dfec"}},{"ruleId":"D2","level":"warning","message":{"text":"AntPathStringMatcher.matchStrings (cognitive 27): AntPathStringMatcher.matchStrings has cognitive complexity 27 (threshold 15). Drivers by points: if/else 20, loops 5, 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"a064e37c9d14c374d6afcb43dfd63f4df91a7fcf5e53f9bbf05b24f23e475fcd"}},{"ruleId":"D2","level":"warning","message":{"text":"StompHeaderAccessor.getShortLogMessage (cognitive 27): StompHeaderAccessor.getShortLogMessage has cognitive complexity 27 (threshold 15). Drivers by points: ternaries 19, if/else 8 (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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java"},"region":{"startLine":402}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c7bf299325124f91b3247a58ee72eb4238d41ce855f12c0b5568722247fbbb6"}},{"ruleId":"D2","level":"warning","message":{"text":"PersistenceManagedTypesScanner.scanPackage (cognitive 27): PersistenceManagedTypesScanner.scanPackage has cognitive complexity 27 (threshold 15). Drivers by points: if/else 16, error handling 7, loops 3, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"886e54a86121fcb9e43b93f130bdbade990230dc7f9d331a072e2fe06c312e79"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractTestContextBootstrapper.getContextCustomizerFactories (cognitive 27): AbstractTestContextBootstrapper.getContextCustomizerFactories has cognitive complexity 27 (threshold 15). Drivers by points: if/else 20, ternaries 3, boolean chains 2, 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":"spring-test/src/main/java/org/springframework/test/context/support/AbstractTestContextBootstrapper.java"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"a5c0dfc9402e9fdd98453c85b37ca85c6528af6d1e08bdb3c1658b39df828fc2"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalPathPatternParser.createPathElement (cognitive 27): InternalPathPatternParser.createPathElement has cognitive complexity 27 (threshold 15). Drivers by points: if/else 19, error handling 4, loops 3, 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":"spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"084bc8d6ce4ed7d6d6fc1f80e292c37786d732e644500a116c887897755090d9"}},{"ruleId":"D2","level":"warning","message":{"text":"JavaScriptUtils.javaScriptEscape (cognitive 27): JavaScriptUtils.javaScriptEscape has cognitive complexity 27 (threshold 15). Drivers by points: if/else 26, 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":"spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"be56549fc977035724be902a35ca3896946ea5aef64d1cd798eacc510d7caa40"}},{"ruleId":"D2","level":"warning","message":{"text":"3.handle (cognitive 27): 3.handle has cognitive complexity 27 (threshold 15). Drivers by points: if/else 24, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1269}}}],"partialFingerprints":{"codehealthFindingId/v1":"e71ef16e33ae1ef9a430cf902014958a71c4e21357a2e2907b0c182ec8a06987"}},{"ruleId":"D2","level":"warning","message":{"text":"ResponseEntityResultHandler.handleResult (cognitive 27): ResponseEntityResultHandler.handleResult has cognitive complexity 27 (threshold 15). Drivers by points: if/else 18, ternaries 5, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityResultHandler.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8d5aba2c781c1e9757f98f454dc82fb4309a9524716c7f094866a815fd3f18"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptTemplateView.setApplicationContext (cognitive 27): ScriptTemplateView.setApplicationContext has cognitive complexity 27 (threshold 15). Drivers by points: if/else 17, boolean chains 8, ternaries 2 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/script/ScriptTemplateView.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c4206f38e1113d97ca09c3459db0144ec73c9c42190d0c715c04e9f68c0aa56"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractUrlHandlerMapping.lookupHandler (cognitive 27): AbstractUrlHandlerMapping.lookupHandler has cognitive complexity 27 (threshold 15). Drivers by points: if/else 22, loops 3, boolean chains 2 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"231c1d6df8353000cfd2fb90bf0a9dffcb867c46e1d4a6fb401fe94f9ec4471a"}},{"ruleId":"D2","level":"warning","message":{"text":"RequestPartMethodArgumentResolver.resolveArgument (cognitive 27): RequestPartMethodArgumentResolver.resolveArgument has cognitive complexity 27 (threshold 15). Drivers by points: if/else 21, boolean chains 4, error handling 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestPartMethodArgumentResolver.java"},"region":{"startLine":120}}}],"partialFingerprints":{"codehealthFindingId/v1":"126e1a842ae7fd818682715c7692536adb422dd3356fb5527d058ae3c76d1af4"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutoProxyCreator.buildProxy (cognitive 26): AbstractAutoProxyCreator.buildProxy has cognitive complexity 26 (threshold 15). Drivers by points: if/else 12, loops 6, ternaries 6, 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":"spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAutoProxyCreator.java"},"region":{"startLine":440}}}],"partialFingerprints":{"codehealthFindingId/v1":"36397d6fd405cb3524a60329a3bdedfcf1fa2bffca2846352932883f4d8a20f4"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJAdviceParameterNameDiscoverer.maybeBindReferencePointcutParameter (cognitive 26): AspectJAdviceParameterNameDiscoverer.maybeBindReferencePointcutParameter has cognitive complexity 26 (threshold 15). Drivers by points: if/else 22, loops 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":531}}}],"partialFingerprints":{"codehealthFindingId/v1":"368943f2ba516a3142718d7443a4ce8f649ca6fcac7df53d95e5b3de8c9ab938"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJWeaverMessageHandler.handleMessage (cognitive 26): AspectJWeaverMessageHandler.handleMessage has cognitive complexity 26 (threshold 15). Drivers by points: if/else 25, 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJWeaverMessageHandler.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"82b3de7ac3f29a0feb308ab32abc6ed66c9c95d43295a760698022921a7f248e"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractFileResolvingResource.checkReadable (cognitive 26): AbstractFileResolvingResource.checkReadable has cognitive complexity 26 (threshold 15). Drivers by points: if/else 24, boolean chains 1, 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":"spring-core/src/main/java/org/springframework/core/io/AbstractFileResolvingResource.java"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec1db2833ff7e1bb8d324887ab0a2118a867002a68e958df0dc779cf663df7fb"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardTypeComparator.compare (cognitive 26): StandardTypeComparator.compare has cognitive complexity 26 (threshold 15). Drivers by points: if/else 14, boolean chains 9, ternaries 2, 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, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/StandardTypeComparator.java"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"06901580982c650b82bedf8ea4325804d3ed5c03bc43ce3123f5d88a142e1588"}},{"ruleId":"D2","level":"warning","message":{"text":"Operator.equalityCheck (cognitive 26): Operator.equalityCheck has cognitive complexity 26 (threshold 15). Drivers by points: if/else 15, boolean chains 11 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"f2e274d0b24923cba418e66ceee428248b195e67b1d03119b58bcd85633a15b8"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractReflectiveMBeanInfoAssembler.getOperationInfo (cognitive 26): AbstractReflectiveMBeanInfoAssembler.getOperationInfo has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20, boolean chains 5, 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":"spring-context/src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cf586ff37e831848e544af2c2b3b6011059c8c88bea9de3d0a01b1409b25b0e"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanValidationDelegate.processAheadOfTime (cognitive 26): BeanValidationDelegate.processAheadOfTime has cognitive complexity 26 (threshold 15). Drivers by points: if/else 21, boolean chains 4, 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad04f18e9f0282bbf7fc91ff6adffe78b01d51c158356a9074917a50105f53d7"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.visitVarInsn (cognitive 26): MethodWriter.visitVarInsn has cognitive complexity 26 (threshold 15). Drivers by points: if/else 22, 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":909}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a68b0e01d38c7354ae5ab3c07a74030898d4d5137070bd306675cabed6ec34"}},{"ruleId":"D2","level":"warning","message":{"text":"TypePath.fromString (cognitive 26): TypePath.fromString has cognitive complexity 26 (threshold 15). Drivers by points: if/else 16, loops 7, 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":"spring-core/src/main/java/org/springframework/asm/TypePath.java"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb84f253a30890b6c02e4529b2bad8c04865e5d1257467a732cc8ae41b942fee"}},{"ruleId":"D2","level":"warning","message":{"text":"Enhancer.validate (cognitive 26): Enhancer.validate has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20, loops 4, 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":"spring-core/src/main/java/org/springframework/cglib/proxy/Enhancer.java"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"24bbd176562f5dcfdaf23b4bc57883b1ef0c2d3c4573190778cb96f265877619"}},{"ruleId":"D2","level":"warning","message":{"text":"FastByteArrayOutputStream.write (cognitive 26): FastByteArrayOutputStream.write has cognitive complexity 26 (threshold 15). Drivers by points: if/else 20, loops 4, 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":"spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdc47c4440d7f3517b297428c6dd57c58808a6928396fe0591ad56b71fcdacec"}},{"ruleId":"D2","level":"warning","message":{"text":"MimeType.includes (cognitive 26): MimeType.includes has cognitive complexity 26 (threshold 15). Drivers by points: if/else 25, 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":"spring-core/src/main/java/org/springframework/util/MimeType.java"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"0edad1998a04f3b842badfdd285bb892d6937120a3a09cb1f3bdab23e59b991f"}},{"ruleId":"D2","level":"warning","message":{"text":"JdbcTemplate.extractOutputParameters (cognitive 26): JdbcTemplate.extractOutputParameters has cognitive complexity 26 (threshold 15). Drivers by points: if/else 25, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":1311}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4d86e97462ad4b8fc5791d33e4a0c62ffe541694925e9c67fd2944473b029db"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleBrokerMessageHandler.handleMessageInternal (cognitive 26): SimpleBrokerMessageHandler.handleMessageInternal has cognitive complexity 26 (threshold 15). Drivers by points: if/else 26 (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":"spring-messaging/src/main/java/org/springframework/messaging/simp/broker/SimpleBrokerMessageHandler.java"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"95b4ad2bd2807a52e65feaae975026477bad1acef4501a9af4526f2bec9dc608"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalSessionFactoryBuilder.scanPackages (cognitive 26): LocalSessionFactoryBuilder.scanPackages has cognitive complexity 26 (threshold 15). Drivers by points: error handling 11, if/else 9, loops 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBuilder.java"},"region":{"startLine":293}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e05400ed4aafa99cf74639a499132a08301c691a650f573d9288762d5c6509"}},{"ruleId":"D2","level":"warning","message":{"text":"SpringBeanContainer.createBean (cognitive 26): SpringBeanContainer.createBean has cognitive complexity 26 (threshold 15). Drivers by points: if/else 21, error handling 3, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/SpringBeanContainer.java"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"30f5a5c01e9f2b8f1d2dd876397e5b1d7710cb9118374a8b02377cfea24e8a38"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanOverrideBeanFactoryPostProcessor.determinePrimaryCandidate (cognitive 26): BeanOverrideBeanFactoryPostProcessor.determinePrimaryCandidate has cognitive complexity 26 (threshold 15). Drivers by points: if/else 23, loops 3 (nesting depth added 16). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessor.java"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"1934f88bf3653d29efcd576f2c4c3708728f9a529aa03c2c0125a69ce5234564"}},{"ruleId":"D2","level":"warning","message":{"text":"SingleCharWildcardedPathElement.matches (cognitive 26): SingleCharWildcardedPathElement.matches has cognitive complexity 26 (threshold 15). Drivers by points: if/else 19, loops 4, 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":"spring-web/src/main/java/org/springframework/web/util/pattern/SingleCharWildcardedPathElement.java"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5464168fd040e1ca42d92140c24017eb0c7bd706e647a99ab280de1085d8ec1"}},{"ruleId":"D2","level":"warning","message":{"text":"Ipv4Address.parse (cognitive 26): Ipv4Address.parse has cognitive complexity 26 (threshold 15). Drivers by points: if/else 21, loops 3, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":2345}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c54cdd360f58f857443446d5e49f1da1800dd1cf07f0dba6d8afe2c77bb578b"}},{"ruleId":"D2","level":"warning","message":{"text":"ResponseEntityExceptionHandler.handleException (cognitive 26): ResponseEntityExceptionHandler.handleException has cognitive complexity 26 (threshold 15). Drivers by points: if/else 26 (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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ResponseEntityExceptionHandler.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b285b50a0d0e8b5b8567733c5ce6d9b55027376cd18ca5da16d35dd7079602"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultHandlerExceptionResolver.doResolveException (cognitive 26): DefaultHandlerExceptionResolver.doResolveException has cognitive complexity 26 (threshold 15). Drivers by points: if/else 23, ternaries 2, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7287b3fc3ea9e4e94937e8d2ee843e8e67585faa79451964e44fbf7cb43d3c"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanNameAutoProxyCreator.isSupportedBeanName (cognitive 25): BeanNameAutoProxyCreator.isSupportedBeanName has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15, loops 7, ternaries 2, 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":"spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/BeanNameAutoProxyCreator.java"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2bf1a1d0942a552b007c85e9d039bd31957c8f4303e461f9379f888e40b77ea"}},{"ruleId":"D2","level":"warning","message":{"text":"BindingReflectionHintsRegistrar.registerReflectionHints (cognitive 25): BindingReflectionHintsRegistrar.registerReflectionHints has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16, loops 5, 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":"spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc472ebb849b5974f180bed33e790a3c4637f6d90c3c0135498b21c60e0c81d7"}},{"ruleId":"D2","level":"warning","message":{"text":"AutowiredAnnotationBeanPostProcessor.buildAutowiringMetadata (cognitive 25): AutowiredAnnotationBeanPostProcessor.buildAutowiringMetadata has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22, 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":547}}}],"partialFingerprints":{"codehealthFindingId/v1":"b648a283363081ad9d42c291789c59ba198778252538e42056186b0ffed6d85e"}},{"ruleId":"D2","level":"warning","message":{"text":"DependencyObjectProvider.getValue (cognitive 25): DependencyObjectProvider.getValue has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13, ternaries 7, loops 4, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":2640}}}],"partialFingerprints":{"codehealthFindingId/v1":"ba3c9ec719a7995659edf078857aaf71c8f540e89fb5a37bc032f590f557b838"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationTypeMapping.computeSynthesizableFlag (cognitive 25): AnnotationTypeMapping.computeSynthesizableFlag has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16, ternaries 4, loops 3, 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"757b9ebaefa5e9bc76ea73cc254b6c07fb4515d978aadb222361f55efd50e701"}},{"ruleId":"D2","level":"warning","message":{"text":"CollectionFactory.createCollection (cognitive 25): CollectionFactory.createCollection has cognitive complexity 25 (threshold 15). Drivers by points: if/else 14, error handling 7, 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":"spring-core/src/main/java/org/springframework/core/CollectionFactory.java"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"88dbc99086aa627c0af79744ef95ddb2ee845e93f7e4cacce110fb500ba928b5"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectivePropertyAccessor.createOptimalAccessor (cognitive 25): ReflectivePropertyAccessor.createOptimalAccessor has cognitive complexity 25 (threshold 15). Drivers by points: if/else 18, ternaries 5, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":533}}}],"partialFingerprints":{"codehealthFindingId/v1":"77e3bd06fd638f1d80baaa20d4515d3688c595c8e7e6e13710b17d305edf3899"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyOrFieldReference.getValueInternal (cognitive 25): PropertyOrFieldReference.getValueInternal has cognitive complexity 25 (threshold 15). Drivers by points: if/else 16, error handling 8, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/PropertyOrFieldReference.java"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d378f8bf1e48d14316ddb0ac94034eda8925323a9c1bd6470dd21ce89ee850c"}},{"ruleId":"D2","level":"warning","message":{"text":"SchedulerAccessor.addTriggerToScheduler (cognitive 25): SchedulerAccessor.addTriggerToScheduler has cognitive complexity 25 (threshold 15). Drivers by points: if/else 17, boolean chains 4, error handling 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":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerAccessor.java"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"8dd737abaaf3daf2a80750d21de5bc676ffce88da11e51657cee5a7223032ab3"}},{"ruleId":"D2","level":"warning","message":{"text":"SchedulerAccessor.registerJobsAndTriggers (cognitive 25): SchedulerAccessor.registerJobsAndTriggers has cognitive complexity 25 (threshold 15). Drivers by points: if/else 13, loops 8, error handling 4 (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":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerAccessor.java"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"2265cc531600413878016d92c215de34fb51d397c258932bb0ba5e155e298c8e"}},{"ruleId":"D2","level":"warning","message":{"text":"MBeanClientInterceptor.doInvoke (cognitive 25): MBeanClientInterceptor.doInvoke has cognitive complexity 25 (threshold 15). Drivers by points: if/else 18, error handling 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":"spring-context/src/main/java/org/springframework/jmx/access/MBeanClientInterceptor.java"},"region":{"startLine":400}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a640bc5a3ca1c5d8768682d326842aacdfd10d4eaf3486f276fe40ae9674ba5"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeUtils.isAssignable (cognitive 25): TypeUtils.isAssignable has cognitive complexity 25 (threshold 15). Drivers by points: if/else 22, 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":"spring-core/src/main/java/org/springframework/util/TypeUtils.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bbb7f85b4aa1ad8c6bf32e4fba8630c69e54cb63a0792e6e145e9a2797d6ddd"}},{"ruleId":"D2","level":"warning","message":{"text":"CallMetaDataContext.matchInParameterValuesWithCallParameters (cognitive 25): CallMetaDataContext.matchInParameterValuesWithCallParameters has cognitive complexity 25 (threshold 15). Drivers by points: if/else 21, loops 3, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"743e43b65bbcb484679f4ce5c87f81de72ec0e0840d5e553b71b374532f9c350"}},{"ruleId":"D2","level":"warning","message":{"text":"ArgumentTypePreparedStatementSetter.setValues (cognitive 25): ArgumentTypePreparedStatementSetter.setValues has cognitive complexity 25 (threshold 15). Drivers by points: loops 12, if/else 11, boolean chains 2 (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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/ArgumentTypePreparedStatementSetter.java"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d6572270e3b30a81434e6f9de6250cb895c23858c4ae3db208de4359a6ef890"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentRequestMatchers.multipartData (cognitive 25): ContentRequestMatchers.multipartData has cognitive complexity 25 (threshold 15). Drivers by points: if/else 15, ternaries 7, 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":"spring-test/src/main/java/org/springframework/test/web/client/match/ContentRequestMatchers.java"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee10a9873db58d12811b5fb6ce4fa4ee3d6864373da31ce9e9ec8c73d9e0e27"}},{"ruleId":"D2","level":"warning","message":{"text":"PathPattern.extractPathWithinPattern (cognitive 25): PathPattern.extractPathWithinPattern has cognitive complexity 25 (threshold 15). Drivers by points: if/else 11, loops 10, 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":"spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"19911bd20f038593b2c325387433f04798c14834f36ebb78fcc3449bcabdfffe"}},{"ruleId":"D2","level":"warning","message":{"text":"ServerWebExchangeMethodArgumentResolver.resolveArgumentValue (cognitive 25): ServerWebExchangeMethodArgumentResolver.resolveArgumentValue has cognitive complexity 25 (threshold 15). Drivers by points: ternaries 15, if/else 9, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ServerWebExchangeMethodArgumentResolver.java"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"b38b7ba448970d6b07465c87acfa187c59f4ef078df9b16ab1a6f2151d195e75"}},{"ruleId":"D2","level":"warning","message":{"text":"BindStatus.\u003Cinit\u003E (cognitive 25): BindStatus.\u003Cinit\u003E has cognitive complexity 25 (threshold 15). Drivers by points: if/else 23, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/BindStatus.java"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6cdcf9e726117ec91c32bde962c9d977ba4deb6e65c63932fbc3f6b81f39e03"}},{"ruleId":"D2","level":"warning","message":{"text":"CorsBeanDefinitionParser.parse (cognitive 25): CorsBeanDefinitionParser.parse has cognitive complexity 25 (threshold 15). Drivers by points: if/else 23, loops 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/config/CorsBeanDefinitionParser.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f416c5352463abe5bde3bfcbe7d6d24bc96cba5824ea41789ae18ca0bd58925"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractUrlHandlerMapping.registerHandler (cognitive 25): AbstractUrlHandlerMapping.registerHandler has cognitive complexity 25 (threshold 15). Drivers by points: if/else 24, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7baf356a2b686def9ca07e295a518db87b57de2e3a619c530c77f8cb90e6d18"}},{"ruleId":"D2","level":"warning","message":{"text":"BindStatus.\u003Cinit\u003E (cognitive 25): BindStatus.\u003Cinit\u003E has cognitive complexity 25 (threshold 15). Drivers by points: if/else 23, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/support/BindStatus.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"b9e507ebcef63b075c52fe2600d5be6153f8b171d0c2139cda74e3f3edcf744b"}},{"ruleId":"D2","level":"warning","message":{"text":"SubscriberInputStream.read (cognitive 24): SubscriberInputStream.read has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, ternaries 4, loops 3, 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":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ca9a05e11b32182b0fe87a955429d58e023cafd5be074d8b99bf5244c6851dd"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentDisposition.transliterateToAscii (cognitive 24): ContentDisposition.transliterateToAscii has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, loops 5, match/switch 3, 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":"spring-web/src/main/java/org/springframework/http/ContentDisposition.java"},"region":{"startLine":436}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aba49b5f16fcf787cddbec4ba8c1ecbb83bf510f006eb074ae7c1751284c123"}},{"ruleId":"D2","level":"warning","message":{"text":"PreComputeFieldFeature.iterateFields (cognitive 24): PreComputeFieldFeature.iterateFields has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14, error handling 5, loops 3, 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":"spring-core/src/main/java/org/springframework/aot/nativex/feature/PreComputeFieldFeature.java"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"24b666681407f6c3d5e01b3494ba12ccd9557bea5f4865ef4ba1329cae5e47b2"}},{"ruleId":"D2","level":"warning","message":{"text":"GroovyBeanDefinitionReader.getProperty (cognitive 24): GroovyBeanDefinitionReader.getProperty has cognitive complexity 24 (threshold 15). Drivers by points: if/else 23, 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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java"},"region":{"startLine":657}}}],"partialFingerprints":{"codehealthFindingId/v1":"c34561b693b3322c085b3919ab85164905b8bcc1d26037e65dc4163a6e17b188"}},{"ruleId":"D2","level":"warning","message":{"text":"GroovyBeanDefinitionReader.invokeMethod (cognitive 24): GroovyBeanDefinitionReader.invokeMethod has cognitive complexity 24 (threshold 15). Drivers by points: if/else 17, 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":"spring-beans/src/main/java/org/springframework/beans/factory/groovy/GroovyBeanDefinitionReader.java"},"region":{"startLine":380}}}],"partialFingerprints":{"codehealthFindingId/v1":"b45fdebb7ffffd2a659a9d58ce838e54e8049119e2421d7c369016e9ae88ce9d"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyEditorRegistrySupport.getCustomEditor (cognitive 24): PropertyEditorRegistrySupport.getCustomEditor has cognitive complexity 24 (threshold 15). Drivers by points: if/else 20, loops 3, 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":"spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java"},"region":{"startLine":409}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4610f451e13302c7786cf1b16f18f056ca9d12907d8a40abd8edf660708c192"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationBeanNameGenerator.determineBeanNameFromAnnotation (cognitive 24): AnnotationBeanNameGenerator.determineBeanNameFromAnnotation has cognitive complexity 24 (threshold 15). Drivers by points: if/else 20, boolean chains 3, 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":"spring-context/src/main/java/org/springframework/context/annotation/AnnotationBeanNameGenerator.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2dbd2492d989463d876e54febcafeddf601b8da2cdc4577c8ffef9195cce1af"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanRegistrarAotContribution.generateRegisterCode (cognitive 24): BeanRegistrarAotContribution.generateRegisterCode has cognitive complexity 24 (threshold 15). Drivers by points: if/else 16, error handling 4, loops 3, ternaries 1 (nesting depth added 14). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":953}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ae4c0f5090783a8e34b6568508868e99baa4acee6929e436a5494da42fccfe"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassUtils.checkConfigurationClassCandidate (cognitive 24): ConfigurationClassUtils.checkConfigurationClassCandidate has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, boolean chains 6, error handling 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassUtils.java"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f6be11fe5a393a6add2a0127004953f88e5d25d603999ed16bae2a405d501c1"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvableType.getGenerics (cognitive 24): ResolvableType.getGenerics has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, loops 9 (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":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":783}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfd73090ce51fefb0f1ea0c1d09eabf71f483c73ab68ce50cb9a6c4c76207736"}},{"ruleId":"D2","level":"warning","message":{"text":"OpDec.getValueInternal (cognitive 24): OpDec.getValueInternal has cognitive complexity 24 (threshold 15). Drivers by points: if/else 21, error handling 3 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDec.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"aef2ba928e50715629eb0da0c1d438b57b58b5e78d29039a3a1955b8a271559b"}},{"ruleId":"D2","level":"warning","message":{"text":"Frame.merge (cognitive 24): Frame.merge has cognitive complexity 24 (threshold 15). Drivers by points: if/else 18, loops 5, 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":1173}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e18a2292d69464c932b19fac31c7fd879cc4c3414779bdb4484d9e2cab63a4f"}},{"ruleId":"D2","level":"warning","message":{"text":"StringUtils.uriDecode (cognitive 24): StringUtils.uriDecode has cognitive complexity 24 (threshold 15). Drivers by points: if/else 14, loops 4, boolean chains 3, error handling 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":"spring-core/src/main/java/org/springframework/util/StringUtils.java"},"region":{"startLine":845}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e06ee98f8e58d5ef34467489c7f169e738035ae54e2fe0550a81481849b35ef"}},{"ruleId":"D2","level":"warning","message":{"text":"JdbcTemplate.getPreparedStatementCallback (cognitive 24): JdbcTemplate.getPreparedStatementCallback has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, loops 6, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":1591}}}],"partialFingerprints":{"codehealthFindingId/v1":"120b3a3543c953078f3c02f799ae1900b056b90f3b74318d904b68974e86cc34"}},{"ruleId":"D2","level":"warning","message":{"text":"RSocketServiceMethod.initResponseFunction (cognitive 24): RSocketServiceMethod.initResponseFunction has cognitive complexity 24 (threshold 15). Drivers by points: ternaries 13, if/else 7, 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":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"64c26a67f3888555bf4356af8aa04b565a76b0e7e8d7a6fa31908c024860dfa0"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultCacheAwareContextLoaderDelegate.loadContext (cognitive 24): DefaultCacheAwareContextLoaderDelegate.loadContext has cognitive complexity 24 (threshold 15). Drivers by points: if/else 16, error handling 5, 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":"spring-test/src/main/java/org/springframework/test/context/cache/DefaultCacheAwareContextLoaderDelegate.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"06b7de01f4e471567b222b7cd9767dbe060f443503957b319db7539f0c94afe1"}},{"ruleId":"D2","level":"warning","message":{"text":"TestContextFailureHandler.handleFailure (cognitive 24): TestContextFailureHandler.handleFailure has cognitive complexity 24 (threshold 15). Drivers by points: if/else 21, 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":"spring-test/src/main/java/org/springframework/test/context/util/TestContextFailureHandler.java"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"27ea665da5f5d55911ea877d75d68b84a41e92cb294d5b67a32197c3172e5e12"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelAttributeMethodProcessor.resolveArgument (cognitive 24): ModelAttributeMethodProcessor.resolveArgument has cognitive complexity 24 (threshold 15). Drivers by points: if/else 20, boolean chains 2, error handling 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":"spring-web/src/main/java/org/springframework/web/method/annotation/ModelAttributeMethodProcessor.java"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"c52a3acd031809bb4afb7ad825993e55b57706000bddcea9bb99faae3d0c017f"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateInfo.parse (cognitive 24): TemplateInfo.parse has cognitive complexity 24 (threshold 15). Drivers by points: if/else 23, 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":"spring-web/src/main/java/org/springframework/web/util/UriTemplate.java"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"fc73a624ba85c7288805b9be92ac4c107472b3bcc8eabca42de052b3402143ba"}},{"ruleId":"D2","level":"warning","message":{"text":"ViewResolutionResultHandler.render (cognitive 24): ViewResolutionResultHandler.render has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, loops 6, error handling 2, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/ViewResolutionResultHandler.java"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"0df256791eb64200e260bc508ba4ffb53cb87e0452bf8b3856e105e390c4a09f"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationDrivenBeanDefinitionParser.getMessageConverters (cognitive 24): AnnotationDrivenBeanDefinitionParser.getMessageConverters has cognitive complexity 24 (threshold 15). Drivers by points: if/else 21, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/config/AnnotationDrivenBeanDefinitionParser.java"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"22f8391741126506ae20441243da75a9b178d17048865b3ed90cc908603e94c4"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractUrlHandlerMapping.unregisterHandler (cognitive 24): AbstractUrlHandlerMapping.unregisterHandler has cognitive complexity 24 (threshold 15). Drivers by points: if/else 24 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractUrlHandlerMapping.java"},"region":{"startLine":198}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4cb8108a0748729afa3ac877bdcb68f9e0cbb58342f93e130c8f1e2d6fde5ec"}},{"ruleId":"D2","level":"warning","message":{"text":"ConcurrentWebSocketSessionDecorator.checkSessionLimits (cognitive 24): ConcurrentWebSocketSessionDecorator.checkSessionLimits has cognitive complexity 24 (threshold 15). Drivers by points: if/else 15, loops 5, match/switch 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":"spring-websocket/src/main/java/org/springframework/web/socket/handler/ConcurrentWebSocketSessionDecorator.java"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1f5171186b47abbd20a14a53af32aec90b1f1429765961d81b37d8c2a14cfb8"}},{"ruleId":"D2","level":"warning","message":{"text":"ServletServerHttpRequest.getHeaders (cognitive 23): ServletServerHttpRequest.getHeaders has cognitive complexity 23 (threshold 15). Drivers by points: if/else 20, error handling 2, 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":"spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c91a5a9c90ccd9df297e8a87c56e5b49c018ac5520b5bed48d4fdd89ac6806c"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentDisposition.tokenize (cognitive 23): ContentDisposition.tokenize has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, loops 5, 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":"spring-web/src/main/java/org/springframework/http/ContentDisposition.java"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"0fa0f1c1bb3f724b9dea1c3ab1a45a18c139b65b32aa52acb6251624e2374889"}},{"ruleId":"D2","level":"warning","message":{"text":"ProxyFactoryBean.initializeAdvisorChain (cognitive 23): ProxyFactoryBean.initializeAdvisorChain has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, boolean chains 3, 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":"spring-aop/src/main/java/org/springframework/aop/framework/ProxyFactoryBean.java"},"region":{"startLine":408}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e28970b7446cbacdb681e89d52d7fd422f62f0b902959f2304f6b60ef507fb9"}},{"ruleId":"D2","level":"warning","message":{"text":"InvocationsRecorderClassTransformer.isTransformationCandidate (cognitive 23): InvocationsRecorderClassTransformer.isTransformationCandidate has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14, loops 8, 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":"spring-core-test/src/main/java/org/springframework/aot/agent/InvocationsRecorderClassTransformer.java"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"1a6f498b1e546b8da5482829a4fb8454a71ebf76a5df5b626e5c70fe4a29818f"}},{"ruleId":"D2","level":"warning","message":{"text":"AutowiredMethodElement.resolveMethodArguments (cognitive 23): AutowiredMethodElement.resolveMethodArguments has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14, loops 5, boolean chains 2, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":851}}}],"partialFingerprints":{"codehealthFindingId/v1":"d470e0a7122d89e1d0591b07c5dd6e9702a76c087f6fb24599c531092c33ad2d"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.getType (cognitive 23): AbstractBeanFactory.getType has cognitive complexity 23 (threshold 15). Drivers by points: if/else 18, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"632de338b2bb3a4b11c10fe1cf26ec7527dc3f7bf3abdf3a0ae534b4a02bcd42"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorResolver.resolveFactoryMethod (cognitive 23): ConstructorResolver.resolveFactoryMethod has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, loops 3, ternaries 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":1090}}}],"partialFingerprints":{"codehealthFindingId/v1":"7eb398fffe810ad015e43f1b4d943de24fac0992f01ceb408b891ed8285ea76b"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanConfigurerSupport.configureBean (cognitive 23): BeanConfigurerSupport.configureBean has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, ternaries 4, boolean chains 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/wiring/BeanConfigurerSupport.java"},"region":{"startLine":122}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3fe5a59a3a1c474e8843286b0078a3e05199d9d00cbf20f40a4d9c4115860af"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.newValue (cognitive 23): AbstractNestablePropertyAccessor.newValue has cognitive complexity 23 (threshold 15). Drivers by points: ternaries 14, if/else 8, 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":878}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3af52e823b3efa7c8ab675e446d586a922369da97d1309bad4ecc854eaefe1e"}},{"ruleId":"D2","level":"warning","message":{"text":"CachedIntrospectionResults.introspectInterfaces (cognitive 23): CachedIntrospectionResults.introspectInterfaces has cognitive complexity 23 (threshold 15). Drivers by points: if/else 16, loops 4, 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":"spring-beans/src/main/java/org/springframework/beans/CachedIntrospectionResults.java"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"abe3223b42a8f68ef73957b132e0e66e5920e2031df03c3f4c10890b87a69e8d"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericTypeAwarePropertyDescriptor.\u003Cinit\u003E (cognitive 23): GenericTypeAwarePropertyDescriptor.\u003Cinit\u003E has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, boolean chains 3, loops 3, ternaries 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":"spring-beans/src/main/java/org/springframework/beans/GenericTypeAwarePropertyDescriptor.java"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ac5cd4d50470857fc75bd6305ad37fd5ef509c03348117db7d2f635b762f598"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyDescriptorUtils.findIndexedPropertyType (cognitive 23): PropertyDescriptorUtils.findIndexedPropertyType has cognitive complexity 23 (threshold 15). Drivers by points: if/else 21, 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":"spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"50a66f0dda60fd5fbde2b49be781bd9d0f0958f5dc450d73233a9e5dcbda7862"}},{"ruleId":"D2","level":"warning","message":{"text":"BasicPropertyDescriptor.getWriteMethod (cognitive 23): BasicPropertyDescriptor.getWriteMethod has cognitive complexity 23 (threshold 15). Drivers by points: if/else 17, boolean chains 3, loops 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":"spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f23e5f867cfb8be70f2a08f13b928359d7c59ccc37450554e3a33629d92142e"}},{"ruleId":"D2","level":"warning","message":{"text":"OpInc.getValueInternal (cognitive 23): OpInc.getValueInternal has cognitive complexity 23 (threshold 15). Drivers by points: if/else 20, error handling 3 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpInc.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"968ec32a7bbf7aef104c19c481dd7929a9d6ab91f80180f42d81eebb59378952"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSpelExpressionParser.maybeEatInlineListOrMap (cognitive 23): InternalSpelExpressionParser.maybeEatInlineListOrMap has cognitive complexity 23 (threshold 15). Drivers by points: loops 11, if/else 10, 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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java"},"region":{"startLine":634}}}],"partialFingerprints":{"codehealthFindingId/v1":"25d8188fa7a6f53e4489d2528dd2890a337336c8522994f13903105e487e97b3"}},{"ruleId":"D2","level":"warning","message":{"text":"MBeanRegistrationSupport.doRegister (cognitive 23): MBeanRegistrationSupport.doRegister has cognitive complexity 23 (threshold 15). Drivers by points: if/else 17, error handling 5, 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":"spring-context/src/main/java/org/springframework/jmx/support/MBeanRegistrationSupport.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"60117adee0b194ed717d718d8840ae7ffc80b6c4f984c51741eb3097667aeb3d"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeEmitter.process_switch (cognitive 23): CodeEmitter.process_switch has cognitive complexity 23 (threshold 15). Drivers by points: loops 12, if/else 9, error handling 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":"spring-core/src/main/java/org/springframework/cglib/core/CodeEmitter.java"},"region":{"startLine":696}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aae183cd9e8411dd3c6024701727ce9a0e6eccfc35ed04a2f3d145d81ebdc51"}},{"ruleId":"D2","level":"warning","message":{"text":"SorterTemplate.quickSortHelper (cognitive 23): SorterTemplate.quickSortHelper has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14, loops 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":"spring-core/src/main/java/org/springframework/cglib/util/SorterTemplate.java"},"region":{"startLine":31}}}],"partialFingerprints":{"codehealthFindingId/v1":"14be74f62eefadfb536e9e65821a440b30364b50ad1194446f32ab3da5301e4c"}},{"ruleId":"D2","level":"warning","message":{"text":"RelayConnectionHandler.forward (cognitive 23): RelayConnectionHandler.forward has cognitive complexity 23 (threshold 15). Drivers by points: if/else 15, boolean chains 4, ternaries 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":877}}}],"partialFingerprints":{"codehealthFindingId/v1":"84adda548e63403fea83ab9722e1a6699144daf54ef2d2d3c62cc6332e27cce9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractDelegatingSmartContextLoader.processContextConfiguration (cognitive 23): AbstractDelegatingSmartContextLoader.processContextConfiguration has cognitive complexity 23 (threshold 15). Drivers by points: if/else 20, 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":"spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"def907bb532669073c191957ba4dfb20baf0c8ff03f9c3604d214c83a39f573e"}},{"ruleId":"D2","level":"warning","message":{"text":"HandlerTypePredicate.test (cognitive 23): HandlerTypePredicate.test has cognitive complexity 23 (threshold 15). Drivers by points: if/else 14, loops 9 (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":"spring-web/src/main/java/org/springframework/web/method/HandlerTypePredicate.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3aa2ec4a24a47f18b584b33928ddc22b936df73170f01a0cb98c08aa12a36c2"}},{"ruleId":"D2","level":"warning","message":{"text":"ReactorExchangeResponseFunction.create (cognitive 23): ReactorExchangeResponseFunction.create has cognitive complexity 23 (threshold 15). Drivers by points: if/else 12, ternaries 9, 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":"spring-web/src/main/java/org/springframework/web/service/invoker/HttpServiceMethod.java"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d7d672d0103fa8b0266dcfc11b5b2dd4264d1e1a1bc4ad027ecc340176980e"}},{"ruleId":"D2","level":"warning","message":{"text":"ProducesRequestCondition.parseExpressions (cognitive 23): ProducesRequestCondition.parseExpressions has cognitive complexity 23 (threshold 15). Drivers by points: ternaries 9, loops 8, if/else 5, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ProducesRequestCondition.java"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"5954e25d5e8d9544c8d26d3a586b7c9eb40e6ea85ba7245cd4b26c86b4d7d813"}},{"ruleId":"D2","level":"warning","message":{"text":"JettyClientHttpRequest.executeInternal (cognitive 22): JettyClientHttpRequest.executeInternal has cognitive complexity 22 (threshold 15). Drivers by points: if/else 10, ternaries 8, error handling 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":"spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequest.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"25fd276d21965a530eff40614333e5ffc37f8a57a6615c39f712ff471ad8967b"}},{"ruleId":"D2","level":"warning","message":{"text":"Jackson2ObjectMapperBuilder.configure (cognitive 22): Jackson2ObjectMapperBuilder.configure has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18, loops 3, boolean chains 1 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java"},"region":{"startLine":698}}}],"partialFingerprints":{"codehealthFindingId/v1":"be57ffbfe3c659eb9ebfb40ce4b30b2fe3be2ebf335dac16db6e279e1445f9b8"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHttpMessageConverter.addDefaultHeaders (cognitive 22): AbstractHttpMessageConverter.addDefaultHeaders has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, ternaries 4, 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":"spring-web/src/main/java/org/springframework/http/converter/AbstractHttpMessageConverter.java"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"81e2abf4b8771e975762a2163e80b649661556d9c50f45cda0f84ef201b254f0"}},{"ruleId":"D2","level":"warning","message":{"text":"JdkDynamicAopProxy.invoke (cognitive 22): JdkDynamicAopProxy.invoke has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, boolean chains 7, 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":"spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb7e40dc8942c5e26c62ee2a99c1bec7ebee98e3e51d6526b4a1595949700e1d"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.determinePrimaryCandidate (cognitive 22): DefaultListableBeanFactory.determinePrimaryCandidate has cognitive complexity 22 (threshold 15). Drivers by points: if/else 19, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":2092}}}],"partialFingerprints":{"codehealthFindingId/v1":"89536154145c9dde802e9b695948aedbdf0b0cbc745c47cdf43c5a97e90f6be8"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.getBeansOfType (cognitive 22): DefaultListableBeanFactory.getBeansOfType has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14, error handling 4, ternaries 2, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":733}}}],"partialFingerprints":{"codehealthFindingId/v1":"f3ca09adb065c7b0da83c7ca52c5d57b135ebf13a1e2c3dfc0cfc8f45ebf6751"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertiesBeanDefinitionReader.registerBeanDefinitions (cognitive 22): PropertiesBeanDefinitionReader.registerBeanDefinitions has cognitive complexity 22 (threshold 15). Drivers by points: if/else 21, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/PropertiesBeanDefinitionReader.java"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5df361ffeafb262685369229b7a12e319c677a47d5f41ba982e9e7e80f235c8"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertySourcesPropertyResolver.getProperty (cognitive 22): PropertySourcesPropertyResolver.getProperty has cognitive complexity 22 (threshold 15). Drivers by points: if/else 18, boolean chains 2, loops 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":"spring-core/src/main/java/org/springframework/core/env/PropertySourcesPropertyResolver.java"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f0b8576940e6d093f586e7d11af1704c851bf5abdee93b2ab5ad5532c0a467c"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationsScanner.getDeclaredAnnotations (cognitive 22): AnnotationsScanner.getDeclaredAnnotations has cognitive complexity 22 (threshold 15). Drivers by points: if/else 13, boolean chains 3, loops 3, ternaries 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationsScanner.java"},"region":{"startLine":432}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb6274c0de3f83d5a7630eda4a18f48b3e6e08d2fb4c3695ca415472bc43a3b8"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationsScanner.processClassHierarchy (cognitive 22): AnnotationsScanner.processClassHierarchy has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, error handling 3, 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationsScanner.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"d312d3c790f0eeaa136259ea501a5e7ac5014a0007b7a3afb076dc442d986043"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceArrayPropertyEditor.setValue (cognitive 22): ResourceArrayPropertyEditor.setValue has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, error handling 4, boolean chains 2, loops 2, ternaries 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":"spring-core/src/main/java/org/springframework/core/io/support/ResourceArrayPropertyEditor.java"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"55c5f87bfc89b71c2e4b9966e67ea98b5f5f28ded1523a419f4abdc550cd3755"}},{"ruleId":"D2","level":"warning","message":{"text":"CollectionFactory.createMap (cognitive 22): CollectionFactory.createMap has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, error handling 6, 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":"spring-core/src/main/java/org/springframework/core/CollectionFactory.java"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb9b16196fe0e90d13560356211aca9f2560bc8b4cb57a383b53fa0414f70605"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodReference.generateCode (cognitive 22): MethodReference.generateCode has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, boolean chains 7, ternaries 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a2aa64d9a79465e9f37c6f94cb3e8cc5deddec7f99e793c0c6c90014500a1c8"}},{"ruleId":"D2","level":"warning","message":{"text":"OpGT.getValueInternal (cognitive 22): OpGT.getValueInternal has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, boolean chains 10 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGT.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"f91c7bcbb4146625e79d2aaf08d263184d57ca3b6a8623a95d96addd64590b9d"}},{"ruleId":"D2","level":"warning","message":{"text":"OpLT.getValueInternal (cognitive 22): OpLT.getValueInternal has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, boolean chains 10 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpLT.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"69d2e9306e64bcfcb2988a45f706d70f158d97f320f638ce1e442fe9ef0a5379"}},{"ruleId":"D2","level":"warning","message":{"text":"ScheduledTasksBeanDefinitionParser.doParse (cognitive 22): ScheduledTasksBeanDefinitionParser.doParse has cognitive complexity 22 (threshold 15). Drivers by points: if/else 17, 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":"spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTasksBeanDefinitionParser.java"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"319a8c2c062243289a5697f83ef292f0850d42dcfa22020b95c8819bc39720e5"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalValidatorFactoryBean.afterPropertiesSet (cognitive 22): LocalValidatorFactoryBean.afterPropertiesSet has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14, error handling 5, loops 2, boolean chains 1 (nesting depth added 6). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/beanvalidation/LocalValidatorFactoryBean.java"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"b807bb77032c54e4e1f8be8305cdfea47a2175832dbd41a08a25f8308df9efc5"}},{"ruleId":"D2","level":"warning","message":{"text":"SpringValidatorAdapter.processConstraintViolations (cognitive 22): SpringValidatorAdapter.processConstraintViolations has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15, error handling 3, loops 3, 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9fdc04fc15cc2ee5bb0bccab43f505c301a499d98aba0ac441a60e364c86145"}},{"ruleId":"D2","level":"warning","message":{"text":"DataBinder.checkRequiredFields (cognitive 22): DataBinder.checkRequiredFields has cognitive complexity 22 (threshold 15). Drivers by points: if/else 16, loops 4, 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":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":1311}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aeb8aa4011e26498c73751fab91eb33ca30cb95ff323c18f781f5121410be41"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readModuleAttributes (cognitive 22): ClassReader.readModuleAttributes has cognitive complexity 22 (threshold 15). Drivers by points: loops 15, if/else 7 (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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"2af464a60cde235e7590767706e95174dba8c3e15ce91580a81b013022d2fd97"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.readRecordComponent (cognitive 22): ClassReader.readRecordComponent has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, loops 10 (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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":897}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf63e67566d0f9ace67f23b4651f8f42647eaea85142934cf7138a1f3c97209d"}},{"ruleId":"D2","level":"warning","message":{"text":"MimeType.isCompatibleWith (cognitive 22): MimeType.isCompatibleWith has cognitive complexity 22 (threshold 15). Drivers by points: if/else 15, 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":"spring-core/src/main/java/org/springframework/util/MimeType.java"},"region":{"startLine":418}}}],"partialFingerprints":{"codehealthFindingId/v1":"aa57cec0ad7384bc267892059af5e010e868b146aba6ac40cea448da31d127d5"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractSqlParameterSource.toString (cognitive 22): AbstractSqlParameterSource.toString has cognitive complexity 22 (threshold 15). Drivers by points: if/else 20, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/AbstractSqlParameterSource.java"},"region":{"startLine":102}}}],"partialFingerprints":{"codehealthFindingId/v1":"a637a939eb502bc36c6fedcaa1fa681635e6d735727b1b212f06f0f2e2a6cbaa"}},{"ruleId":"D2","level":"warning","message":{"text":"SharedEntityManagerInvocationHandler.invoke (cognitive 22): SharedEntityManagerInvocationHandler.invoke has cognitive complexity 22 (threshold 15). Drivers by points: if/else 12, boolean chains 3, ternaries 3, error handling 2, match/switch 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":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"c6c7467217b0e4ef4527f9072857dc9c21fc6d4851d8e37fb63477e6abbbb1c1"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanOverrideBeanFactoryPostProcessor.replaceOrCreateBean (cognitive 22): BeanOverrideBeanFactoryPostProcessor.replaceOrCreateBean has cognitive complexity 22 (threshold 15). Drivers by points: if/else 21, 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":"spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideBeanFactoryPostProcessor.java"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc9da1036fe3e3946b611d7940458d21af1b51301588ac783644fcdffdd655d9"}},{"ruleId":"D2","level":"warning","message":{"text":"AcceptHeaderLocaleContextResolver.resolveSupportedLocale (cognitive 22): AcceptHeaderLocaleContextResolver.resolveSupportedLocale has cognitive complexity 22 (threshold 15). Drivers by points: if/else 14, loops 5, 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":"spring-web/src/main/java/org/springframework/web/server/i18n/AcceptHeaderLocaleContextResolver.java"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"b5b3a564fb0f7e1b06ce97fce3660e686225dc43bd372dbe36dd613c98c734da"}},{"ruleId":"D2","level":"warning","message":{"text":"RegexPathElement.matches (cognitive 22): RegexPathElement.matches has cognitive complexity 22 (threshold 15). Drivers by points: if/else 11, boolean chains 6, ternaries 3, 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":"spring-web/src/main/java/org/springframework/web/util/pattern/RegexPathElement.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"b11e7d9b616b11d6ac24804e8dd8dc831ece4e69e1563637818fc5ca776d7e00"}},{"ruleId":"D2","level":"warning","message":{"text":"19.handle (cognitive 22): 19.handle has cognitive complexity 22 (threshold 15). Drivers by points: if/else 19, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1558}}}],"partialFingerprints":{"codehealthFindingId/v1":"76d990d6ded4a615c4c2dfdadc4dac659f7ead1af82aa3fca835caa1211e043f"}},{"ruleId":"D2","level":"warning","message":{"text":"ProducesRequestCondition.parseExpressions (cognitive 22): ProducesRequestCondition.parseExpressions has cognitive complexity 22 (threshold 15). Drivers by points: ternaries 9, loops 8, if/else 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/ProducesRequestCondition.java"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"710f7f401d52f16092ec12d5a8427b7b250ab73e4bd723076ebe09411ad13404"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractListenerReadPublisher.readAndPublish (cognitive 21): AbstractListenerReadPublisher.readAndPublish has cognitive complexity 21 (threshold 15). Drivers by points: if/else 19, 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":"spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerReadPublisher.java"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"200e4d47b554e8ac45150a77799bb7a662ea469175239a568cac7729a39ffcd9"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJAdviceParameterNameDiscoverer.maybeBindPrimitiveArgsFromPointcutExpression (cognitive 21): AspectJAdviceParameterNameDiscoverer.maybeBindPrimitiveArgsFromPointcutExpression has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13, loops 6, 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":641}}}],"partialFingerprints":{"codehealthFindingId/v1":"43f3e312da5493225649d6df7068ea729321abe1657736a49ec59853a575fdb0"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parseConstructorArgElement (cognitive 21): BeanDefinitionParserDelegate.parseConstructorArgElement has cognitive complexity 21 (threshold 15). Drivers by points: if/else 19, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":774}}}],"partialFingerprints":{"codehealthFindingId/v1":"333716e7764e6f262eedee3c9e76b538c162e5077cf3d7fc263d7c613bff6845"}},{"ruleId":"D2","level":"warning","message":{"text":"AutowiredAnnotationBeanPostProcessor.sortMethodElements (cognitive 21): AutowiredAnnotationBeanPostProcessor.sortMethodElements has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, loops 7, error handling 2, 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"7213462dc66ea85db373a412ef008171056a96b153099236761a35da9e5a1001"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.preInstantiateSingleton (cognitive 21): DefaultListableBeanFactory.preInstantiateSingleton has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, loops 4, error handling 3, ternaries 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"07d93485975f85378fce32b8505cd6344d84fa2a4ab2155f6ea3f2ee0a4b13f8"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanMethodInterceptor.resolveBeanReference (cognitive 21): BeanMethodInterceptor.resolveBeanReference has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, error handling 3, loops 2, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java"},"region":{"startLine":404}}}],"partialFingerprints":{"codehealthFindingId/v1":"2550038329bdc57c3b3682797f6f249f182da92e123668870ce7e5869f7f3abb"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassParser.processConfigurationClass (cognitive 21): ConfigurationClassParser.processConfigurationClass has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, boolean chains 1, error handling 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":248}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4f9567148eaf1ddba8ebe2571aa6234893b5d5a6c472aefd7a40a28bc305f75"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassParser.retrieveBeanMethodMetadata (cognitive 21): ConfigurationClassParser.retrieveBeanMethodMetadata has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, loops 7, error handling 2, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":459}}}],"partialFingerprints":{"codehealthFindingId/v1":"da7c26c018dcb1f5087eb07f3fef730f141c0f48e6f8a8a46e398a6bf58e4ba3"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertySourcesAotContribution.registerRuntimeHints (cognitive 21): PropertySourcesAotContribution.registerRuntimeHints has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, boolean chains 4, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":721}}}],"partialFingerprints":{"codehealthFindingId/v1":"f977f9c64abe7b788b442e51ae0b3c8c34fc5db9523609dd47c91f60d4da75a2"}},{"ruleId":"D2","level":"warning","message":{"text":"ReloadableResourceBundleMessageSource.loadProperties (cognitive 21): ReloadableResourceBundleMessageSource.loadProperties has cognitive complexity 21 (threshold 15). Drivers by points: if/else 20, 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":"spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"b25a2c26f8d2b7885929840381bc6389fa2ac7803d7eedc31fb75b1284858adc"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationUtils.postProcessAnnotationAttributes (cognitive 21): AnnotationUtils.postProcessAnnotationAttributes has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, loops 7 (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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java"},"region":{"startLine":955}}}],"partialFingerprints":{"codehealthFindingId/v1":"bdb966db51b721548a8b54184cc1a43bab600e92a3e352362731e0f99b24fe71"}},{"ruleId":"D2","level":"warning","message":{"text":"SubscriberInputStream.read (cognitive 21): SubscriberInputStream.read has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15, ternaries 4, error handling 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":"spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"3cb1dafe40997b69d1d2d8f6bb4b485662db6257dcbaf23f61c65113b2beee93"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleAsyncTaskExecutor.close (cognitive 21): SimpleAsyncTaskExecutor.close has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17, error handling 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":"spring-core/src/main/java/org/springframework/core/task/SimpleAsyncTaskExecutor.java"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7719e345584c688be7bae3d9d04faee7585d473a7c9231e1444aff258516da5"}},{"ruleId":"D2","level":"warning","message":{"text":"FieldAwareConstructorParameter.getParameterAnnotations (cognitive 21): FieldAwareConstructorParameter.getParameterAnnotations has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, loops 7, error handling 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":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":886}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca031093dc5a8bdeede849c3c8a362f9669eef2adaa590a4cf5921a8e9196069"}},{"ruleId":"D2","level":"warning","message":{"text":"KotlinDelegate.forMethodReturnType (cognitive 21): KotlinDelegate.forMethodReturnType has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10, ternaries 8, loops 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":"spring-core/src/main/java/org/springframework/core/Nullness.java"},"region":{"startLine":188}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c9ae01aa040d0b19b8cacee98633012823812e8eb59eb6f8b9258a1f9d8017b"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvableType.determineUnresolvableGenerics (cognitive 21): ResolvableType.determineUnresolvableGenerics has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13, boolean chains 3, loops 3, error handling 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":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":612}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e50cf996373055a4aa8ced9041340d25daa0d9bdf506e12e758138765f015f0"}},{"ruleId":"D2","level":"warning","message":{"text":"ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization (cognitive 21): ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, boolean chains 6, 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":"spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java"},"region":{"startLine":277}}}],"partialFingerprints":{"codehealthFindingId/v1":"da3e85a6e5ca4b861b24ae2f5248e043250cfac3daf7c8bf34a7fe306d96eb09"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractPlatformTransactionManager.processCommit (cognitive 21): AbstractPlatformTransactionManager.processCommit has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, error handling 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":"spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"},"region":{"startLine":766}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd2cf66c9a7e9048469616b80131c1f1e828f70ff3b7a07d8ec2c1fa4f41b2aa"}},{"ruleId":"D2","level":"warning","message":{"text":"DateFormatter.parse (cognitive 21): DateFormatter.parse has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, error handling 5, loops 3, 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":"spring-context/src/main/java/org/springframework/format/datetime/DateFormatter.java"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"26ffb345f023cc35bf63a888bf439f076e2f9963f575bcb72e5327b0834a0523"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardScriptFactory.getScriptedObject (cognitive 21): StandardScriptFactory.getScriptedObject has cognitive complexity 21 (threshold 15). Drivers by points: error handling 8, if/else 7, ternaries 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":"spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java"},"region":{"startLine":140}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b7bf3705b700848ef41d437853b773b5a4c5afb0ae0c185311c2654a6ec515e"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.putFrame (cognitive 21): MethodWriter.putFrame has cognitive complexity 21 (threshold 15). Drivers by points: if/else 7, ternaries 7, match/switch 3, 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1860}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc256ebe3c6472e3688e0595293d23521e491bbeed1b1e7b67c2a19c2018bda9"}},{"ruleId":"D2","level":"warning","message":{"text":"Generator.create (cognitive 21): Generator.create has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15, loops 4, boolean chains 1, 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":"spring-core/src/main/java/org/springframework/cglib/proxy/Mixin.java"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f4cd64e151be8d77d4c0c6004da6ce7f902a3b2a00b11efe114f7bef9533c42"}},{"ruleId":"D2","level":"warning","message":{"text":"PatternMatchUtils.simpleMatch (cognitive 21): PatternMatchUtils.simpleMatch has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, ternaries 5, boolean chains 2, 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":"spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3453003bc71f292f428e6b1bd93f6b3707dbd0068dd31ca83b2b5e33bb448960"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericTableMetaDataProvider.findTableMetaData (cognitive 21): GenericTableMetaDataProvider.findTableMetaData has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17, ternaries 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java"},"region":{"startLine":311}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e9196b6b2c02ac3ed3d39c1e35b9f51e4a04e0a16982c3953251dc520fd0c5d"}},{"ruleId":"D2","level":"warning","message":{"text":"JdbcUtils.getResultSetValue (cognitive 21): JdbcUtils.getResultSetValue has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java"},"region":{"startLine":276}}}],"partialFingerprints":{"codehealthFindingId/v1":"76305df1b8b76b054f373516baac7f2c631801cbcd858d6f06f99f6cab263868"}},{"ruleId":"D2","level":"warning","message":{"text":"CachedSessionInvocationHandler.getCachedConsumer (cognitive 21): CachedSessionInvocationHandler.getCachedConsumer has cognitive complexity 21 (threshold 15). Drivers by points: if/else 13, ternaries 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":"spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java"},"region":{"startLine":446}}}],"partialFingerprints":{"codehealthFindingId/v1":"84f0eed78938d8901d2448c1eae4ba73522e6ee5372131a4d5eb79d3f3f365a0"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMethodMessageHandler.initHandlerMethods (cognitive 21): AbstractMethodMessageHandler.initHandlerMethods has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, error handling 3, loops 3, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"e274dc0d90e34c34a1f6e169154a9b13481d3d16f4acc17f147a33ae8ff757ee"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultPersistenceUnitManager.preparePersistenceUnitInfos (cognitive 21): DefaultPersistenceUnitManager.preparePersistenceUnitInfos has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"a77c64cd09734003b44bb81d0e7acd809e3fdcf53528507f16081533b58f3437"}},{"ruleId":"D2","level":"warning","message":{"text":"ExpandedQuery.bind (cognitive 21): ExpandedQuery.bind has cognitive complexity 21 (threshold 15). Drivers by points: loops 12, if/else 9 (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":"spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java"},"region":{"startLine":560}}}],"partialFingerprints":{"codehealthFindingId/v1":"996bc59cb4b58b3bcf01c9c47967f09b5dbb9a17d6854051648f785f5304794d"}},{"ruleId":"D2","level":"warning","message":{"text":"TestContextAotGenerator.processAheadOfTime (cognitive 21): TestContextAotGenerator.processAheadOfTime has cognitive complexity 21 (threshold 15). Drivers by points: if/else 19, error handling 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":"spring-test/src/main/java/org/springframework/test/context/aot/TestContextAotGenerator.java"},"region":{"startLine":239}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fd42cf302bfbd143b63926b37bdacebe9e0a8f655a699c4ec5514be48d182a3"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractExpressionEvaluatingCondition.evaluateAnnotation (cognitive 21): AbstractExpressionEvaluatingCondition.evaluateAnnotation has cognitive complexity 21 (threshold 15). Drivers by points: if/else 12, ternaries 8, 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":"spring-test/src/main/java/org/springframework/test/context/junit/jupiter/AbstractExpressionEvaluatingCondition.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"337c7aa0e37ff1caf5ccb9658116fe6ad21c82e07a181ef28fc5e2f61b683484"}},{"ruleId":"D2","level":"warning","message":{"text":"ActiveProfilesUtils.resolveActiveProfiles (cognitive 21): ActiveProfilesUtils.resolveActiveProfiles has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, loops 4, error handling 3, ternaries 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":"spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"abdeecf06ce685b75f383eaa1a67a8c25e5e7d0aee20de561e613c29f28395ce"}},{"ruleId":"D2","level":"warning","message":{"text":"WebApplicationContextUtils.registerEnvironmentBeans (cognitive 21): WebApplicationContextUtils.registerEnvironmentBeans has cognitive complexity 21 (threshold 15). Drivers by points: if/else 10, loops 9, 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":"spring-web/src/main/java/org/springframework/web/context/support/WebApplicationContextUtils.java"},"region":{"startLine":218}}}],"partialFingerprints":{"codehealthFindingId/v1":"6365d45f4dec35a89469ceb9a55221dbbd2e718c5f2173c43c789c48dd6e9190"}},{"ruleId":"D2","level":"warning","message":{"text":"CorsConfiguration.checkHeaders (cognitive 21): CorsConfiguration.checkHeaders has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, loops 5, 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":"spring-web/src/main/java/org/springframework/web/cors/CorsConfiguration.java"},"region":{"startLine":724}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e51a05be0f4c42867e04acebcd00562a06ba448902be119f60568494277b981"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNamedValueMethodArgumentResolver.resolveArgument (cognitive 21): AbstractNamedValueMethodArgumentResolver.resolveArgument has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15, boolean chains 6 (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":"spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ecee1072afeb42ec716cf52443257ae64a0ee8fd082e99c10d39abe77d2932a"}},{"ruleId":"D2","level":"warning","message":{"text":"HandlerMethodValidationException.visitResults (cognitive 21): HandlerMethodValidationException.visitResults has cognitive complexity 21 (threshold 15). Drivers by points: if/else 20, 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":"spring-web/src/main/java/org/springframework/web/method/annotation/HandlerMethodValidationException.java"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"85103ec10b4ebf3c71b8097b5c77e7d76db7dfcd78ed4f34c98eeb23a9555f7e"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalPathPatternParser.skipCaptureRegex (cognitive 21): InternalPathPatternParser.skipCaptureRegex has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16, boolean chains 4, 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":"spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"e36d48b2f9962238238703a63635212603415c7e939f66efe37f5b94a5a61ea8"}},{"ruleId":"D2","level":"warning","message":{"text":"PathPattern.combine (cognitive 21): PathPattern.combine has cognitive complexity 21 (threshold 15). Drivers by points: if/else 11, boolean chains 5, ternaries 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":"spring-web/src/main/java/org/springframework/web/util/pattern/PathPattern.java"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"13019b8968305c2bed502051f44ac0e42c33b5b39a738a02095ac61574d167d9"}},{"ruleId":"D2","level":"warning","message":{"text":"UriTemplateEncoder.apply (cognitive 21): UriTemplateEncoder.apply has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, 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":"spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java"},"region":{"startLine":779}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada5f98be20455cf508d895fd85fc1c0af9ace33f919351f18f7c4ef662ead18"}},{"ruleId":"D2","level":"warning","message":{"text":"5.handle (cognitive 21): 5.handle has cognitive complexity 21 (threshold 15). Drivers by points: if/else 18, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1370}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f569ba3e85ff934f7f338f51957695dc142eee537957eca33aeb87681b0bc2b"}},{"ruleId":"D2","level":"warning","message":{"text":"9.handle (cognitive 21): 9.handle has cognitive complexity 21 (threshold 15). Drivers by points: if/else 16, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1421}}}],"partialFingerprints":{"codehealthFindingId/v1":"67223c9663bbc3cdb177d3bf3267ab2660a56e73335357e1b72c12b1582eb233"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHandlerMethodMapping.lookupHandlerMethod (cognitive 21): AbstractHandlerMethodMapping.lookupHandlerMethod has cognitive complexity 21 (threshold 15). Drivers by points: if/else 21 (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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/AbstractHandlerMethodMapping.java"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"2738c972aae5efb648f7dd1e3c6899b96b63a2bb84fc720d53dba00df236e129"}},{"ruleId":"D2","level":"warning","message":{"text":"InvocableHandlerMethod.invoke (cognitive 21): InvocableHandlerMethod.invoke has cognitive complexity 21 (threshold 15). Drivers by points: if/else 9, ternaries 5, boolean chains 4, error handling 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"12ca7433869df8f2adfc2aeb8375b7d7cdd433837bbbe4f1384bbeb5c569997a"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptTemplateView.getResource (cognitive 21): ScriptTemplateView.getResource has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, error handling 3, boolean chains 2, loops 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/script/ScriptTemplateView.java"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8317fbeae03167ad05052464f6daedfa469213a0f7b9d64aad68c1107c7a9ba"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHandlerMethodMapping.lookupHandlerMethod (cognitive 21): AbstractHandlerMethodMapping.lookupHandlerMethod has cognitive complexity 21 (threshold 15). Drivers by points: if/else 21 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMethodMapping.java"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed399e637c93b8f4794c6aee508b811e0b243406e0e46016e94b2404a7c0e472"}},{"ruleId":"D2","level":"warning","message":{"text":"ConsumesRequestCondition.parseExpressions (cognitive 21): ConsumesRequestCondition.parseExpressions has cognitive complexity 21 (threshold 15). Drivers by points: loops 8, ternaries 7, if/else 5, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ConsumesRequestCondition.java"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f0b393d56cb3852c1e7a8b5f19b73c7fc03669fcdd935af5f329af298bf04a5"}},{"ruleId":"D2","level":"warning","message":{"text":"ResponseEntityExceptionHandler.handleException (cognitive 21): ResponseEntityExceptionHandler.handleException 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ResponseEntityExceptionHandler.java"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"4344efa4f0e1a5a71be938f76a86f7d4e985ed88b49059c3d1ad63a961884743"}},{"ruleId":"D2","level":"warning","message":{"text":"FormTag.resolveAction (cognitive 21): FormTag.resolveAction has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17, error handling 3, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/FormTag.java"},"region":{"startLine":608}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6936e38776fcde2e72819d09cbdd8a662a4dbc64e5726df3e352a9e7e906458"}},{"ruleId":"D2","level":"warning","message":{"text":"UrlTag.replaceUriTemplateParams (cognitive 21): UrlTag.replaceUriTemplateParams has cognitive complexity 21 (threshold 15). Drivers by points: error handling 7, ternaries 7, if/else 6, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"2147258f0e47ea1f4fc4c7cd01a4f594cc74e16b7ef46824d259ba666c5ea8b9"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptTemplateView.getResource (cognitive 21): ScriptTemplateView.getResource has cognitive complexity 21 (threshold 15). Drivers by points: if/else 14, error handling 3, boolean chains 2, loops 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/script/ScriptTemplateView.java"},"region":{"startLine":339}}}],"partialFingerprints":{"codehealthFindingId/v1":"9244677acb140997bb1471490774a4483342e2961e361bdbc55fcf569382f276"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentNegotiatingViewResolver.getBestView (cognitive 21): ContentNegotiatingViewResolver.getBestView has cognitive complexity 21 (threshold 15). Drivers by points: if/else 17, loops 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java"},"region":{"startLine":331}}}],"partialFingerprints":{"codehealthFindingId/v1":"5cd20de8917bab29f610aab25b8d6d09462c797a2371166dc517b6815bf619b5"}},{"ruleId":"D2","level":"warning","message":{"text":"SubProtocolWebSocketHandler.checkSessions (cognitive 21): SubProtocolWebSocketHandler.checkSessions has cognitive complexity 21 (threshold 15). Drivers by points: if/else 15, error handling 3, loops 2, 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":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/SubProtocolWebSocketHandler.java"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"26d299f4d110df21d804b77ef9292dafd4f0b6e2bf7c99b2bce8b3a0710387c9"}},{"ruleId":"D2","level":"warning","message":{"text":"SockJsFrame.\u003Cinit\u003E (cognitive 21): SockJsFrame.\u003Cinit\u003E has cognitive complexity 21 (threshold 15). Drivers by points: ternaries 15, if/else 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/SockJsFrame.java"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"198bb57f87948e18d4923b7cf85e370f979f1c0924725f58c80d9d4c0058eab0"}},{"ruleId":"D2","level":"warning","message":{"text":"SubscriberInputStream.getNextOrAwait (cognitive 20): SubscriberInputStream.getNextOrAwait has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17, loops 2, 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":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":317}}}],"partialFingerprints":{"codehealthFindingId/v1":"185e7c621f88b6c0e16f12ed72db241b2703cb6741609f84a9852ee06f0602d3"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultServerRequestObservationConvention.uri (cognitive 20): DefaultServerRequestObservationConvention.uri has cognitive complexity 20 (threshold 15). Drivers by points: if/else 19, 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":"spring-web/src/main/java/org/springframework/http/server/reactive/observation/DefaultServerRequestObservationConvention.java"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e72aecf2a0cf7b459b55beb465de26fbd4d8114faff16e300a72cd74c98b03b"}},{"ruleId":"D2","level":"warning","message":{"text":"ProxiedInterfacesCache.\u003Cinit\u003E (cognitive 20): ProxiedInterfacesCache.\u003Cinit\u003E has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, loops 3, 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":"spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"79b59ced56b934241a0191f3162b691335bf0695a069aa4cc71d0ec887957364"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parsePropertyValue (cognitive 20): BeanDefinitionParserDelegate.parsePropertyValue has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, boolean chains 5, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":904}}}],"partialFingerprints":{"codehealthFindingId/v1":"46e2f934f9a7dc0e0546e16c1e9beee4f38826464092966a2637c109eedc5c52"}},{"ruleId":"D2","level":"warning","message":{"text":"InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata (cognitive 20): InitDestroyAnnotationBeanPostProcessor.buildLifecycleMetadata has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, boolean chains 5, loops 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8ef51d7445683881a097da4bf3b8ec0bf1cd883750d99902297d661547f62a0"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanDefinition.overrideFrom (cognitive 20): AbstractBeanDefinition.overrideFrom has cognitive complexity 20 (threshold 15). Drivers by points: if/else 20 (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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"89664c1032deb1b4e97ca5b11ed21ac5f93328a0eb9c8c1e576038bbb22fb3a3"}},{"ruleId":"D2","level":"warning","message":{"text":"PathEditor.setAsText (cognitive 20): PathEditor.setAsText has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10, error handling 7, 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":"spring-beans/src/main/java/org/springframework/beans/propertyeditors/PathEditor.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c57e21acfd2e204dcb3339eff83938987e5a35b0451f3eca57f49ff9f75d204"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNestablePropertyAccessor.getPropertyNameTokens (cognitive 20): AbstractNestablePropertyAccessor.getPropertyNameTokens has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14, boolean chains 4, loops 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":928}}}],"partialFingerprints":{"codehealthFindingId/v1":"3475d10671092687f2e8e68fe1ecd6b68ab95fa9657a705beec1127060bf7755"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractPropertyAccessor.setPropertyValues (cognitive 20): AbstractPropertyAccessor.setPropertyValues has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12, error handling 6, loops 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":"spring-beans/src/main/java/org/springframework/beans/AbstractPropertyAccessor.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"a05fb1c875dba3e188558c0fdfc2af5e5b2386675b3be4af1c3d66eeffe6f187"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeConverterDelegate.doConvertValue (cognitive 20): TypeConverterDelegate.doConvertValue has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, 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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"9a1109d3eefc1694eef0abd6973fc422857c097aea21bd3e2de3fd4bcf207e7e"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanMethodInterceptor.enhanceFactoryBean (cognitive 20): BeanMethodInterceptor.enhanceFactoryBean has cognitive complexity 20 (threshold 15). Drivers by points: if/else 10, ternaries 8, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassEnhancer.java"},"region":{"startLine":523}}}],"partialFingerprints":{"codehealthFindingId/v1":"cd9207f0ceaf742a555b957ca3185e0441bf8549538b7983c464a35654b079a5"}},{"ruleId":"D2","level":"warning","message":{"text":"SourceClass.getAnnotations (cognitive 20): SourceClass.getAnnotations has cognitive complexity 20 (threshold 15). Drivers by points: error handling 8, if/else 8, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":1082}}}],"partialFingerprints":{"codehealthFindingId/v1":"5324979d1259f8b01fc75c350c7e23f1b1300d3adda875767c6f9d881bc4da35"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationTypeMapping.processAliases (cognitive 20): AnnotationTypeMapping.processAliases has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12, loops 7, 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd75b0bf277706bf9cb8d7cce62978462d592ca6c803a9a8600a7e58a289dc35"}},{"ruleId":"D2","level":"warning","message":{"text":"SubscriberInputStream.getNextOrAwait (cognitive 20): SubscriberInputStream.getNextOrAwait has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17, loops 2, 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":"spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java"},"region":{"startLine":294}}}],"partialFingerprints":{"codehealthFindingId/v1":"8321d952d5b8bbcfca16e25c61f2aa910c4e67a11bb7076136cd5bde041af603"}},{"ruleId":"D2","level":"warning","message":{"text":"Conventions.getVariableNameForReturnType (cognitive 20): Conventions.getVariableNameForReturnType has cognitive complexity 20 (threshold 15). Drivers by points: if/else 18, 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":"spring-core/src/main/java/org/springframework/core/Conventions.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"bc6bf9cdbe7add408a676ea2c7136c6f76a5ed8d61b36969815fa6c0adc765b3"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericTypeResolver.buildTypeVariableMap (cognitive 20): GenericTypeResolver.buildTypeVariableMap has cognitive complexity 20 (threshold 15). Drivers by points: if/else 9, loops 9, 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":"spring-core/src/main/java/org/springframework/core/GenericTypeResolver.java"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"4206b2ad8ca45c80c1e9f67754228fe5b8c746e7fa1e21f34e60d7e4cf9cf2d7"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodParameter.getGenericParameterType (cognitive 20): MethodParameter.getGenericParameterType has cognitive complexity 20 (threshold 15). Drivers by points: ternaries 10, if/else 7, 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":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"b47ac5a1ead8fe815f775488fecae18881959bb1d8709a27cd83746c17578bc0"}},{"ruleId":"D2","level":"warning","message":{"text":"ResolvableType.resolveVariable (cognitive 20): ResolvableType.resolveVariable has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, loops 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":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":945}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc16377380de66b22a3ca898419995d1ed7d71ff44e519c2d4d480716089f8e7"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorReference.createNewInstance (cognitive 20): ConstructorReference.createNewInstance has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, error handling 4, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java"},"region":{"startLine":127}}}],"partialFingerprints":{"codehealthFindingId/v1":"5f93dc3fa67c40e83abc210ea37152b973ae4d4e000cedfec7a56636a87af8ff"}},{"ruleId":"D2","level":"warning","message":{"text":"OpGE.getValueInternal (cognitive 20): OpGE.getValueInternal has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, boolean chains 9 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGE.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"510fd6eb62388540b35dae4cb64a5af1e75a5c357792692d8dd77557a4a1483f"}},{"ruleId":"D2","level":"warning","message":{"text":"OpLE.getValueInternal (cognitive 20): OpLE.getValueInternal has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, boolean chains 9 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpLE.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"237c4e0e4551e57fecf114aa88a119cc7cd85fa739a31890b3fd804e84572e3e"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionAspectSupport.completeTransactionAfterThrowing (cognitive 20): TransactionAspectSupport.completeTransactionAfterThrowing has cognitive complexity 20 (threshold 15). Drivers by points: error handling 12, if/else 6, 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":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"025ddc294b28e5a085ae623a0f55257c95e0c1fab94984602ce5f1083b53a8d7"}},{"ruleId":"D2","level":"warning","message":{"text":"WebLogicJtaTransactionManager.doJtaBegin (cognitive 20): WebLogicJtaTransactionManager.doJtaBegin has cognitive complexity 20 (threshold 15). Drivers by points: error handling 10, if/else 9, 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":"spring-tx/src/main/java/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"589d66909a9efa7e1a0be6f6c6e2f83e6633c8167668abe4ffa1712ad4b1b799"}},{"ruleId":"D2","level":"warning","message":{"text":"DataBinder.validateConstructorArgument (cognitive 20): DataBinder.validateConstructorArgument has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, error handling 3, loops 3, 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":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":1169}}}],"partialFingerprints":{"codehealthFindingId/v1":"d98d7446011ce0cac0efaeb1357dcde2353628616df999c0d87e8d10778a9b49"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassReader.computeImplicitFrame (cognitive 20): ClassReader.computeImplicitFrame has cognitive complexity 20 (threshold 15). Drivers by points: loops 11, if/else 7, match/switch 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":3221}}}],"partialFingerprints":{"codehealthFindingId/v1":"02666747cc16186ab1278991c86d18684918cb95802c4bbeab5d55d799031725"}},{"ruleId":"D2","level":"warning","message":{"text":"AntPatternComparator.compare (cognitive 20): AntPatternComparator.compare has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, boolean chains 5. To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":843}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e7ef163364c1cfdb1faa428dd594f082ae37d51430728597713d654404ec49c"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectUtils.nullSafeHashCode (cognitive 20): ObjectUtils.nullSafeHashCode has cognitive complexity 20 (threshold 15). Drivers by points: if/else 20 (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":"spring-core/src/main/java/org/springframework/util/ObjectUtils.java"},"region":{"startLine":426}}}],"partialFingerprints":{"codehealthFindingId/v1":"721c59fd4de5e37e1b7808205abd18fdda87f66cd05307b63c4621fd75ed221b"}},{"ruleId":"D2","level":"warning","message":{"text":"StringUtils.cleanPath (cognitive 20): StringUtils.cleanPath has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, loops 2, boolean chains 1, ternaries 1 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition, and where an else follows a branch that already returns, drop the trailing else and let the rest of the body continue at one level."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/StringUtils.java"},"region":{"startLine":735}}}],"partialFingerprints":{"codehealthFindingId/v1":"72b34090763da53d32cf63bb78d456646d739f5aa8bc9921dbf25cc7b8ac5ebc"}},{"ruleId":"D2","level":"warning","message":{"text":"CallMetaDataProviderFactory.createMetaDataProvider (cognitive 20): CallMetaDataProviderFactory.createMetaDataProvider has cognitive complexity 20 (threshold 15). Drivers by points: if/else 19, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataProviderFactory.java"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe6869ed69a3fc5bb7912305c3c0d8c82e3abd55514f3197ec4d64dd1ddd9d1b"}},{"ruleId":"D2","level":"warning","message":{"text":"TableMetaDataContext.createInsertString (cognitive 20): TableMetaDataContext.createInsertString has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/TableMetaDataContext.java"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"68f89f25741210616003e2280570b1a993b8839fa760fa22e506db5647907092"}},{"ruleId":"D2","level":"warning","message":{"text":"SQLErrorCodeSQLExceptionTranslator.createCustomException (cognitive 20): SQLErrorCodeSQLExceptionTranslator.createCustomException has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, boolean chains 5, error handling 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodeSQLExceptionTranslator.java"},"region":{"startLine":330}}}],"partialFingerprints":{"codehealthFindingId/v1":"495b10236061b55fbf64a274042f3d8d2cc3d888fddd74787018cd4e7e67b2e1"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultJmsActivationSpecFactory.determineActivationSpecClass (cognitive 20): DefaultJmsActivationSpecFactory.determineActivationSpecClass has cognitive complexity 20 (threshold 15). Drivers by points: if/else 13, error handling 7 (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":"spring-jms/src/main/java/org/springframework/jms/listener/endpoint/DefaultJmsActivationSpecFactory.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c2f84e792582e4b10da6f8d089b0ce15ec5b6200873c58c271429b0ed72737f"}},{"ruleId":"D2","level":"warning","message":{"text":"AsyncMessageListenerInvoker.executeOngoingLoop (cognitive 20): AsyncMessageListenerInvoker.executeOngoingLoop has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12, error handling 3, loops 3, 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":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":1436}}}],"partialFingerprints":{"codehealthFindingId/v1":"64290dbb892950ebb72e808cbaf9360846a95d5e457734953cc15801fb1ac6bb"}},{"ruleId":"D2","level":"warning","message":{"text":"HibernateJpaVendorAdapter.buildJpaPropertyMap (cognitive 20): HibernateJpaVendorAdapter.buildJpaPropertyMap has cognitive complexity 20 (threshold 15). Drivers by points: if/else 20 (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":"spring-orm/src/main/java/org/springframework/orm/jpa/vendor/HibernateJpaVendorAdapter.java"},"region":{"startLine":164}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f8f21094e4a10529cb9f9bc2587eeeec94df20632d022212b8fdc437e55c1c3"}},{"ruleId":"D2","level":"warning","message":{"text":"JpaTransactionManager.doBegin (cognitive 20): JpaTransactionManager.doBegin has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, boolean chains 2, error handling 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/JpaTransactionManager.java"},"region":{"startLine":386}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff4850632671bde5b1e60ce56acb578bfc0155eb1ba2564278b318a55bf92eea"}},{"ruleId":"D2","level":"warning","message":{"text":"Jaxb2Marshaller.processSource (cognitive 20): Jaxb2Marshaller.processSource has cognitive complexity 20 (threshold 15). Drivers by points: if/else 12, error handling 7, 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":"spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java"},"region":{"startLine":867}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1f61e0b295f6c24102451cd9608a78a3699320ae3630f5883c672e36673ee8f"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpMessageContentConverter.convert (cognitive 20): HttpMessageContentConverter.convert has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, ternaries 4, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/test/http/HttpMessageContentConverter.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"77566eb06394cc398b4832c62bd8fc558294720f4ca27945a113fbe7c40e0655"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultJsonConverterDelegate.read (cognitive 20): DefaultJsonConverterDelegate.read has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, ternaries 4, loops 1 (nesting depth added 12). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/test/json/DefaultJsonConverterDelegate.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4de8eee469787f93b854f7f1011e62f816f845361bda8f75ce65196bdf61cf8"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMockMvcBuilder.build (cognitive 20): AbstractMockMvcBuilder.build has cognitive complexity 20 (threshold 15). Drivers by points: if/else 15, error handling 3, 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":"spring-test/src/main/java/org/springframework/test/web/servlet/setup/AbstractMockMvcBuilder.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"424c35d51947d5cd4a9530b438b476418894089590749af1c0741f1885783535"}},{"ruleId":"D2","level":"warning","message":{"text":"ServletRequestValueResolver.getMultipartValue (cognitive 20): ServletRequestValueResolver.getMultipartValue has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, ternaries 8, 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":"spring-web/src/main/java/org/springframework/web/bind/ServletRequestDataBinder.java"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"36e26863b90656e561a047b17d8f151f01463df782622572480529818d4c0429"}},{"ruleId":"D2","level":"warning","message":{"text":"WhatWgUrlParser.isDoubleDotPathSegment (cognitive 20): WhatWgUrlParser.isDoubleDotPathSegment 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":602}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ba2798f9d7c78cbdcf04ffb209e5745a227bedb8be24d20e4cfc53abeea9e8"}},{"ruleId":"D2","level":"warning","message":{"text":"7.handle (cognitive 20): 7.handle has cognitive complexity 20 (threshold 15). Drivers by points: if/else 11, boolean chains 7, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1603}}}],"partialFingerprints":{"codehealthFindingId/v1":"17796f7a555daf347f6f4fb413e8bc3fdb84b4793a08a8e8b6bc104716644166"}},{"ruleId":"D2","level":"warning","message":{"text":"ConsumesRequestCondition.parseExpressions (cognitive 20): ConsumesRequestCondition.parseExpressions has cognitive complexity 20 (threshold 15). Drivers by points: loops 8, ternaries 7, if/else 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/ConsumesRequestCondition.java"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9cc05c1293785eaa8d6232b9ff8c73ca6fa1dbf418469c22a591748ae9a00d9"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHandlerMapping.getHandler (cognitive 20): AbstractHandlerMapping.getHandler has cognitive complexity 20 (threshold 15). Drivers by points: if/else 14, boolean chains 3, ternaries 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java"},"region":{"startLine":542}}}],"partialFingerprints":{"codehealthFindingId/v1":"0818c0e9b67543bff3f501ccaa40c941ec989fc0da0a38c326afbbca97a6e8d7"}},{"ruleId":"D2","level":"warning","message":{"text":"SelectTag.writeTagContent (cognitive 20): SelectTag.writeTagContent has cognitive complexity 20 (threshold 15). Drivers by points: ternaries 12, if/else 8 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/SelectTag.java"},"region":{"startLine":392}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f544034abaeb9e5967e86822e80483ef292ef468ce08f9e7f0093fd3dba339f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractCachingViewResolver.resolveViewName (cognitive 20): AbstractCachingViewResolver.resolveViewName has cognitive complexity 20 (threshold 15). Drivers by points: if/else 16, boolean chains 2, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/AbstractCachingViewResolver.java"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb2d4d22b4317e27fb24125a1c2fc8d264d3264a09908259c2bc896f17bc9858"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHandshakeHandler.doHandshake (cognitive 20): AbstractHandshakeHandler.doHandshake has cognitive complexity 20 (threshold 15). Drivers by points: if/else 17, boolean chains 2, 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":"spring-websocket/src/main/java/org/springframework/web/socket/server/support/AbstractHandshakeHandler.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c6aadb0e31a3886625355edd192dc22c7f9158961e9cc553ee7da4b7272ed8a"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultMessageSizeReader.readMessageSize (cognitive 19): DefaultMessageSizeReader.readMessageSize has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, loops 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":"spring-web/src/main/java/org/springframework/http/codec/protobuf/ProtobufDecoder.java"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"0abb63ef0efada72441d589ca94d33348dff90605a5a0b69149ae8866049f68f"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultServerRequestObservationConvention.uri (cognitive 19): DefaultServerRequestObservationConvention.uri has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19 (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":"spring-web/src/main/java/org/springframework/http/server/observation/DefaultServerRequestObservationConvention.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"aea722af8aeac464c261040eac3bbfad86d9527559e474cecd61472b856c8467"}},{"ruleId":"D2","level":"warning","message":{"text":"OpenTelemetryServerRequestObservationConvention.pathTemplate (cognitive 19): OpenTelemetryServerRequestObservationConvention.pathTemplate has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19 (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":"spring-web/src/main/java/org/springframework/http/server/observation/OpenTelemetryServerRequestObservationConvention.java"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bc731de45d35caa5408abdb327b21e7af831b464ab13df1735c3e78b07abcd0"}},{"ruleId":"D2","level":"warning","message":{"text":"3.onWritePossible (cognitive 19): 3.onWritePossible has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, error handling 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":"spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerWriteProcessor.java"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"292d8a65333bee1ad57777dacc7ea6571c66d708b24d31a3d2dfc101a79d3bd5"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAdvisingBeanPostProcessor.postProcessAfterInitialization (cognitive 19): AbstractAdvisingBeanPostProcessor.postProcessAfterInitialization has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, boolean chains 5 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/framework/AbstractAdvisingBeanPostProcessor.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"ae89634022d7ca02340f8a0bd21b4a149431ae792d057d7517aa63cc71c474d7"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceEntityResolver.resolveEntity (cognitive 19): ResourceEntityResolver.resolveEntity has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, boolean chains 2, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/ResourceEntityResolver.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"87f6447e387fad828b64af221333f9260ddfffb8ab04a6bc1272f1f6a3e1d092"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionValueResolver.resolveReference (cognitive 19): BeanDefinitionValueResolver.resolveReference has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, ternaries 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionValueResolver.java"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed886b3e32ebdcc62850d316270e636716cf334747260eb94561ad3983d534e4"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.determineAutowireCandidate (cognitive 19): DefaultListableBeanFactory.determineAutowireCandidate has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, loops 5, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":2038}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b17496e094f106a834245827bc0fcb77b618d267f2c6dc7aba950dc75042398"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.findAnnotationOnBean (cognitive 19): DefaultListableBeanFactory.findAnnotationOnBean has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":807}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f3fa4bf0e0ea8314c95f7183f72890a248adc99edc538bad12901e68999db44"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.logBeanDefinitionOverriding (cognitive 19): DefaultListableBeanFactory.logBeanDefinitionOverriding has cognitive complexity 19 (threshold 15). Drivers by points: if/else 17, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1334}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdcf53645bb03a87ea19bf241e803413da02673010bc5dea800d1de918978c47"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanUtils.instantiateClass (cognitive 19): BeanUtils.instantiateClass has cognitive complexity 19 (threshold 15). Drivers by points: if/else 8, error handling 4, ternaries 4, 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":"spring-beans/src/main/java/org/springframework/beans/BeanUtils.java"},"region":{"startLine":183}}}],"partialFingerprints":{"codehealthFindingId/v1":"3fd9d7d6ca772068f72221aaf2ac5f56e45e21b6a519969207e60a16d47138a9"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanPostProcessorChecker.postProcessAfterInitialization (cognitive 19): BeanPostProcessorChecker.postProcessAfterInitialization has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, loops 3, 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":"spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java"},"region":{"startLine":415}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7168ebb0099671eb666e558424ec81b6fef02df5be39d8084c0d4243dd818c5"}},{"ruleId":"D2","level":"warning","message":{"text":"MessageSourceControl.newBundle (cognitive 19): MessageSourceControl.newBundle has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19 (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":"spring-context/src/main/java/org/springframework/context/support/ResourceBundleMessageSource.java"},"region":{"startLine":390}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b3026d32103eb4f42167a53b250816139f15db5a321800c57d7d495e4db1abe"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertiesLoaderSupport.loadProperties (cognitive 19): PropertiesLoaderSupport.loadProperties has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, error handling 3, loops 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":"spring-core/src/main/java/org/springframework/core/io/support/PropertiesLoaderSupport.java"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"e93d14f092557cd18fbcf48b606a85cac904d2f445116fad8b91f38d24f6d67d"}},{"ruleId":"D2","level":"warning","message":{"text":"KotlinDelegate.isOptional (cognitive 19): KotlinDelegate.isOptional has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, boolean chains 4, 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":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":934}}}],"partialFingerprints":{"codehealthFindingId/v1":"101c5a95b6b9296b1a9a68045ec711dd320833431d4abf236370776313b8be72"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectionHelper.compareArguments (cognitive 19): ReflectionHelper.compareArguments has cognitive complexity 19 (threshold 15). Drivers by points: if/else 17, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"549ef40413a749ab2d04dbf644f90fb9c965f350fad6d4c1bb8f437b71d5e89d"}},{"ruleId":"D2","level":"warning","message":{"text":"FunctionReference.executeFunctionViaMethodHandle (cognitive 19): FunctionReference.executeFunctionViaMethodHandle has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, error handling 3, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/FunctionReference.java"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"09cf2c1b94882295f93c557ea27b87070844bd65f5943d98064913faa7025a8f"}},{"ruleId":"D2","level":"warning","message":{"text":"IndexAccessorValueRef.getValue (cognitive 19): IndexAccessorValueRef.getValue has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12, error handling 5, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":1023}}}],"partialFingerprints":{"codehealthFindingId/v1":"0683c1b881a473090cc697a68b2a73f4daa48d9def6f51889713abec58d7cfbd"}},{"ruleId":"D2","level":"warning","message":{"text":"SpelNodeImpl.nextChildIs (cognitive 19): SpelNodeImpl.nextChildIs has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, loops 6 (nesting depth added 13). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"702042249688827294d166d096b16e80c641f750fe46765b915dbf876744957e"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSpelExpressionParser.eatExpression (cognitive 19): InternalSpelExpressionParser.eatExpression has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19 (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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java"},"region":{"startLine":171}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbc7676963ae056b0356fe48eb99f892504a01a95d537cefb51297887256311d"}},{"ruleId":"D2","level":"warning","message":{"text":"ExecutorConfigurationSupport.awaitTerminationIfNecessary (cognitive 19): ExecutorConfigurationSupport.awaitTerminationIfNecessary has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9, ternaries 8, error handling 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":"spring-context/src/main/java/org/springframework/scheduling/concurrent/ExecutorConfigurationSupport.java"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"88d56c35a956b4847a8ae5a8c1dbbfa31c5e8969facbdd8d93cc27b43efe5295"}},{"ruleId":"D2","level":"warning","message":{"text":"QuartzCronField.weekdayNearestTo (cognitive 19): QuartzCronField.weekdayNearestTo has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, 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":"spring-context/src/main/java/org/springframework/scheduling/support/QuartzCronField.java"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b6e391b1f52cc39582c125bcf073c2f5eb63aad37c39804162e17b9dceac529"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionAspectSupport.determineTransactionManager (cognitive 19): TransactionAspectSupport.determineTransactionManager has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, error handling 4, 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":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"775fc04d795a68deb5c551977b9c32082ec212ab01025f13ecf7ccb9863d7c8f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractReflectiveMBeanInfoAssembler.getAttributeInfo (cognitive 19): AbstractReflectiveMBeanInfoAssembler.getAttributeInfo has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, 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":"spring-context/src/main/java/org/springframework/jmx/export/assembler/AbstractReflectiveMBeanInfoAssembler.java"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"2270ce80ee1fe2de10895f35ed1253953aa90140ef60ecf76f531b0c4f60901f"}},{"ruleId":"D2","level":"warning","message":{"text":"JmxUtils.locateMBeanServer (cognitive 19): JmxUtils.locateMBeanServer has cognitive complexity 19 (threshold 15). Drivers by points: if/else 9, ternaries 6, 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":"spring-context/src/main/java/org/springframework/jmx/support/JmxUtils.java"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"baba4d19a903311631880525801b9663124b55798735d187b8589169106f9a3c"}},{"ruleId":"D2","level":"warning","message":{"text":"Frame.accept (cognitive 19): Frame.accept has cognitive complexity 19 (threshold 15). Drivers by points: ternaries 8, boolean chains 4, loops 4, if/else 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":1365}}}],"partialFingerprints":{"codehealthFindingId/v1":"62889f6cfbcee5182ba9f10002c0b76787bb7f53354f383b0f4c6ff0434a55c9"}},{"ruleId":"D2","level":"warning","message":{"text":"DuplicatesPredicate.\u003Cinit\u003E (cognitive 19): DuplicatesPredicate.\u003Cinit\u003E has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10, loops 5, error handling 3, 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":"spring-core/src/main/java/org/springframework/cglib/core/DuplicatesPredicate.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"0acceaee59b1b7c4a4037ff4bd331b0fcbd231acd02b4b3d50f1f94ba3235108"}},{"ruleId":"D2","level":"warning","message":{"text":"1BatchUpdateStatementCallback.doInStatement (cognitive 19): 1BatchUpdateStatementCallback.doInStatement has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10, loops 7, error handling 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":596}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c2ec59acb93c5435ddcd85fa0a5c59e7ff2f827b6662b52adf808a6cdfc9732"}},{"ruleId":"D2","level":"warning","message":{"text":"SqlCall.compileInternal (cognitive 19): SqlCall.compileInternal has cognitive complexity 19 (threshold 15). Drivers by points: if/else 17, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlCall.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6e8be0dc04b8eb5d92945947f80c5d7eb28445c1ff979b214194a1704b646d6"}},{"ruleId":"D2","level":"warning","message":{"text":"PayloadMethodArgumentResolver.resolveArgument (cognitive 19): PayloadMethodArgumentResolver.resolveArgument has cognitive complexity 19 (threshold 15). Drivers by points: if/else 12, ternaries 4, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/PayloadMethodArgumentResolver.java"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a6b78c46b4620cdb2efcfc7939f6693774c6d0db1f63130bb1bf21d6e7032f8"}},{"ruleId":"D2","level":"warning","message":{"text":"MockHttpServletResponse.getCookieHeader (cognitive 19): MockHttpServletResponse.getCookieHeader has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, ternaries 5 (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":"spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76505720e44581a3b7373d80bc21b2f8af90e68e70213ccd23805a0ffea2bcc"}},{"ruleId":"D2","level":"warning","message":{"text":"MockHttpServletResponse.setExplicitCharacterEncoding (cognitive 19): MockHttpServletResponse.setExplicitCharacterEncoding has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, error handling 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":"spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"d011eb212197cf69a324346d7fb2d4827cdb1d9d972b59efe4896de3742c41e0"}},{"ruleId":"D2","level":"warning","message":{"text":"TestContextAnnotationUtils.findAnnotationDescriptorForTypes (cognitive 19): TestContextAnnotationUtils.findAnnotationDescriptorForTypes has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, loops 3, 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":"spring-test/src/main/java/org/springframework/test/context/TestContextAnnotationUtils.java"},"region":{"startLine":344}}}],"partialFingerprints":{"codehealthFindingId/v1":"84cd845a6466008ccb1f5965df41ab17227e68e974a3f95f5dfcfb6fafbf125b"}},{"ruleId":"D2","level":"warning","message":{"text":"WebApplicationContextFacesELResolver.getType (cognitive 19): WebApplicationContextFacesELResolver.getType has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, error handling 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":"spring-web/src/main/java/org/springframework/web/jsf/el/WebApplicationContextFacesELResolver.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"43402340b6d43a8c5d8606617c4d658d9175f934892553629f6430518954b2f6"}},{"ruleId":"D2","level":"warning","message":{"text":"WebApplicationContextFacesELResolver.getValue (cognitive 19): WebApplicationContextFacesELResolver.getValue has cognitive complexity 19 (threshold 15). Drivers by points: if/else 15, error handling 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":"spring-web/src/main/java/org/springframework/web/jsf/el/WebApplicationContextFacesELResolver.java"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"32b9fdda1c2cf9e7ea3ce8b948a4ee7bca21d02a1185e9376dc0663901d40834"}},{"ruleId":"D2","level":"warning","message":{"text":"ModelFactory.invokeModelAttributeMethods (cognitive 19): ModelFactory.invokeModelAttributeMethods has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, 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":"spring-web/src/main/java/org/springframework/web/method/annotation/ModelFactory.java"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"39f78362063c8fedae95cc26a295e9821e90d3c423d64bf07da1aad7a5669a26"}},{"ruleId":"D2","level":"warning","message":{"text":"InvocableHandlerMethod.getMethodArgumentValues (cognitive 19): InvocableHandlerMethod.getMethodArgumentValues has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, boolean chains 2, error handling 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":"spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"348b5871a2b252fd84cd7bbb904024d98ad45340798d5f80b0ca9ccc45dcd421"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentCachingRequestWrapper.writeRequestParametersToCachedContent (cognitive 19): ContentCachingRequestWrapper.writeRequestParametersToCachedContent has cognitive complexity 19 (threshold 15). Drivers by points: if/else 13, loops 5, 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":"spring-web/src/main/java/org/springframework/web/util/ContentCachingRequestWrapper.java"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb276fb5a414ee0a1fed68cf1da3ee970961defec05e0d06072be963c06a00c"}},{"ruleId":"D2","level":"warning","message":{"text":"15.handle (cognitive 19): 15.handle has cognitive complexity 19 (threshold 15). Drivers by points: if/else 11, ternaries 6, 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":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":926}}}],"partialFingerprints":{"codehealthFindingId/v1":"6188238e9f6ce0d11bb9aec7bd4f9e7fc70214e696473d99e2cd8b4b9ebef892"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultEntityResponse.writeEntityWithMessageConverters (cognitive 19): DefaultEntityResponse.writeEntityWithMessageConverters has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, error handling 3, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultEntityResponseBuilder.java"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b5b7f40ed0bd369d10509c8a260d1e316237776ba296146acd4a22e324d53b8"}},{"ruleId":"D2","level":"warning","message":{"text":"LocaleChangeInterceptor.preHandle (cognitive 19): LocaleChangeInterceptor.preHandle has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, error handling 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/LocaleChangeInterceptor.java"},"region":{"startLine":111}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f7ff70b030e1fd93483d0b57850bde168d2f8a3f6daca5c3ab9d648b979f653"}},{"ruleId":"D2","level":"warning","message":{"text":"ExceptionHandlerExceptionResolver.doResolveHandlerMethodException (cognitive 19): ExceptionHandlerExceptionResolver.doResolveHandlerMethodException has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, ternaries 2, boolean chains 1, error handling 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/ExceptionHandlerExceptionResolver.java"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ba6450ec17aa3a3fecb651d9a0bf7cf7cc0a1725976abec64ccdb833bc1f432"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpEntityMethodProcessor.getVaryRequestHeadersToAdd (cognitive 19): HttpEntityMethodProcessor.getVaryRequestHeadersToAdd has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10, loops 9 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessor.java"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"3292b5eb6f0f3152a660b4ce183b660f63483ef7fa914b4e28df62959622a859"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMultiCheckedElementTag.writeTagContent (cognitive 19): AbstractMultiCheckedElementTag.writeTagContent has cognitive complexity 19 (threshold 15). Drivers by points: loops 9, if/else 6, ternaries 3, boolean chains 1 (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":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractMultiCheckedElementTag.java"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"c86a38de40f71fbf5024f0fcf04e32e5f642540c035666a48f14a22270732f46"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentNegotiatingViewResolver.getCandidateViews (cognitive 19): ContentNegotiatingViewResolver.getCandidateViews has cognitive complexity 19 (threshold 15). Drivers by points: if/else 10, loops 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/ContentNegotiatingViewResolver.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"7689b298f3789f27d064740131e85d9b1aed45c9e8f929f0efc34736b198ff7f"}},{"ruleId":"D2","level":"warning","message":{"text":"DispatcherServlet.checkMultipart (cognitive 19): DispatcherServlet.checkMultipart has cognitive complexity 19 (threshold 15). Drivers by points: if/else 14, error handling 4, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java"},"region":{"startLine":1089}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc1695b08abde40e54231b4cc8bbec5cf7312a15b4f3e5315dd55e4ea75cfc6c"}},{"ruleId":"D2","level":"warning","message":{"text":"FrameworkServlet.logResult (cognitive 19): FrameworkServlet.logResult has cognitive complexity 19 (threshold 15). Drivers by points: if/else 16, ternaries 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/FrameworkServlet.java"},"region":{"startLine":1073}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb9b1df8887afb3b1615f0e674bd3e533f3be0552aa897d95da4cf9fa3679136"}},{"ruleId":"D2","level":"warning","message":{"text":"MessageBrokerBeanDefinitionParser.getMessageChannel (cognitive 19): MessageBrokerBeanDefinitionParser.getMessageChannel has cognitive complexity 19 (threshold 15). Drivers by points: if/else 19 (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":"spring-websocket/src/main/java/org/springframework/web/socket/config/MessageBrokerBeanDefinitionParser.java"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"837662669b80bcfe2cc259bcf9546db01d2e85f9ee124b98d0131b1bb0f61877"}},{"ruleId":"D2","level":"warning","message":{"text":"XhrResponseReader.exchange (cognitive 19): XhrResponseReader.exchange has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/RestClientXhrTransport.java"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"269013f0071d1fbbeae9377ae6396345fd4be46278e4d000acfab04201f5a7bc"}},{"ruleId":"D2","level":"warning","message":{"text":"XhrReceiveExtractor.extractData (cognitive 19): XhrReceiveExtractor.extractData has cognitive complexity 19 (threshold 15). Drivers by points: if/else 18, 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/RestTemplateXhrTransport.java"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"1c61ddcc71c443d38cdfe782d1bd95bbe001fc073e44309cb82ce4185bbaa7a8"}},{"ruleId":"D2","level":"warning","message":{"text":"ReactorResourceFactory.stop (cognitive 18): ReactorResourceFactory.stop has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, error handling 6, 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":"spring-web/src/main/java/org/springframework/http/client/ReactorResourceFactory.java"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7746c80f183da0cc2e2af5369bf9cd295d67458620955825d33d86a151bad39"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyState.onNext (cognitive 18): BodyState.onNext has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 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":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java"},"region":{"startLine":528}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90ee72906501b4794d2d143890ba1a92e4298437ddc4d5479db867c3b135ed7"}},{"ruleId":"D2","level":"warning","message":{"text":"BodyState.data (cognitive 18): BodyState.data has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 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":"spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java"},"region":{"startLine":470}}}],"partialFingerprints":{"codehealthFindingId/v1":"6279d4834b6edf4ab0174ec68a7518aa45eed217411e1990007ea7b5d8f8ea59"}},{"ruleId":"D2","level":"warning","message":{"text":"4.onDataAvailable (cognitive 18): 4.onDataAvailable has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, error handling 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":"spring-web/src/main/java/org/springframework/http/server/reactive/AbstractListenerReadPublisher.java"},"region":{"startLine":394}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4ff5fb2592524f9aac083c00a5e717721b8bfea6187b589414f558b68bef957"}},{"ruleId":"D2","level":"warning","message":{"text":"ServletServerHttpResponse.applyCookies (cognitive 18): ServletServerHttpResponse.applyCookies has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, loops 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":"spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpResponse.java"},"region":{"startLine":158}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2bb767cb62ab60b007ebaf8527a0bf632835669c6d47cb6b8e677269eb0a427"}},{"ruleId":"D2","level":"warning","message":{"text":"FilePatternResourceHintsRegistrar.registerHints (cognitive 18): FilePatternResourceHintsRegistrar.registerHints has cognitive complexity 18 (threshold 15). Drivers by points: loops 11, if/else 6, ternaries 1 (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":"spring-core/src/main/java/org/springframework/aot/hint/support/FilePatternResourceHintsRegistrar.java"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"558245af2703cc62bd7b7fff28b18937d23dc86577d5e802f0e4656b03674f97"}},{"ruleId":"D2","level":"warning","message":{"text":"BeansDtdResolver.resolveEntity (cognitive 18): BeansDtdResolver.resolveEntity has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, error handling 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c95872384f3e274f63a69e3dee05c433f75ad0f44c7ad52cf4523637a1d7e89"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource (cognitive 18): DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, error handling 7, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultBeanDefinitionDocumentReader.java"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"41b35afb8390814c6a0e07adcb94783284d583a231eaf6a2aa0fe3e99b4534d0"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.invokeInitMethods (cognitive 18): AbstractAutowireCapableBeanFactory.invokeInitMethods has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, boolean chains 5, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1854}}}],"partialFingerprints":{"codehealthFindingId/v1":"8beaf0c803056a1b81f704ee0b10ea30e415ad9730e5bee10a9d49b0361e5d04"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultListableBeanFactory.determineHighestPriorityCandidate (cognitive 18): DefaultListableBeanFactory.determineHighestPriorityCandidate has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":2144}}}],"partialFingerprints":{"codehealthFindingId/v1":"6367f919999722db931689cf5bbf801dec9bbb1e974bc8c9b1cc85beef5f62f7"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtendedBeanInfo.\u003Cinit\u003E (cognitive 18): ExtendedBeanInfo.\u003Cinit\u003E has cognitive complexity 18 (threshold 15). Drivers by points: if/else 8, error handling 5, loops 3, 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":"spring-beans/src/main/java/org/springframework/beans/ExtendedBeanInfo.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a8de3ef02e8b9bb28f8c95ed934e3defdb55f7102e093cebc64c5bec9d7bac3"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationConfigUtils.processCommonDefinitionAnnotations (cognitive 18): AnnotationConfigUtils.processCommonDefinitionAnnotations has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, 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":"spring-context/src/main/java/org/springframework/context/annotation/AnnotationConfigUtils.java"},"region":{"startLine":231}}}],"partialFingerprints":{"codehealthFindingId/v1":"50fbeb327edf597d6642450d70027d1dc14fa339da6d8d328baf087faedca7a1"}},{"ruleId":"D2","level":"warning","message":{"text":"DataBufferUtils.release (cognitive 18): DataBufferUtils.release has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, error handling 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":"spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java"},"region":{"startLine":599}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f95652129848853793456a2a703d510051355c84273f66d6a790437994c7fb2"}},{"ruleId":"D2","level":"warning","message":{"text":"Source.toString (cognitive 18): Source.toString has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, 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":"spring-core/src/main/java/org/springframework/core/type/classreading/SimpleMethodMetadataReadingVisitor.java"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"8efdc9f4bdb1782147e9fc8eedb05b4901a80378634168590f064098ed20e3a2"}},{"ruleId":"D2","level":"warning","message":{"text":"CoroutinesUtils.invokeSuspendingFunction (cognitive 18): CoroutinesUtils.invokeSuspendingFunction has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, boolean chains 3, match/switch 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":"spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"a34ac07e267723fc9644feddb2b55feb05fd8ee88f19e92bf2ebb8067be76ad2"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodParameter.getNestedParameterType (cognitive 18): MethodParameter.getNestedParameterType has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, ternaries 4, 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":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":537}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec081b1b875c3a7604def4f59d9b3dc5a4934a8a15de577aeef96187230cf008"}},{"ruleId":"D2","level":"warning","message":{"text":"OrderComparator.getOrder (cognitive 18): OrderComparator.getOrder has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, loops 4, 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":"spring-core/src/main/java/org/springframework/core/OrderComparator.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e3507d82bd9546b0998eb74abc60f6a1fffedb7f2e4c02d5a4408c49eaeb8bf"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectiveConstructorResolver.resolve (cognitive 18): ReflectiveConstructorResolver.resolve has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, loops 3, boolean chains 1, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"522799bebafff7ae4d545cfdb86b56581e03b8a15e3f0c53ffaf24173723d568"}},{"ruleId":"D2","level":"warning","message":{"text":"OpMultiply.getValueInternal (cognitive 18): OpMultiply.getValueInternal has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, boolean chains 8 (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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ce8d874243ff8f0bd0b8d140da0db9d45f5fc2214d32866ac6e2ef872d64eae"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeFlow.insertUnboxInsns (cognitive 18): CodeFlow.insertUnboxInsns has cognitive complexity 18 (threshold 15). Drivers by points: if/else 17, 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":"spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"1379a7d6fa2c1e81516e9c22062904f7a32e3e9b524552f9495cdf8597c4b510"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateAwareExpressionParser.skipToCorrectEndSuffix (cognitive 18): TemplateAwareExpressionParser.skipToCorrectEndSuffix has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, match/switch 2, 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":"spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a1fa675974d1f0a55e03df83950b625c75944e948f893f40fe10be1cab2c11e"}},{"ruleId":"D2","level":"warning","message":{"text":"JtaTransactionManager.initUserTransactionAndTransactionManager (cognitive 18): JtaTransactionManager.initUserTransactionAndTransactionManager has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, 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":"spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java"},"region":{"startLine":437}}}],"partialFingerprints":{"codehealthFindingId/v1":"96f9c0b06bbf1442a1d847ed78f899ec928401ddd2e5004a6c7504adbec53c28"}},{"ruleId":"D2","level":"warning","message":{"text":"EmitUtils.member_helper_type (cognitive 18): EmitUtils.member_helper_type has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11, loops 4, 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":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":793}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b78082882b3a64909574c9abf745bcd8f66446205b4f33b834a88c6058b59cb"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectUtils.arrayEquals (cognitive 18): ObjectUtils.arrayEquals has cognitive complexity 18 (threshold 15). Drivers by points: boolean chains 9, if/else 9. 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":"spring-core/src/main/java/org/springframework/util/ObjectUtils.java"},"region":{"startLine":365}}}],"partialFingerprints":{"codehealthFindingId/v1":"d73444de24c64d0caa8b3eb525eb7970b4ea013b3f5462f44eebb7a5e1871232"}},{"ruleId":"D2","level":"warning","message":{"text":"GenericTableMetaDataProvider.processTableColumns (cognitive 18): GenericTableMetaDataProvider.processTableColumns has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, boolean chains 2, error handling 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java"},"region":{"startLine":347}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4280484b0be13973f464fbdc579a96189886a3aa1c5e481bad5ed7272804caf"}},{"ruleId":"D2","level":"warning","message":{"text":"LazyConnectionInvocationHandler.getTargetConnection (cognitive 18): LazyConnectionInvocationHandler.getTargetConnection has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11, boolean chains 3, error handling 3, ternaries 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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java"},"region":{"startLine":489}}}],"partialFingerprints":{"codehealthFindingId/v1":"b54651e9c484a033d10c597a6584e3c53ced974c9a1ae9b8d36e56acbc271d1e"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultLobCreator.setBlobAsBinaryStream (cognitive 18): DefaultLobCreator.setBlobAsBinaryStream has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b5bae29b49da863adc5321967afe8dd42acc5453c285273e7ca6e9a58061454"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultLobCreator.setClobAsAsciiStream (cognitive 18): DefaultLobCreator.setClobAsAsciiStream has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"6db87093a5451c7821c1e43200e6df67ee49653855a583d8fbcb089a2e35b064"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultLobCreator.setClobAsCharacterStream (cognitive 18): DefaultLobCreator.setClobAsCharacterStream has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java"},"region":{"startLine":360}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4fe744c2277117c724146f342ddc8098c76d7e093a654f92989ce43d43bcd01"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultMessageListenerContainer.refreshConnectionUntilSuccessful (cognitive 18): DefaultMessageListenerContainer.refreshConnectionUntilSuccessful has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, ternaries 3, error handling 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":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":1153}}}],"partialFingerprints":{"codehealthFindingId/v1":"e1e646a5d766a81dc523e0bd6a5e2ec8107cae4de07b4a3e15c1984363a6248d"}},{"ruleId":"D2","level":"warning","message":{"text":"HeadersMethodArgumentResolver.resolveArgumentValue (cognitive 18): HeadersMethodArgumentResolver.resolveArgumentValue has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, ternaries 3, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeadersMethodArgumentResolver.java"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"84e52e4f22d1f8e3f9a7c60da33b57f6d76ffdd5dd500892a019de68f6e85e28"}},{"ruleId":"D2","level":"warning","message":{"text":"HeadersMethodArgumentResolver.resolveArgument (cognitive 18): HeadersMethodArgumentResolver.resolveArgument has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, ternaries 3, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeadersMethodArgumentResolver.java"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"189341dc158adc645db8d5709ebd93ee927276c338ab3ed233f095be77142384"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMethodMessageHandler.afterPropertiesSet (cognitive 18): AbstractMethodMessageHandler.afterPropertiesSet has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, error handling 3, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f2911111e600818f349304273b921f01ff9b05dd7f59dd670a47f70ce260213"}},{"ruleId":"D2","level":"warning","message":{"text":"StompDecoder.readPayload (cognitive 18): StompDecoder.readPayload has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 2, 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6d0e2fc7eba253a781eaaf85a15c1f23e25fdf773abba9892302dd8afb6bb11"}},{"ruleId":"D2","level":"warning","message":{"text":"HibernateTransactionManager.doCleanupAfterCompletion (cognitive 18): HibernateTransactionManager.doCleanupAfterCompletion has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, error handling 4, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java"},"region":{"startLine":667}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c68323561bf16b7bafe93adf615b8d5da773c49f60cb7ffc951cfb2f75ad062"}},{"ruleId":"D2","level":"warning","message":{"text":"PersistenceUnitReader.parseJarFiles (cognitive 18): PersistenceUnitReader.parseJarFiles has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 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":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceUnitReader.java"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"fdc4c9d34027eddc0cbfc04e3bb65422df5da01e763512a25c0d7523fa09eb3b"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractEntityManagerFactoryBean.invokeProxyMethod (cognitive 18): AbstractEntityManagerFactoryBean.invokeProxyMethod has cognitive complexity 18 (threshold 15). Drivers by points: if/else 7, error handling 4, ternaries 3, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java"},"region":{"startLine":517}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ee85ff23d3cbbdbdda20dc96e4c07b61cd0770e94d53a01683bb9e15d8dd8a7"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanOverrideUtils.findHandlers (cognitive 18): BeanOverrideUtils.findHandlers has cognitive complexity 18 (threshold 15). Drivers by points: if/else 9, loops 6, 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":"spring-test/src/main/java/org/springframework/test/context/bean/override/BeanOverrideUtils.java"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"06ecbcac0e4600cca7fbdaffa3a5e48102c13f80d6bee40089ba52fe8ce9cbba"}},{"ruleId":"D2","level":"warning","message":{"text":"SqlScriptsTestExecutionListener.executeSqlScripts (cognitive 18): SqlScriptsTestExecutionListener.executeSqlScripts has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, ternaries 3, boolean chains 2, 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":"spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"e3a9d2036898aa49a1faad968ecb32d12dcedf2dad98f63f176001527cd88cf1"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractTestContextBootstrapper.buildMergedContextConfiguration (cognitive 18): AbstractTestContextBootstrapper.buildMergedContextConfiguration has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, 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":"spring-test/src/main/java/org/springframework/test/context/support/AbstractTestContextBootstrapper.java"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"f29c26a35cc9f7b2f42576b8d3b3763c7f7fe8883ae3b1bb5195c6d27df861b9"}},{"ruleId":"D2","level":"warning","message":{"text":"RestTestClientResponseAssert.getCookies (cognitive 18): RestTestClientResponseAssert.getCookies has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, loops 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":"spring-test/src/main/java/org/springframework/test/web/servlet/client/assertj/RestTestClientResponseAssert.java"},"region":{"startLine":259}}}],"partialFingerprints":{"codehealthFindingId/v1":"154c22ea50bd65b286d3256bce1db988c25da26173b59aa6b7b41d576697b00c"}},{"ruleId":"D2","level":"warning","message":{"text":"HandlerMethodValidator.applyArgumentValidation (cognitive 18): HandlerMethodValidator.applyArgumentValidation has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, loops 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":"spring-web/src/main/java/org/springframework/web/method/annotation/HandlerMethodValidator.java"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ffb80c5ebe80d95f79a415c9889276d90a9064a4060bca53cb8abd4b16a3d38"}},{"ruleId":"D2","level":"warning","message":{"text":"KotlinDelegate.invokeFunction (cognitive 18): KotlinDelegate.invokeFunction has cognitive complexity 18 (threshold 15). Drivers by points: if/else 10, boolean chains 4, match/switch 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":"spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"03c10f90495c4bba2946d2bd6684d549ee3d0e09183bb1e5936e2ba1c41c54cb"}},{"ruleId":"D2","level":"warning","message":{"text":"ContentCachingResponseWrapper.copyBodyToResponse (cognitive 18): ContentCachingResponseWrapper.copyBodyToResponse has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, ternaries 5, 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":"spring-web/src/main/java/org/springframework/web/util/ContentCachingResponseWrapper.java"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d932751bddc73e22a2d09dbd87897fad934c7a906718f59ef1ef703590abdc0"}},{"ruleId":"D2","level":"warning","message":{"text":"HandlerResultHandlerSupport.selectMediaType (cognitive 18): HandlerResultHandlerSupport.selectMediaType has cognitive complexity 18 (threshold 15). Drivers by points: if/else 13, loops 4, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/HandlerResultHandlerSupport.java"},"region":{"startLine":126}}}],"partialFingerprints":{"codehealthFindingId/v1":"b1663296eb4431ccbc93337882a510773d141fc07dd1164f5673b067d34ea8ca"}},{"ruleId":"D2","level":"warning","message":{"text":"AcceptHeaderLocaleResolver.findSupportedLocale (cognitive 18): AcceptHeaderLocaleResolver.findSupportedLocale has cognitive complexity 18 (threshold 15). Drivers by points: if/else 11, loops 5, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/i18n/AcceptHeaderLocaleResolver.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"3676563ce58a9817246653ddf3a0cdf20a882b7ffb7479cd435df59dfd722fc6"}},{"ruleId":"D2","level":"warning","message":{"text":"SelectedValueComparator.exhaustiveCompare (cognitive 18): SelectedValueComparator.exhaustiveCompare has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/SelectedValueComparator.java"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"16c65b401b4c0c77e7303fd197e53de7c50b32e0da16bed4529fd4820ff71eb2"}},{"ruleId":"D2","level":"warning","message":{"text":"RedirectView.isEligibleProperty (cognitive 18): RedirectView.isEligibleProperty has cognitive complexity 18 (threshold 15). Drivers by points: if/else 14, loops 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/RedirectView.java"},"region":{"startLine":513}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9a36be76a3b0b25ca2b7b29f0c7be6d8d05d3b2bb7a6cab7ae8888e131ee4b5"}},{"ruleId":"D2","level":"warning","message":{"text":"DispatcherServlet.processHandlerException (cognitive 18): DispatcherServlet.processHandlerException has cognitive complexity 18 (threshold 15). Drivers by points: if/else 15, loops 2, error handling 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java"},"region":{"startLine":1207}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d38f0fdbc363a8e7375bbe751aa8103ebaca30fd16f7322591eaab60b0e7bbd"}},{"ruleId":"D2","level":"warning","message":{"text":"StompSubProtocolHandler.handleMessageToClient (cognitive 18): StompSubProtocolHandler.handleMessageToClient has cognitive complexity 18 (threshold 15). Drivers by points: if/else 16, 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":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java"},"region":{"startLine":460}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b687cff128bc05285b802cc201f732b9031615558b90c0252885a6399815ce5"}},{"ruleId":"D2","level":"warning","message":{"text":"CompletableConnectCallback.handleFailure (cognitive 18): CompletableConnectCallback.handleFailure has cognitive complexity 18 (threshold 15). Drivers by points: if/else 12, error handling 3, loops 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/DefaultTransportRequest.java"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"b0815076fe5c98a4e77697fdffcadf9da4fd74d50f2a8e196008adb655efbee9"}},{"ruleId":"D2","level":"warning","message":{"text":"ServletServerHttpResponse.writeHeaders (cognitive 17): ServletServerHttpResponse.writeHeaders has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, error handling 3, 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":"spring-web/src/main/java/org/springframework/http/server/ServletServerHttpResponse.java"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"604d8f75717b82949f3286f19d20d1dac2ebf2b5efb94bd6d027fc06379df90d"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJAdviceParameterNameDiscoverer.getParameterNames (cognitive 17): AspectJAdviceParameterNameDiscoverer.getParameterNames has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, match/switch 2, boolean chains 1, error handling 1, loops 1 (nesting depth added 4). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":221}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc3e66c99aca1d68b0c3fdaafe9b5ce62bf050d339db0be6283cc51653f268f9"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanDefinitionParserDelegate.parseBeanDefinitionAttributes (cognitive 17): BeanDefinitionParserDelegate.parseBeanDefinitionAttributes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":552}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2f23fd1e1060cd367a3bdcb3c30268bf5574b3f287f9b8b4b8ec21930418c0d"}},{"ruleId":"D2","level":"warning","message":{"text":"PluggableSchemaResolver.resolveEntity (cognitive 17): PluggableSchemaResolver.resolveEntity has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, error handling 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java"},"region":{"startLine":106}}}],"partialFingerprints":{"codehealthFindingId/v1":"74a6a1840acfe5ef24eb616184fabd409b34693dcd73dba4ecfc426384d3761b"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck (cognitive 17): AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, boolean chains 3, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":989}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f157c570a926d53588aec84b9ee93971e2ba498e741ef5dfcccb19cedddb069"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultSingletonBeanRegistry.destroyBean (cognitive 17): DefaultSingletonBeanRegistry.destroyBean has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, loops 5, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java"},"region":{"startLine":776}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c0f6cd2a77326af905ef53255545344a028ed84ae3c9f8b908a4d66fc290903"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticListableBeanFactory.getBeansOfType (cognitive 17): StaticListableBeanFactory.getBeansOfType has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, boolean chains 6, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java"},"region":{"startLine":428}}}],"partialFingerprints":{"codehealthFindingId/v1":"6180767fa80477e39ca2ab197c8c73c3bedadf273612c3e3e7dede48e585eda4"}},{"ruleId":"D2","level":"warning","message":{"text":"CustomCollectionEditor.setValue (cognitive 17): CustomCollectionEditor.setValue has cognitive complexity 17 (threshold 15). Drivers by points: loops 9, if/else 5, boolean chains 3 (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":"spring-beans/src/main/java/org/springframework/beans/propertyeditors/CustomCollectionEditor.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"a76caf2f479ff1df510707dcc9be6595bcdae858a4089407f9cb3d26c172599b"}},{"ruleId":"D2","level":"warning","message":{"text":"CacheAspectSupport.findInCaches (cognitive 17): CacheAspectSupport.findInCaches has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, error handling 1, 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":"spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java"},"region":{"startLine":515}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9782c0b20cdcdb77fa8b029a4224911784d01aea855110f4902451ca930eb3c"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationTypeMapping.resolveAliasTarget (cognitive 17): AnnotationTypeMapping.resolveAliasTarget has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, 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":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"91193e77c5124fbb59936bf95a7cee320df3df744ca97a6c6ae0e3260372fda3"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpleAliasRegistry.registerAlias (cognitive 17): SimpleAliasRegistry.registerAlias has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (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":"spring-core/src/main/java/org/springframework/core/SimpleAliasRegistry.java"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"c971c0d31541ce58ce3cfb5fcfa06b7c6643d30c089c1c3be7914f2f6488786b"}},{"ruleId":"D2","level":"warning","message":{"text":"AccessorUtils.getAccessorsToTry (cognitive 17): AccessorUtils.getAccessorsToTry has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, loops 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/AccessorUtils.java"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"42b81db7c0aa44732b9c7adbdb94fb9fcf37edbaa073af2840e1a1882ce48763"}},{"ruleId":"D2","level":"warning","message":{"text":"SpelNodeImpl.generateCodeForArguments (cognitive 17): SpelNodeImpl.generateCodeForArguments has cognitive complexity 17 (threshold 15). Drivers by points: loops 7, if/else 5, ternaries 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java"},"region":{"startLine":246}}}],"partialFingerprints":{"codehealthFindingId/v1":"c499052b86d425b37028e9591c221ac0cf00ad4506d04ba2f5d0985c0cc9d63d"}},{"ruleId":"D2","level":"warning","message":{"text":"InternalSpelExpressionParser.maybeEatConstructorReference (cognitive 17): InternalSpelExpressionParser.maybeEatConstructorReference has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, loops 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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java"},"region":{"startLine":789}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d11e1a413c8a10f28e39b56a9834d366615845cdfb59e24a626136b4d9517eb"}},{"ruleId":"D2","level":"warning","message":{"text":"TaskExecutorFactoryBean.determinePoolSizeRange (cognitive 17): TaskExecutorFactoryBean.determinePoolSizeRange has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, error handling 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":"spring-context/src/main/java/org/springframework/scheduling/config/TaskExecutorFactoryBean.java"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"24677b61de84be563d2274e84794a10a91fe4c3c25981f4df0e8d4e3934b488d"}},{"ruleId":"D2","level":"warning","message":{"text":"BitsCronField.nextOrSame (cognitive 17): BitsCronField.nextOrSame has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, 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":"spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"a99d6594fa43fe6d5fbc98907c063b7e7ed877788febd5d1cc758f78591e6924"}},{"ruleId":"D2","level":"warning","message":{"text":"QuartzCronField.parseDaysOfMonth (cognitive 17): QuartzCronField.parseDaysOfMonth has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, 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":"spring-context/src/main/java/org/springframework/scheduling/support/QuartzCronField.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a82ed63ea4d936007babc617060627da0fa6182452466e376bd111ef644a44"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractPlatformTransactionManager.getTransaction (cognitive 17): AbstractPlatformTransactionManager.getTransaction has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, error handling 3, 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":"spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"8eca4ab54d56efc7b416ece9bba04c56705e1ba1639bea58df8747ce5430e31d"}},{"ruleId":"D2","level":"warning","message":{"text":"MBeanExporter.registerBeanNameOrInstance (cognitive 17): MBeanExporter.registerBeanNameOrInstance has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, loops 3, error handling 1 (nesting depth added 8). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java"},"region":{"startLine":616}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb195f71ed1580c2748f3ad78da2b9a36f9df86862dec2f15ac4fc41a8117c25"}},{"ruleId":"D2","level":"warning","message":{"text":"ScriptBeanDefinitionParser.parseInternal (cognitive 17): ScriptBeanDefinitionParser.parseInternal has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (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":"spring-context/src/main/java/org/springframework/scripting/config/ScriptBeanDefinitionParser.java"},"region":{"startLine":109}}}],"partialFingerprints":{"codehealthFindingId/v1":"994c8bd202c9382ae6ba45ec419ef73702ed442426c5d15960fc80fb5e0d78d5"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodWriter.visitLdcInsn (cognitive 17): MethodWriter.visitLdcInsn has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, boolean chains 4, ternaries 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1278}}}],"partialFingerprints":{"codehealthFindingId/v1":"8804beb4a46728c373aeca49b50fbc0e0aa886a3386c901aa14723ec939cdde5"}},{"ruleId":"D2","level":"warning","message":{"text":"BulkBeanEmitter.validate (cognitive 17): BulkBeanEmitter.validate has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, boolean chains 1, error handling 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":"spring-core/src/main/java/org/springframework/cglib/beans/BulkBeanEmitter.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d24799c57e60ab9f6513a2e284b5d051a8037f9efba9881fc6ae302067e1671"}},{"ruleId":"D2","level":"warning","message":{"text":"3.processCase (cognitive 17): 3.processCase has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, 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":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"374e2851f43e426f0c409dd31de06277a1c0e5758dc990e4ec682b2da79afc84"}},{"ruleId":"D2","level":"warning","message":{"text":"ReflectUtils.getClass (cognitive 17): ReflectUtils.getClass has cognitive complexity 17 (threshold 15). Drivers by points: error handling 6, if/else 6, loops 3, 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":"spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"e142ba35d3757c5ebf61b1d1bd920b59eaa51bd50a2b195c2daa6fd7e7379160"}},{"ruleId":"D2","level":"warning","message":{"text":"4.emitLoadArgsAndInvoke (cognitive 17): 4.emitLoadArgsAndInvoke has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, 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":"spring-core/src/main/java/org/springframework/cglib/proxy/Enhancer.java"},"region":{"startLine":1277}}}],"partialFingerprints":{"codehealthFindingId/v1":"46234e1823cd35615e9371e0d9dc350cdd04e859e2c037f60e0ee3931a077c77"}},{"ruleId":"D2","level":"warning","message":{"text":"AntPathMatcher.combine (cognitive 17): AntPathMatcher.combine has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8, boolean chains 6, 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":554}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed38235df8f44108b23669b970fe67808874b4211f1b23f46ea7c8bb0943b15e"}},{"ruleId":"D2","level":"warning","message":{"text":"PatternInfo.initCounters (cognitive 17): PatternInfo.initCounters has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, boolean chains 2, 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":937}}}],"partialFingerprints":{"codehealthFindingId/v1":"bbde27232b39e8e7653b87851e20d30ca3e8cc8ba3321761b540324d00caa5f6"}},{"ruleId":"D2","level":"warning","message":{"text":"MethodInvoker.getTypeDifferenceWeight (cognitive 17): MethodInvoker.getTypeDifferenceWeight has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, loops 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":"spring-core/src/main/java/org/springframework/util/MethodInvoker.java"},"region":{"startLine":310}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c8c35ac449a219583cb30f4264be9ba6077b51a33f7a19a71385ac617187ead"}},{"ruleId":"D2","level":"warning","message":{"text":"ObjectUtils.nullSafeConciseToString (cognitive 17): ObjectUtils.nullSafeConciseToString has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, ternaries 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":"spring-core/src/main/java/org/springframework/util/ObjectUtils.java"},"region":{"startLine":899}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c22c70341f10aaf43945b778b1387c79a7237de71ec570c0951498566923ce4"}},{"ruleId":"D2","level":"warning","message":{"text":"CallMetaDataContext.createCallString (cognitive 17): CallMetaDataContext.createCallString has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"565c0de05f91453f965f4352a4fcca803cd5ddb86687c207d84d90f6ff12c417"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractJmsListenerContainerFactory.createListenerContainer (cognitive 17): AbstractJmsListenerContainerFactory.createListenerContainer 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":"spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerContainerFactory.java"},"region":{"startLine":208}}}],"partialFingerprints":{"codehealthFindingId/v1":"40acb1441d8a870165fe075d3c6df5cbabbbc945a2e269b4737dad259dd04acb"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractListenerContainerParser.parseCommonContainerProperties (cognitive 17): AbstractListenerContainerParser.parseCommonContainerProperties has cognitive complexity 17 (threshold 15). Drivers by points: if/else 16, 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":"spring-jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java"},"region":{"startLine":233}}}],"partialFingerprints":{"codehealthFindingId/v1":"771f0c05fac1db8e79586fc87c3890a3fc2243062870c59f8c17fdc6cd9a66af"}},{"ruleId":"D2","level":"warning","message":{"text":"JmsTransactionManager.doBegin (cognitive 17): JmsTransactionManager.doBegin has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, error handling 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":"spring-jms/src/main/java/org/springframework/jms/connection/JmsTransactionManager.java"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f9f0ba84edb65389f4c1c798aa81adc9063fb345e4525722d065438ab76aabe"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNamedValueMethodArgumentResolver.resolveArgumentValue (cognitive 17): AbstractNamedValueMethodArgumentResolver.resolveArgumentValue has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1c61d22f76b9640fddafbe2bafeba4799e34abfe2e8688adc30cab95fa948e5"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractNamedValueMethodArgumentResolver.resolveArgument (cognitive 17): AbstractNamedValueMethodArgumentResolver.resolveArgument has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"704c0f30fe60d9e8a99931f5415cc2e530cfa84ff99fd13b640972f289698fa4"}},{"ruleId":"D2","level":"warning","message":{"text":"SendToMethodReturnValueHandler.handleReturnValue (cognitive 17): SendToMethodReturnValueHandler.handleReturnValue has cognitive complexity 17 (threshold 15). Drivers by points: if/else 12, 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ea5a47cb8d4b1708501b76444304346f996b2dccd608a4161630ac02c55b823"}},{"ruleId":"D2","level":"warning","message":{"text":"SystemSessionConnectionHandler.handleInboundMessage (cognitive 17): SystemSessionConnectionHandler.handleInboundMessage has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, error handling 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":1050}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a4264ec90fa1a0df8fbaa2bda6c726bb353624f0cd8c540257ccf6e8f75136a"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultPersistenceUnitManager.buildDefaultPersistenceUnitInfo (cognitive 17): DefaultPersistenceUnitManager.buildDefaultPersistenceUnitInfo has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, error handling 4, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"59fbebd2efcad987630481b7b305695e2d21e5541a7cb7429955ffc1e29a56d4"}},{"ruleId":"D2","level":"warning","message":{"text":"PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata (cognitive 17): PersistenceAnnotationBeanPostProcessor.buildPersistenceMetadata has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, boolean chains 6, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b0d2a9807812350dd816b07387b8afe6e27033dadc1322564ea29ae52544c65"}},{"ruleId":"D2","level":"warning","message":{"text":"ExtendedEntityManagerInvocationHandler.invoke (cognitive 17): ExtendedEntityManagerInvocationHandler.invoke has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, boolean chains 1, error handling 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":"spring-orm/src/main/java/org/springframework/orm/jpa/ExtendedEntityManagerCreator.java"},"region":{"startLine":292}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9c9933dda0006999a7411e6e922ebad57ca3ab9e0ff8f0a6d5e27717108cd90"}},{"ruleId":"D2","level":"warning","message":{"text":"LocalContainerEntityManagerFactoryBean.afterPropertiesSet (cognitive 17): LocalContainerEntityManagerFactoryBean.afterPropertiesSet has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, loops 4, 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":"spring-orm/src/main/java/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.java"},"region":{"startLine":384}}}],"partialFingerprints":{"codehealthFindingId/v1":"9bf2f0bc2f252ef00f9ccb925f0fe11917519ec75802b7f722935d65c13e9a82"}},{"ruleId":"D2","level":"warning","message":{"text":"MockCookie.parse (cognitive 17): MockCookie.parse has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, error handling 5, loops 1, ternaries 1 (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":"spring-test/src/main/java/org/springframework/mock/web/MockCookie.java"},"region":{"startLine":134}}}],"partialFingerprints":{"codehealthFindingId/v1":"505e7be70cc35dc3afb4d8093c037e62869d4ab94471fe5cef60da545fc42538"}},{"ruleId":"D2","level":"warning","message":{"text":"ContextLoaderUtils.resolveContextHierarchyAttributes (cognitive 17): ContextLoaderUtils.resolveContextHierarchyAttributes has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, loops 6, 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":"spring-test/src/main/java/org/springframework/test/context/support/ContextLoaderUtils.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"2d0541ad9b6e32719d806862d0bd854c861bb7f7cc5ddf810facd9d784f929b6"}},{"ruleId":"D2","level":"warning","message":{"text":"TestContextAnnotationUtils.findAnnotationDescriptor (cognitive 17): TestContextAnnotationUtils.findAnnotationDescriptor has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, 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":"spring-test/src/main/java/org/springframework/test/context/TestContextAnnotationUtils.java"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"710be603f638e7e9234b91d8141f7b66cf3b758c1986eccc0ffb916a42210107"}},{"ruleId":"D2","level":"warning","message":{"text":"RequestParamMethodArgumentResolver.resolveName (cognitive 17): RequestParamMethodArgumentResolver.resolveName has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, ternaries 6 (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":"spring-web/src/main/java/org/springframework/web/method/annotation/RequestParamMethodArgumentResolver.java"},"region":{"startLine":161}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c91043b772c312e53b0b9281c76f05d3df150a821a5a26a42337a290c032640"}},{"ruleId":"D2","level":"warning","message":{"text":"ControllerMethodResolver.initControllerAdviceCaches (cognitive 17): ControllerMethodResolver.initControllerAdviceCaches has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ControllerMethodResolver.java"},"region":{"startLine":262}}}],"partialFingerprints":{"codehealthFindingId/v1":"5bf796e910df6cc3755d83d976b3d2018707920d8cccaab4d4daab698c125e27"}},{"ruleId":"D2","level":"warning","message":{"text":"MatrixVariableMethodArgumentResolver.resolveNamedValue (cognitive 17): MatrixVariableMethodArgumentResolver.resolveNamedValue has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/MatrixVariableMethodArgumentResolver.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"2aa3436b523fdb1419ca34e10a72c34e37d18959094dcf286c1697070b79cebc"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourcesBeanDefinitionParser.parseResourceResolversTransformers (cognitive 17): ResourcesBeanDefinitionParser.parseResourceResolversTransformers has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, loops 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/config/ResourcesBeanDefinitionParser.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"eabc0f2dacd2732e1fbdb265eb1cfbce11ca4e426d8515f8992ee41e5869ad3e"}},{"ruleId":"D2","level":"warning","message":{"text":"MatrixVariableMethodArgumentResolver.resolveName (cognitive 17): MatrixVariableMethodArgumentResolver.resolveName has cognitive complexity 17 (threshold 15). Drivers by points: if/else 15, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MatrixVariableMethodArgumentResolver.java"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3764eab16ffb95dd94d4d600cfeefc6888390e077b8a7c9cdbd5ec7718c4160"}},{"ruleId":"D2","level":"warning","message":{"text":"RequestMappingHandlerAdapter.initControllerAdviceCache (cognitive 17): RequestMappingHandlerAdapter.initControllerAdviceCache has cognitive complexity 17 (threshold 15). Drivers by points: if/else 14, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java"},"region":{"startLine":589}}}],"partialFingerprints":{"codehealthFindingId/v1":"0704def7cd2b3a5d9b4c26b80f031ca55cf387d44a2d4c71cb113205f86938f6"}},{"ruleId":"D2","level":"warning","message":{"text":"WebContentInterceptor.preHandle (cognitive 17): WebContentInterceptor.preHandle has cognitive complexity 17 (threshold 15). Drivers by points: if/else 13, ternaries 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/WebContentInterceptor.java"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ab18fdd5cfb3cfe10d1508dfba0785b4a000c8443236fb614d497917de0631a"}},{"ruleId":"D2","level":"warning","message":{"text":"RedirectView.appendQueryProperties (cognitive 17): RedirectView.appendQueryProperties has cognitive complexity 17 (threshold 15). Drivers by points: if/else 10, loops 3, ternaries 3, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/RedirectView.java"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"b826d54a8bfc114edbbebe0e39038e30b3bbea552c45539774c4b41b54a2e681"}},{"ruleId":"D2","level":"warning","message":{"text":"DispatcherServlet.logRequest (cognitive 17): DispatcherServlet.logRequest has cognitive complexity 17 (threshold 15). Drivers by points: if/else 8, ternaries 8, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java"},"region":{"startLine":881}}}],"partialFingerprints":{"codehealthFindingId/v1":"e17a1afbbe7b795ae6f2756de8f9510c4705bc95f921eaaace6ea5c66da0faf6"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractClientSockJsSession.handleMessageFrame (cognitive 17): AbstractClientSockJsSession.handleMessageFrame has cognitive complexity 17 (threshold 15). Drivers by points: if/else 11, error handling 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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/AbstractClientSockJsSession.java"},"region":{"startLine":258}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a258e28511b47da46afab8f44d0eca6e5e27ef9ef586a8312ff4f20dd567f79"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHttpSendingTransportHandler.handleRequestInternal (cognitive 17): AbstractHttpSendingTransportHandler.handleRequestInternal has cognitive complexity 17 (threshold 15). Drivers by points: if/else 17 (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":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/handler/AbstractHttpSendingTransportHandler.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"18d9b639ae9eb29095ea5518e19221fc320c9e2513ed90cd245772b2cc9bfb29"}},{"ruleId":"D2","level":"warning","message":{"text":"BaseDefaultCodecs.initObjectReaders (cognitive 16): BaseDefaultCodecs.initObjectReaders has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 3, ternaries 3 (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":"spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java"},"region":{"startLine":655}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a56cc4b7a5c28f6062b8b07e138e050a837c924009af077eed91d4f2bac55f"}},{"ruleId":"D2","level":"warning","message":{"text":"Jaxb2RootElementHttpMessageConverter.processSource (cognitive 16): Jaxb2RootElementHttpMessageConverter.processSource has cognitive complexity 16 (threshold 15). Drivers by points: error handling 8, if/else 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":"spring-web/src/main/java/org/springframework/http/converter/xml/Jaxb2RootElementHttpMessageConverter.java"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"ff5dbee821887dae2790709dfe3e025fa6d6fe71cc0a7f05f27ab8978aca3f81"}},{"ruleId":"D2","level":"warning","message":{"text":"ReactorUriHelper.appendRequestUri (cognitive 16): ReactorUriHelper.appendRequestUri has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, loops 4, 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":"spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"a098af57b09d2ea2a08bc8128b66e9431a37424229d445b44f455f719f12e1ca"}},{"ruleId":"D2","level":"warning","message":{"text":"HttpHeaders.tokenizeQuoted (cognitive 16): HttpHeaders.tokenizeQuoted has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, 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":"spring-web/src/main/java/org/springframework/http/HttpHeaders.java"},"region":{"startLine":1647}}}],"partialFingerprints":{"codehealthFindingId/v1":"8422435b6558ac537a2dc7cf5cb72a359499719978108a027974812dfb0c09d4"}},{"ruleId":"D2","level":"warning","message":{"text":"AopProxyUtils.completeProxiedInterfaces (cognitive 16): AopProxyUtils.completeProxiedInterfaces has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, 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":"spring-aop/src/main/java/org/springframework/aop/framework/AopProxyUtils.java"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa7cfb91a0cf8bef37ca3b285e6a64978e9fa95efa71a6b5bce948614c7e1b41"}},{"ruleId":"D2","level":"warning","message":{"text":"AspectJAdviceParameterNameDiscoverer.getPointcutBody (cognitive 16): AspectJAdviceParameterNameDiscoverer.getPointcutBody has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":595}}}],"partialFingerprints":{"codehealthFindingId/v1":"170a17a5092ae9503a19511caf572ac71c47e4ab101decc65310fdbd0fd7fef4"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanDefinitionParser.parse (cognitive 16): AbstractBeanDefinitionParser.parse has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, ternaries 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/AbstractBeanDefinitionParser.java"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"8478a8150695675d38fe19e415ed9961e125be70bf29a44676e85c6c031277a6"}},{"ruleId":"D2","level":"warning","message":{"text":"ConstructorArgumentValues.getGenericArgumentValue (cognitive 16): ConstructorArgumentValues.getGenericArgumentValue has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, boolean chains 7, 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":"spring-beans/src/main/java/org/springframework/beans/factory/config/ConstructorArgumentValues.java"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"4867f7251264dec8266d9974ca8354c8d34d2e5054c1eaa181d3358bdbdd06e7"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.autowireByType (cognitive 16): AbstractAutowireCapableBeanFactory.autowireByType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, loops 4, error handling 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1506}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddbe91a21ac1c3328746422d94b6901bfd747b2923b1d20c0b48c483ffbc4c20"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractAutowireCapableBeanFactory.createBeanInstance (cognitive 16): AbstractAutowireCapableBeanFactory.createBeanInstance has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1175}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa950d6e371c3031466c0f72d60de757a09bfdc9da49dd4f33d6e442b95b80f6"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.applyEditorRegistrars (cognitive 16): AbstractBeanFactory.applyEditorRegistrars has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, error handling 2, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":1344}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b0b917fbe8f06ce517394dd8468571c9f6aeeebd77d7e709ef061209400a986"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractBeanFactory.getBeanPostProcessorCache (cognitive 16): AbstractBeanFactory.getBeanPostProcessorCache has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d93fe6b899d8ce0fca08b05be34a29732a6d56a176042a8a60dca747dd312a9"}},{"ruleId":"D2","level":"warning","message":{"text":"StaticListableBeanFactory.getBean (cognitive 16): StaticListableBeanFactory.getBean has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, error handling 3, ternaries 3, 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"5088c7252825f83298ebd7d3b2c40a60446c801bfdb335f8e7755542f4a35b0b"}},{"ruleId":"D2","level":"warning","message":{"text":"BeanUtils.findMethodWithMinimalParameters (cognitive 16): BeanUtils.findMethodWithMinimalParameters has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-beans/src/main/java/org/springframework/beans/BeanUtils.java"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb90240e02d5643bdd5d001b54b090fdbf1ad06d5ce4e8f0dbd7ae2c5af7e4f"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyDescriptorUtils.findPropertyType (cognitive 16): PropertyDescriptorUtils.findPropertyType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16 (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":"spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java"},"region":{"startLine":148}}}],"partialFingerprints":{"codehealthFindingId/v1":"aab27b4e938b54a80a4e416f1bbd6482124beda62e7b7841349aa8f114cdcd67"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertyEditorRegistrySupport.findCustomEditor (cognitive 16): PropertyEditorRegistrySupport.findCustomEditor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, loops 4, 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":"spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java"},"region":{"startLine":326}}}],"partialFingerprints":{"codehealthFindingId/v1":"27a3da4bce6e41908ca2a5822a23ba3294fa208a58ca7e10e8a8009b75f17346"}},{"ruleId":"D2","level":"warning","message":{"text":"CacheAspectSupport.performCacheEvicts (cognitive 16): CacheAspectSupport.performCacheEvicts has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, loops 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":"spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java"},"region":{"startLine":672}}}],"partialFingerprints":{"codehealthFindingId/v1":"2a3f901dc4a11b14fb07b7a4ae9f414164cbf8c43fa85e375d84d5d59eb4d542"}},{"ruleId":"D2","level":"warning","message":{"text":"ClassPathScanningCandidateComponentProvider.addCandidateComponentsFromIndex (cognitive 16): ClassPathScanningCandidateComponentProvider.addCandidateComponentsFromIndex has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"000cb287e1fe2d00540730e27fccfac2b2495b48c91d95412e7ccd2ecfc1177c"}},{"ruleId":"D2","level":"warning","message":{"text":"CommonAnnotationBeanPostProcessor.autowireResource (cognitive 16): CommonAnnotationBeanPostProcessor.autowireResource has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, 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":"spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java"},"region":{"startLine":540}}}],"partialFingerprints":{"codehealthFindingId/v1":"2932e18912c432a395f978282da78fa47c5d67a9adf836b7e42a263292fffeae"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassBeanDefinitionReader.isOverriddenByExistingDefinition (cognitive 16): ConfigurationClassBeanDefinitionReader.isOverriddenByExistingDefinition has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassBeanDefinitionReader.java"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"fff1dea6d87bdbf6b4912fa49aadea7d5aad99972ebdcb8090c84556e51bf34c"}},{"ruleId":"D2","level":"warning","message":{"text":"ConfigurationClassParser.removeKnownSuperclass (cognitive 16): ConfigurationClassParser.removeKnownSuperclass has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, loops 5, boolean chains 2, error handling 2 (nesting depth added 6). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":501}}}],"partialFingerprints":{"codehealthFindingId/v1":"8bacde2879272fa84bd38627967aef466752a96b06350a14af8e6d7601d7af39"}},{"ruleId":"D2","level":"warning","message":{"text":"ReloadableResourceBundleMessageSource.calculateAllFilenames (cognitive 16): ReloadableResourceBundleMessageSource.calculateAllFilenames has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-context/src/main/java/org/springframework/context/support/ReloadableResourceBundleMessageSource.java"},"region":{"startLine":335}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a44b3c18052a540e19423f4596325ff235787f8f4ee7f46112eef66531ff1aa"}},{"ruleId":"D2","level":"warning","message":{"text":"ProfilesParser.parseTokens (cognitive 16): ProfilesParser.parseTokens has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, boolean chains 2, match/switch 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":"spring-core/src/main/java/org/springframework/core/env/ProfilesParser.java"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"4be386cd994552b6045f0dc353199cd179b0a8736ad2e95c09fd57c9edccaf46"}},{"ruleId":"D2","level":"warning","message":{"text":"TypeMappedAnnotation.adaptForAttribute (cognitive 16): TypeMappedAnnotation.adaptForAttribute has cognitive complexity 16 (threshold 15). Drivers by points: boolean chains 8, if/else 6, loops 2 (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":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotation.java"},"region":{"startLine":499}}}],"partialFingerprints":{"codehealthFindingId/v1":"9937a46ba762891cb85eab607b0e8209e0639d2bd34eb0e757281b8f93cc2b11"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractCharSequenceDecoder.processDataBuffer (cognitive 16): AbstractCharSequenceDecoder.processDataBuffer has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-core/src/main/java/org/springframework/core/codec/AbstractCharSequenceDecoder.java"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"0541755a4df9d1f1b7404207aa73a7bd9deca2d9bac56060756ed0a58ab739d4"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertySourceProcessor.addPropertySource (cognitive 16): PropertySourceProcessor.addPropertySource has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, ternaries 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":"spring-core/src/main/java/org/springframework/core/io/support/PropertySourceProcessor.java"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3b5e96a5fd8b58fd68aeaf20e05583915298ee721846e13ab391af80b21d0c9"}},{"ruleId":"D2","level":"warning","message":{"text":"PropertySourceProcessor.processPropertySource (cognitive 16): PropertySourceProcessor.processPropertySource has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 3, boolean chains 2, error handling 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":"spring-core/src/main/java/org/springframework/core/io/support/PropertySourceProcessor.java"},"region":{"startLine":79}}}],"partialFingerprints":{"codehealthFindingId/v1":"4ca744cdcf8405b8470180b37de6012175e5c7852694e61f1f47defad1d2b868"}},{"ruleId":"D2","level":"warning","message":{"text":"OptimalPropertyAccessor.generateCode (cognitive 16): OptimalPropertyAccessor.generateCode has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, ternaries 7, 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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":714}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0c5ad7a2c5f2ab60145c6308131d4fbacf4fe3a8dc47b9c61bc34effffa4424"}},{"ruleId":"D2","level":"warning","message":{"text":"IndexAccessorValueRef.setValue (cognitive 16): IndexAccessorValueRef.setValue has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, error handling 5, 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":1079}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3f1eaf84ceffc7d768c8d1d01cce8e8f9cc2583b4065a159d3fec490b9525f1"}},{"ruleId":"D2","level":"warning","message":{"text":"OpDivide.getValueInternal (cognitive 16): OpDivide.getValueInternal has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, boolean chains 7 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b80229aa3b6dfa9c70258e018db7a7427837e2a6e238ae1f79ab43f25daeeb"}},{"ruleId":"D2","level":"warning","message":{"text":"OpModulus.getValueInternal (cognitive 16): OpModulus.getValueInternal has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, boolean chains 7 (nesting depth added 1). To reduce it, split the body: this score is breadth rather than depth \u2014 many checks laid out side by side rather than nested inside one another, so inverting conditions into early returns has nothing left to flatten. Group the statements between the checks into named steps and move each step into its own function, so the body reads as a short sequence of named stages."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee101b0dd2783155f3c9b8f1bc563aa744e659122a7892bb69497919c31b7ee"}},{"ruleId":"D2","level":"warning","message":{"text":"CodeFlow.toDescriptor (cognitive 16): CodeFlow.toDescriptor has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java"},"region":{"startLine":791}}}],"partialFingerprints":{"codehealthFindingId/v1":"34579175215d8f2241ab6f9143885bb25959bedab9942bd4b907252c97f8fbef"}},{"ruleId":"D2","level":"warning","message":{"text":"TemplateAwareExpressionParser.parseExpressions (cognitive 16): TemplateAwareExpressionParser.parseExpressions has cognitive complexity 16 (threshold 15). Drivers by points: if/else 15, 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":"spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d6606a3509c3f645e267a76592e540e8cac5dbd0cdd94925c579b1cf3476660"}},{"ruleId":"D2","level":"warning","message":{"text":"SchedulerFactoryBean.prepareScheduler (cognitive 16): SchedulerFactoryBean.prepareScheduler has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, boolean chains 2 (nesting depth added 2). To reduce it, split the body: most of this score is breadth rather than depth \u2014 checks laid out side by side rather than stacked \u2014 so group the statements between the checks into named steps and move each step into its own function. Some of it IS depth: where a check sits inside another whose only job is to reach it, merge the two into one condition."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java"},"region":{"startLine":584}}}],"partialFingerprints":{"codehealthFindingId/v1":"2f330d076dcd810bd9680b092115d3947a80c862494165606285e6203ae64b83"}},{"ruleId":"D2","level":"warning","message":{"text":"AnnotationDrivenBeanDefinitionParser.parse (cognitive 16): AnnotationDrivenBeanDefinitionParser.parse has cognitive complexity 16 (threshold 15). Drivers by points: if/else 16 (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":"spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"42a34ae6d9d4db51994bcda4b0281169e839ea7e7b6620b22a9cfad4e3708304"}},{"ruleId":"D2","level":"warning","message":{"text":"TransactionAttributeEditor.setAsText (cognitive 16): TransactionAttributeEditor.setAsText has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAttributeEditor.java"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c19b0995328bff48a7acb154585347e823b999fde0a04bd24960355e6d53212"}},{"ruleId":"D2","level":"warning","message":{"text":"WebLogicJtaTransactionManager.createTransaction (cognitive 16): WebLogicJtaTransactionManager.createTransaction has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, error handling 4, boolean chains 1 (nesting depth added 5). To reduce it, split the body into named stages: move each independent step or branch into its own named function so the body reads as a short sequence of named calls rather than one long body."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/jta/WebLogicJtaTransactionManager.java"},"region":{"startLine":316}}}],"partialFingerprints":{"codehealthFindingId/v1":"77a7709e05a53040522938fa61e41f9239a5b47d86f29eece580da0175162c51"}},{"ruleId":"D2","level":"warning","message":{"text":"TemporalAccessorParser.parse (cognitive 16): TemporalAccessorParser.parse has cognitive complexity 16 (threshold 15). Drivers by points: error handling 8, if/else 5, loops 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":"spring-context/src/main/java/org/springframework/format/datetime/standard/TemporalAccessorParser.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"50b1c7889d7f4c19fff4870d89bb6215b86a56d901d551cc2fb1b4618aa48772"}},{"ruleId":"D2","level":"warning","message":{"text":"MBeanExporter.registerNotificationListeners (cognitive 16): MBeanExporter.registerNotificationListeners has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, loops 6, error handling 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":"spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java"},"region":{"startLine":980}}}],"partialFingerprints":{"codehealthFindingId/v1":"b4031aa0f644271742b45051fedfb42ffd35bb982191b33ea33b386991cea4db"}},{"ruleId":"D2","level":"warning","message":{"text":"SpringValidatorAdapter.determineField (cognitive 16): SpringValidatorAdapter.determineField has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-context/src/main/java/org/springframework/validation/beanvalidation/SpringValidatorAdapter.java"},"region":{"startLine":209}}}],"partialFingerprints":{"codehealthFindingId/v1":"316325fdd77fc57a51e11b3a55aa72822fc2a1f6f3beee77cb1c9ef5a9ac0c64"}},{"ruleId":"D2","level":"warning","message":{"text":"Frame.getInitializedType (cognitive 16): Frame.getInitializedType has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":652}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b1b7198465c8f8d47a4ad8694d5bf0fdbef6e92125b570e9776d26477f17ac7"}},{"ruleId":"D2","level":"warning","message":{"text":"Type.getArgumentsAndReturnSizes (cognitive 16): Type.getArgumentsAndReturnSizes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 4, boolean chains 2, 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":"spring-core/src/main/java/org/springframework/asm/Type.java"},"region":{"startLine":752}}}],"partialFingerprints":{"codehealthFindingId/v1":"9603461818783fcfe2eeecfbdda5d121cab1afc2dddcddd04f49baa9d43a5ce5"}},{"ruleId":"D2","level":"warning","message":{"text":"EmitUtils.append_string_helper (cognitive 16): EmitUtils.append_string_helper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, loops 3, 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":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":622}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d52172d3c5e49ae0d14d98f38efed6eccaa8718f24b2b2318305eedbc0861ab"}},{"ruleId":"D2","level":"warning","message":{"text":"EmitUtils.not_equals_helper (cognitive 16): EmitUtils.not_equals_helper has cognitive complexity 16 (threshold 15). Drivers by points: if/else 8, loops 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":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":514}}}],"partialFingerprints":{"codehealthFindingId/v1":"1427968d5fc58ea7ae98d730da5aab5d01a648147cc732b02878e2079e7782ee"}},{"ruleId":"D2","level":"warning","message":{"text":"AntPathStringMatcher.\u003Cinit\u003E (cognitive 16): AntPathStringMatcher.\u003Cinit\u003E has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, ternaries 2, 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":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":660}}}],"partialFingerprints":{"codehealthFindingId/v1":"71256da9572110834cf691e3c4ddc2b29c6a8dbabdafb87bf5819dd6f19a3dc5"}},{"ruleId":"D2","level":"warning","message":{"text":"MultiToSingleValueMapAdapter.equals (cognitive 16): MultiToSingleValueMapAdapter.equals has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 2, error handling 2, 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":"spring-core/src/main/java/org/springframework/util/MultiToSingleValueMapAdapter.java"},"region":{"startLine":223}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a01fd516a2213611926e00902dab7e70e3e43291fc74dc080c9a9981c6ee7b4"}},{"ruleId":"D2","level":"warning","message":{"text":"SingleToMultiValueMapAdapter.equals (cognitive 16): SingleToMultiValueMapAdapter.equals has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, boolean chains 2, error handling 2, 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":"spring-core/src/main/java/org/springframework/util/SingleToMultiValueMapAdapter.java"},"region":{"startLine":270}}}],"partialFingerprints":{"codehealthFindingId/v1":"8720c20aff6ff39773777a758b42732d243702818fd8410c59f0a7cf60a9efa1"}},{"ruleId":"D2","level":"warning","message":{"text":"SqlLobValue.setTypeValue (cognitive 16): SqlLobValue.setTypeValue has cognitive complexity 16 (threshold 15). Drivers by points: if/else 14, 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/support/SqlLobValue.java"},"region":{"startLine":180}}}],"partialFingerprints":{"codehealthFindingId/v1":"899f1f7e74fa2d8f1bc24a1199ec99d9df6d2d38f3bcc6220924d810bfee3b43"}},{"ruleId":"D2","level":"warning","message":{"text":"ResultSetWrappingSqlRowSet.\u003Cinit\u003E (cognitive 16): ResultSetWrappingSqlRowSet.\u003Cinit\u003E has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, error handling 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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/rowset/ResultSetWrappingSqlRowSet.java"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"c84b42f6598417e1f660ed8c8b46ad3192d66c01bc6c46c8b761efc161502ca5"}},{"ruleId":"D2","level":"warning","message":{"text":"StandardJmsActivationSpecFactory.populateActivationSpecProperties (cognitive 16): StandardJmsActivationSpecFactory.populateActivationSpecProperties has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, ternaries 4, error handling 3 (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":"spring-jms/src/main/java/org/springframework/jms/listener/endpoint/StandardJmsActivationSpecFactory.java"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1bb82bc33272d0f4e16473da6c6799e574d9cc2bce7fafa5cf8f0e8546bdf52"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultMessageListenerContainer.doShutdown (cognitive 16): DefaultMessageListenerContainer.doShutdown has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, loops 4, 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":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":736}}}],"partialFingerprints":{"codehealthFindingId/v1":"813b62a0236fbcf1eb3e8441c5632d3979d68968e6c7b65a392f8ba76ea85360"}},{"ruleId":"D2","level":"warning","message":{"text":"InvocableHandlerMethod.getMethodArgumentValues (cognitive 16): InvocableHandlerMethod.getMethodArgumentValues has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, error handling 2, 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":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"f85ddac5ba131b2f13cc758c7b6184484d0f8792b033665c971f7841e2f21e6a"}},{"ruleId":"D2","level":"warning","message":{"text":"SimpAnnotationMethodMessageHandler.getMappingForMethod (cognitive 16): SimpAnnotationMethodMessageHandler.getMappingForMethod has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java"},"region":{"startLine":421}}}],"partialFingerprints":{"codehealthFindingId/v1":"04fbfe91d02e1a3d387099b9e8964983abce32cd51f44cd66dcfd241d0cf05e9"}},{"ruleId":"D2","level":"warning","message":{"text":"MessageHeaderAccessor.getShortPayloadLogMessage (cognitive 16): MessageHeaderAccessor.getShortPayloadLogMessage has cognitive complexity 16 (threshold 15). Drivers by points: ternaries 9, if/else 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":"spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java"},"region":{"startLine":495}}}],"partialFingerprints":{"codehealthFindingId/v1":"459e61f2c286dd27d7f17cb8bd7d86f5771d443e5dd355bd3d06e9636371b788"}},{"ruleId":"D2","level":"warning","message":{"text":"DefaultRequestBodyUriSpec.exchangeInternal (cognitive 16): DefaultRequestBodyUriSpec.exchangeInternal has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, boolean chains 2, 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."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java"},"region":{"startLine":543}}}],"partialFingerprints":{"codehealthFindingId/v1":"3e1e86bf7086f46a0bea926529b9493887c8f22386d929cfd4e59b91a44088b3"}},{"ruleId":"D2","level":"warning","message":{"text":"CorsConfiguration.checkOrigin (cognitive 16): CorsConfiguration.checkOrigin has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, 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":"spring-web/src/main/java/org/springframework/web/cors/CorsConfiguration.java"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"0516c528903850456d3086c5521b0a6ea7e6c735c9482d271caff9acddf553c4"}},{"ruleId":"D2","level":"warning","message":{"text":"DisconnectedClientHelper.isClientDisconnectedException (cognitive 16): DisconnectedClientHelper.isClientDisconnectedException has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, loops 5, 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":"spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"0216e23a307949e7e3a93463bc5bf9f2e143d61598d88f272d226ccaf5ce280f"}},{"ruleId":"D2","level":"warning","message":{"text":"HierarchicalUriComponents.toUriString (cognitive 16): HierarchicalUriComponents.toUriString has cognitive complexity 16 (threshold 15). Drivers by points: if/else 13, 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":"spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java"},"region":{"startLine":466}}}],"partialFingerprints":{"codehealthFindingId/v1":"b08e6622240da0ab422b4dd193343f6696c1a72c2b4f5538c533f6cae235153b"}},{"ruleId":"D2","level":"warning","message":{"text":"7.handleNext (cognitive 16): 7.handleNext has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, ternaries 4, 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":"spring-web/src/main/java/org/springframework/web/util/RfcUriParser.java"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"c78e784785472df7a1647972705137b1aa332570d9090bb2f72f0cfb85b9f196"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractHandlerMapping.getHandler (cognitive 16): AbstractHandlerMapping.getHandler has cognitive complexity 16 (threshold 15). Drivers by points: if/else 10, ternaries 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":"spring-webflux/src/main/java/org/springframework/web/reactive/handler/AbstractHandlerMapping.java"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4cdd2f1765a31d61af707beef23858f6dda5c92bd4f005133b4cff2156f427c"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceHandlerUtils.cleanLeadingSlash (cognitive 16): ResourceHandlerUtils.cleanLeadingSlash has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, ternaries 5, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceHandlerUtils.java"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ca3025e9c22fa73475231b93b2c72157a2d7de20d2c61e0319e6e58907a1ffd"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceHandlerUtils.isInvalidPath (cognitive 16): ResourceHandlerUtils.isInvalidPath has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, boolean chains 2, 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":"spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceHandlerUtils.java"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"acb986634d57a89e143d88e5502f78ac0cf125b2ab8ab34e5ca8c4ac9388520f"}},{"ruleId":"D2","level":"warning","message":{"text":"AbstractMessageConverterMethodProcessor.getProducibleMediaTypes (cognitive 16): AbstractMessageConverterMethodProcessor.getProducibleMediaTypes has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractMessageConverterMethodProcessor.java"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7eddd0349672b457ad089a0f270c4b8a4f5923a13b408038e6d2a49d21cfef9"}},{"ruleId":"D2","level":"warning","message":{"text":"EncodedResourceResolver.resolveResourceInternal (cognitive 16): EncodedResourceResolver.resolveResourceInternal has cognitive complexity 16 (threshold 15). Drivers by points: if/else 11, error handling 3, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/resource/EncodedResourceResolver.java"},"region":{"startLine":135}}}],"partialFingerprints":{"codehealthFindingId/v1":"18dba009be8acca31781f241355b2464cbfede6b92054252e8c5f8521b57a42f"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceHandlerUtils.cleanLeadingSlash (cognitive 16): ResourceHandlerUtils.cleanLeadingSlash has cognitive complexity 16 (threshold 15). Drivers by points: if/else 7, ternaries 5, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHandlerUtils.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d38c07771896ce0494c592bcd74ff6b14ca190469c55facebcdf651537eb224"}},{"ruleId":"D2","level":"warning","message":{"text":"ResourceHandlerUtils.isInvalidPath (cognitive 16): ResourceHandlerUtils.isInvalidPath has cognitive complexity 16 (threshold 15). Drivers by points: if/else 12, boolean chains 2, 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHandlerUtils.java"},"region":{"startLine":186}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb02baf9022a611b5ce578dbf87a7c7e3d485538f844ae556eff86da02b6a288"}},{"ruleId":"D2","level":"warning","message":{"text":"WebMvcStompWebSocketEndpointRegistration.getMappings (cognitive 16): WebMvcStompWebSocketEndpointRegistration.getMappings has cognitive complexity 16 (threshold 15). Drivers by points: if/else 9, loops 4, ternaries 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":"spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebMvcStompWebSocketEndpointRegistration.java"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d520c9732941d859d58cc423710c1e92305193d03b72ce15dd7d573a3bf830e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: HttpHeaders: TooManyMethods \u2014 145 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/HttpHeaders.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"3157fe69b534c8d2ecde20c9479180cd53648c8f96aad64e2fda9369ffb0e160"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: asm/ClassReader.java: FileTooLong \u2014 2391 significant lines (blank, comment-only and punctuation-only lines excluded), about 100% of them inside a single declaration: ClassReader (44-3893). 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":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"064512f6f0a2474de9d1d472d17eb0c6886a327fa35f9cb54b59ad61fd035d17"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MockHttpServletRequest: TooManyMethods \u2014 137 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"b8a8d5d8047bbdd770824db981b4d2cfd0a4a09b90ca1c53ae71c0c8a30120e4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultListableBeanFactory: TooManyMethods \u2014 112 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"aed8ca2f550418c5107d4b7441b2266a5c672288a0ddf9b3b26f3024afb3489f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CodeEmitter: TooManyMethods \u2014 108 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/CodeEmitter.java"},"region":{"startLine":29}}}],"partialFingerprints":{"codehealthFindingId/v1":"c3070213425ca5b68789a965e029e1a96f3f1de69a6c29f76bc0571eae987695"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractApplicationContext: TooManyMethods \u2014 106 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"207792d442788f4b5378b0dc57e31a76b17fbcad8eee4712609ac83917761341"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JdbcTemplate: TooManyMethods \u2014 105 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"ccb68226a0343419c7b7699ee040d6897f548dc6f754d476aed3f0b6190c6867"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractBeanDefinition: TooManyMethods \u2014 96 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java"},"region":{"startLine":61}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad6b79c4289f3865a673f0615095a3f391d930846e1afca08e723d6eb6e358de"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractBeanFactory: TooManyMethods \u2014 96 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":118}}}],"partialFingerprints":{"codehealthFindingId/v1":"c03e1acd4af714834cf4fc171b6a75d077e026a27775a5065b551b64a10a4b93"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/DefaultListableBeanFactory.java: FileTooLong \u2014 1525 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: DefaultListableBeanFactory (132-2813). 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5a6dbcbcad5f4812fbb4e0f2c2f279725e4639137b8f00b1f95bc3e028d8730"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: asm/MethodWriter.java: FileTooLong \u2014 1420 significant lines (blank, comment-only and punctuation-only lines excluded), about 100% of them inside a single declaration: MethodWriter (39-2394). 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":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"73cf6b38c87f378fccd3617f8d604f6a7471c4ac59b60514dee0cd4d9d2bf248"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JmsTemplate: TooManyMethods \u2014 85 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java"},"region":{"startLine":100}}}],"partialFingerprints":{"codehealthFindingId/v1":"339fe430da874ec1899f58cee63e1f2160b6f5db688d797c0831a7b846631dd4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DataBinder: TooManyMethods \u2014 77 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"11054c5c4fb287eac75521d52b5c797768657933167767f397502eca8e3229a9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResolvableType: TooManyMethods \u2014 77 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"9fcd6fc13ab632b6d31dffb31d419381fa81fdccf07e76b4d3725a87f1aed587"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClassUtils: TooManyMethods \u2014 77 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/ClassUtils.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"d756f813d7da760e1657807e1017fe26f6fe3dab004adfa42914c7b482edaad2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MockServletContext: TooManyMethods \u2014 75 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockServletContext.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"c60685c3acddf26386c8360817c25392403709bd86f1c6e639d5da7353a96fe3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MockHttpServletResponse: TooManyMethods \u2014 73 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockHttpServletResponse.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"91fbae71a601f78be2a1a7f36d232f20c55365913c484d0985460061038371db"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BaseDefaultCodecs: TooManyMethods \u2014 72 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1faeeee532e7fd329cf752e678bb27b1c67c98e7656750a7ec0e4aaef093c93"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MimeMessageHelper: TooManyMethods \u2014 69 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-support/src/main/java/org/springframework/mail/javamail/MimeMessageHelper.java"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"647472646eec727518a4805390d7a1ca258956714efac81c51dfd8bd5640bd85"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RestTemplate: TooManyMethods \u2014 69 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/RestTemplate.java"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"698c851e3b3e9b55fb4c85b53063300339239d251576a9836a8f6aa07a05e059"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WebMvcConfigurationSupport: TooManyMethods \u2014 68 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java"},"region":{"startLine":184}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e998071d1c6a5e1164424515dc481f0e9cc25e7d5d3ed49f443fd4a441b06e6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractAutowireCapableBeanFactory: TooManyMethods \u2014 66 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":121}}}],"partialFingerprints":{"codehealthFindingId/v1":"c055d1e80ffd428926565ccf273c6316c74819c18c975f22236f254ab2ad1fa5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StringUtils: TooManyMethods \u2014 65 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/StringUtils.java"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"c610eaafd548aee94c56e42afbe16b302c27754317b6388a196dd4fbc735da28"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SymbolTable: TooManyMethods \u2014 64 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/SymbolTable.java"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"c432f836dc1ed3c2ac6a523c76f3122e141e88e0f92b90b0f7d61c28d61de3b9"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/AbstractBeanFactory.java: FileTooLong \u2014 1003 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: AbstractBeanFactory (118-2143). 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8fb6fd08732dc0e9614b1de7bcc40298b877c6c97aee59416f5fba1f32f9b8dd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StompHeaders: TooManyMethods \u2014 58 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaders.java"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"1212cd5d8f698e63c0839be4e525fd90950c41bce32e4f0b08fbde0084ef2de2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JtaTransactionManager: TooManyMethods \u2014 58 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e3059b10303585f099f4d1ab7ceb64af07d178907249e072153364f7e788472"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/AbstractAutowireCapableBeanFactory.java: FileTooLong \u2014 955 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: AbstractAutowireCapableBeanFactory (121-2060). 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f57f0f9ceefeca48df85090f9ec5ef050424c7b59ea47d1d31ab86858e3b5aeb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Enhancer: TooManyMethods \u2014 57 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/proxy/Enhancer.java"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"7cd9b109c92b5b618fa8a5869a8c2a9743233fb7f3fcc7b33933fe3267ce0e14"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MethodParameter: TooManyMethods \u2014 57 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"8c19bc97079c8f343db66af8edd9a5dc6e840b66737ceb10fc98066288574793"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractMessageListenerContainer: TooManyMethods \u2014 57 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/listener/AbstractMessageListenerContainer.java"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"0af61a664e905c99da16aca7b87772edaa2a5a4882951ffbad22a350574d9d85"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Jackson2ObjectMapperBuilder: TooManyMethods \u2014 57 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java"},"region":{"startLine":107}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc9064050fd92ea92f2192ccb25e509e0c8d1ec5e0fbe632d47d57b1bd303d49"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BeanDefinitionParserDelegate: TooManyMethods \u2014 56 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":85}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a268dffc1ac4ceec63fa3d51e16cb00a2549060fbd7c3c8d55356f310c17040"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResultSetWrappingSqlRowSet: TooManyMethods \u2014 56 methods. Most of these members implement rowset.SqlRowSet (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":"spring-jdbc/src/main/java/org/springframework/jdbc/support/rowset/ResultSetWrappingSqlRowSet.java"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ec519b480abd0cca410762d5daff3982f6e422df76a22fa1800c2f5989a4db9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractPlatformTransactionManager: TooManyMethods \u2014 55 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/support/AbstractPlatformTransactionManager.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"d133be365a3fd0ed2b8aa1a8464c248d461f496cf26c2d260d2cd802ed4168ca"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FrameworkServlet: TooManyMethods \u2014 55 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/FrameworkServlet.java"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b294b0abeda816dc19ed586fe9c6cfff26603647eb0c596d7b88677e5ee177f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RequestMappingHandlerAdapter: TooManyMethods \u2014 55 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java"},"region":{"startLine":132}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea81b67e24a3ca1561422f21a773d188081299014f27e1d5089f09578bc8d1fe"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: core/JdbcTemplate.java: FileTooLong \u2014 913 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: JdbcTemplate (118-1825). 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":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f791802b49479835481262cf32f7290b59a997a27ac31786db8a2398b00ee1ca"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: asm/Frame.java: FileTooLong \u2014 903 significant lines (blank, comment-only and punctuation-only lines excluded), about 100% of them inside a single declaration: Frame (106-1490). 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":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"af3e0f0423ca15c2c460aecc10333a9aa6c6bcf8adeb0123e9b3e337aadad204"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XStreamMarshaller: TooManyMethods \u2014 54 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java"},"region":{"startLine":125}}}],"partialFingerprints":{"codehealthFindingId/v1":"d2d7e9599dbd32776c2c7a6a4295a14a2a83bb87fffd262507d97afe0845a06a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnnotationUtils: TooManyMethods \u2014 53 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationUtils.java"},"region":{"startLine":110}}}],"partialFingerprints":{"codehealthFindingId/v1":"8f3649f8b85fbc7138cebe345683787fbc4885cb341b744d0864673a3f18e5a6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StompHeaderAccessor: TooManyMethods \u2014 53 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompHeaderAccessor.java"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"901bf8a2ee7346a6878f44752c904bcc275793d5d0bee1d6cfca6e0539bd631f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/ConstructorResolver.java: FileTooLong \u2014 881 significant lines (blank, comment-only and punctuation-only lines excluded), about 93% of them inside a single declaration: ConstructorResolver (99-1459). 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":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"66a8d8f5ac16b67915e9146603576d7df5173cb19a175ee882770b492291515c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClassReader: TooManyMethods \u2014 52 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"48b8fac10fb5d70091e483cbc1cce032cc2f16e14035c91b07c461d77668311a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InternalSpelExpressionParser: TooManyMethods \u2014 52 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"754370e2e6e327121647fce48ce7934c123b1bc2efcce37fd9d050c14e8610c0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JmsMessagingTemplate: TooManyMethods \u2014 52 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/core/JmsMessagingTemplate.java"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc5d8e58ecb45924e7f296e728a49362b8dbe804b8c144763c2004e3cdee45ab"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Jaxb2Marshaller: TooManyMethods \u2014 52 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"719328b2356ba12f62748c2b7b478ca6ccd086dfb33b0a3a0211761691a6fb34"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MethodWriter: TooManyMethods \u2014 50 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d473cf038769b4cf8ef21ad610118693f11d600cab97aaf0b86346629138198"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WebFluxConfigurationSupport: TooManyMethods \u2014 50 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/config/WebFluxConfigurationSupport.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"29f5faac225facce56a71c09c09be3d85c24bd5d7638f35fcf55394f7c9528e9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RouterFunctionBuilder: TooManyMethods \u2014 50 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RouterFunctionBuilder.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"67cd3596fd6644b54ba56f609ce2b34c16cc86362024d5dc5106a2a88ee03e08"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RouterFunctionBuilder: TooManyMethods \u2014 50 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/function/RouterFunctionBuilder.java"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"277d3648fffb2562d00485e49b5dcf4483752b74d298c1e82317f3e9bd019459"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultMessageListenerContainer: TooManyMethods \u2014 49 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"d72ab44f5ad65f09ebb23c5e052f90ff3102c57292d6e66c7ef0d29cfc31bfc1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: xml/BeanDefinitionParserDelegate.java: FileTooLong \u2014 807 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: BeanDefinitionParserDelegate (85-1530). 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":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"61a57aae77d59900d2704e8b5a8506933bf877027ca0a7b57df89c6b9dd123cc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AdvisedSupport: TooManyMethods \u2014 47 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/framework/AdvisedSupport.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf7d669b8d148de021886da7528bce19918fc913bdb5d9ecdf792f4e04dd2742"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CodeFlow: TooManyMethods \u2014 47 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"4107150111649b4438cbd77e9b7c0dc2a17e950ee2ccbcb71f49ad27bb67c59f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MessageHeaderAccessor: TooManyMethods \u2014 47 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/support/MessageHeaderAccessor.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"581337e8b33b28f55c88c9c105dd744c93b6d0abb4b97c80d4c083cac423ab4c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: WebExchangeBindException: TooManyMethods \u2014 47 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/bind/support/WebExchangeBindException.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8cb98d12a4c30faee7a7606f4d5eeaf9b2a9775d4ed3deb3957a00da454db26"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UriComponentsBuilder: TooManyMethods \u2014 47 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/UriComponentsBuilder.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7dfe04d76899629a052dc8e70fa086203eb5082d51a5e38fc8ee1f4a54c3968"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: proxy/Enhancer.java: FileTooLong \u2014 782 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: Enhancer (91-1447). 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":"spring-core/src/main/java/org/springframework/cglib/proxy/Enhancer.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"fb4d6b7444fcdf5797aeb079e59bd2ea4a7d47d35fa366eea1a65d00c3999a06"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MBeanExporter: TooManyMethods \u2014 46 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"75d7645d5f89929ce7b4385824a895cd4b8618fdd3eb2b6608d94946390f0015"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BindException: TooManyMethods \u2014 46 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/BindException.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"965d7f9d69234346b6d0152a856e921fcc06f5538306adfdfee65efcf7536caf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeMappedAnnotation: TooManyMethods \u2014 46 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotation.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e26bba4caf5a39cdf7c729f6752cd19fda96fd74af86e2ed57fdd5be77d1639"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractEntityManagerFactoryBean: TooManyMethods \u2014 45 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c258c4fef4e8906b9d6b425fb63867371a43e9e95defbf5068fd0e5160bc1fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RequestContext: TooManyMethods \u2014 45 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/support/RequestContext.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"6761611f8c87c262fa88cdc1279064f711965676030b85d03004d4aeddbfe643"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: http/HttpHeaders.java: FileTooLong \u2014 734 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: HttpHeaders (96-2358). 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":"spring-web/src/main/java/org/springframework/http/HttpHeaders.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"ea740295ae47792dadc262925555158408f8c968ad5c1f3c9b50cb923bd06ff2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RootBeanDefinition: TooManyMethods \u2014 44 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/RootBeanDefinition.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"01b4cd6209f5c5c6cd1ec03eeffe7a03da86c42e095f17e278633f6843d714fe"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultDataBuffer: TooManyMethods \u2014 44 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/io/buffer/DefaultDataBuffer.java"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"5216c501ea12dcf409a71e2e194360628f6671ff6075a73e6c2ae9fc934eda46"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NamedParameterJdbcTemplate: TooManyMethods \u2014 44 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8d619b526116f61ef559f6e6f80215bd08eed9c4a62ab43ce29412c2c60afcf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultRestClientBuilder: TooManyMethods \u2014 44 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"0cde4004312528ee1ac8ebcf816fb24890ce1e2fae9a69a573792de2ee36caeb"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: server/RequestPredicates.java: FileTooLong \u2014 733 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: RequestPredicates (75-1508). 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":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4b415f356a9a8405d95c07cbf05bb4cb810cf34f43e19e35a28341c2d3c6167d"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: core/ResolvableType.java: FileTooLong \u2014 726 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: ResolvableType (89-1859). 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":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bec67646242a187fe0caa0bfd21166c3923f97b188c9c09c3c0b099c3b5f554"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractNestablePropertyAccessor: TooManyMethods \u2014 43 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"01e9fe700d1aeee816b9371455d885606320f20d4b06547493ea11d69946d7b2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeDescriptor: TooManyMethods \u2014 43 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/convert/TypeDescriptor.java"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"a569b435938a12d210e77ee9584ea9e5830c2bb57123b700c57b555c3c94a44d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractEnvironment: TooManyMethods \u2014 43 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/env/AbstractEnvironment.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"22d79a5d3c61515b237512090b28d4a54f2c7619d622c01ca37ededd395dcf41"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StandardEvaluationContext: TooManyMethods \u2014 43 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9e99df1fd94cb1d7a163118d830ed611e19839ce60678d5d07f5bd9264ec6f7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: function/RequestPredicates.java: FileTooLong \u2014 714 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: RequestPredicates (75-1476). 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/function/RequestPredicates.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a34c8ec0d75ce1d9b3422e9c1435ceaed8b638f1f8c37e70ecb272efb3d2219"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/AbstractApplicationContext.java: FileTooLong \u2014 703 significant lines (blank, comment-only and punctuation-only lines excluded), about 89% of them inside a single declaration: AbstractApplicationContext (145-1673). 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":"spring-context/src/main/java/org/springframework/context/support/AbstractApplicationContext.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c55f8cc03677468a89ec613c165f943a9c0907fc9696b91937fd72bc8e74f2bf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EmitUtils: TooManyMethods \u2014 42 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"9b9a6cc7aa8f152a586b250754ec48bb13ff8afdc639a4ecbd4b36b8d6f8b76b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: TypeUtils: TooManyMethods \u2014 42 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/TypeUtils.java"},"region":{"startLine":28}}}],"partialFingerprints":{"codehealthFindingId/v1":"c44778f5ad013c5751235d6e148181f89f3a9dc89b217a31a9517e5e89e6fdb4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: NettyDataBuffer: TooManyMethods \u2014 42 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"02bca1d5d16f2e4c58fddd01e68bf0a0bf892d0a9ada8fcdd4ab0ca8224fd8d8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultRequestBodyUriSpec: TooManyMethods \u2014 42 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java"},"region":{"startLine":260}}}],"partialFingerprints":{"codehealthFindingId/v1":"6d28cd714936f1dcb3b3fc4335d28e686159bcd6e63edecd2ba0e02a09940944"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DispatcherServlet: TooManyMethods \u2014 42 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddad9b41044d9a748d79d30e3e029e219aee8e6eba7f9d022c12affd59d8d957"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: web/MockHttpServletRequest.java: FileTooLong \u2014 699 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: MockHttpServletRequest (96-1442). 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":"spring-test/src/main/java/org/springframework/mock/web/MockHttpServletRequest.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88c0a9c0f1e8319b4154df30b3129a46848d51872e36d88bc56afc591b9eff0"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: annotation/ConfigurationClassPostProcessor.java: FileTooLong \u2014 688 significant lines (blank, comment-only and punctuation-only lines excluded), about 84% of them inside a single declaration: ConfigurationClassPostProcessor (152-1101). 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"9920938610d6c0037e933be164686e50088b8bc5c848e50cef4b976d02728b4e"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: ast/Indexer.java: FileTooLong \u2014 686 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: Indexer (87-1138). 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":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79205945e1d2362ed944fd676b8a7ecc9e197f0faa50e79378bf5a5704fdf55e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ScheduledTaskRegistrar: TooManyMethods \u2014 41 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e2cad9b5cd0a098ca3c52f353a31537d222d2741aa9f75dda41f4cc6f7a9530"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ReflectionUtils: TooManyMethods \u2014 41 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/ReflectionUtils.java"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b2250d903b69930118b12def6a6f9683f589baf84fdb6d1fc32ac26a15fdb57"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractJdbcInsert: TooManyMethods \u2014 41 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/simple/AbstractJdbcInsert.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d4610504d9e25045cb479faa11d145bce5f1c0016359347045d59d0603b39cc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractMessageBrokerConfiguration: TooManyMethods \u2014 41 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/config/AbstractMessageBrokerConfiguration.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f25abf74bc3fb237f3ee6c7d6acbd1b568d2e9f83fc8cd9d3ee95c51f25d14f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractHandlerMapping: TooManyMethods \u2014 41 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"5de7e7cb67e1020387fb84f7a584c250ffdb5618f504634b4476eed21d75ca85"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractHtmlElementTag: TooManyMethods \u2014 41 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementTag.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"7c05576f64c150a1f0794d74342eaf9a0cfde94b9cfc9fa0ff1f16b1f2b4c5fd"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: core/EmitUtils.java: FileTooLong \u2014 674 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"46cca500055a1f5b56ce3f22bd3dbbf1f815f7c57bfd8e7a7251f0a3be3ada42"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: interceptor/CacheAspectSupport.java: FileTooLong \u2014 672 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: CacheAspectSupport (97-1246). 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":"spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"56030649c9221eee7a16133fef094d1c4a248865fae37652f244ef9fc1f12ca3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractAspectJAdvice: TooManyMethods \u2014 40 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/aspectj/AbstractAspectJAdvice.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"c31ec2beaec54de5a8422b0b3d59fb38173de190d88dd17b1ef38240c160df93"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SchedulerFactoryBean: TooManyMethods \u2014 40 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/SchedulerFactoryBean.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"073f90bf8da4d6600beb998e7f571bee8e0fb839e34193da3765fa7af49338df"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractMethodMessageHandler: TooManyMethods \u2014 40 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"8069edba718f742e520b0114c59d393dad197f93399dec45371364d6074fa3e5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DataBufferWrapper: TooManyMethods \u2014 39 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferWrapper.java"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"5a0f18a1bb32ad5801a23388c786050dfe79ffefbab7f02e614a2cb0e3c5e6cf"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: FormTag: TooManyMethods \u2014 39 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/FormTag.java"},"region":{"startLine":245}}}],"partialFingerprints":{"codehealthFindingId/v1":"2334e53105bb8e238c9a135683e029a49b9349e9602f94fbfe7020528b3af216"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UrlBasedViewResolver: TooManyMethods \u2014 39 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/UrlBasedViewResolver.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"e625f434d4285006da600f7b5809edaa949647a333136d0e4c49dad35ffc3836"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: annotation/ConfigurationClassParser.java: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded), about 90% of them inside a single declaration: ConfigurationClassParser (105-1176). 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":"spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassParser.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"cec6c76ca19bc8c252066e915ca7bbeeb5158a09e361d67f2ba3a0b0e164357b"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/ConcurrentReferenceHashMap.java: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: ConcurrentReferenceHashMap (70-1358). 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":"spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"995667db95f13b741d820095c4acabf283c154221c68a834e716f87e5647c286"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: standard/InternalSpelExpressionParser.java: FileTooLong \u2014 647 significant lines (blank, comment-only and punctuation-only lines excluded), about 90% of them inside a single declaration: InternalSpelExpressionParser (93-1061). 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":"spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ba90909aafe401e3d40fcd02660bf587d3c41476e23eef5716a8c74ee5fd8d1"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/BaseDefaultCodecs.java: FileTooLong \u2014 642 significant lines (blank, comment-only and punctuation-only lines excluded), about 89% of them inside a single declaration: BaseDefaultCodecs (98-1106). 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":"spring-web/src/main/java/org/springframework/http/codec/support/BaseDefaultCodecs.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"93afb9140f9589ae904254a073909d18aaacfb80c93827cefe737517ccbd0545"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StaticListableBeanFactory: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0ac07d811823c79f20b4c7e51f5c7a6688392afa9516b65bc2e31a8ef826429"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InstrumentedBridgeMethods: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c43a32a1bdc34c300e5bb1924948b174eb416e414ac5f3bf60c5dc5edf1c6a5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Type: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/Type.java"},"region":{"startLine":40}}}],"partialFingerprints":{"codehealthFindingId/v1":"769b244723b06b46e2b3128329dbb00c981bb04999ff47694f48aae06748e826"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ReflectUtils: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/ReflectUtils.java"},"region":{"startLine":47}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7a6eccb6c3f1d5c1c21ccfe678d18411b78f2f495ba74ef3fd7a29554af79fd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractJmsListeningContainer: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/listener/AbstractJmsListeningContainer.java"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"253644b1844070f2b8e16ad9543ac8120bee6df2630514a868332f9fdf114258"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractMethodMessageHandler: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"683bf1845658794c8252533d354245baa4ad1e7cdb58384dae5332dd67e374e8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LocalSessionFactoryBean: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBean.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e1db190b921b0a98a2f26f717b573e2a7eef4fbd780246af4ced5a032bb8e38"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultRequestBodyUriSpec: TooManyMethods \u2014 38 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClient.java"},"region":{"startLine":207}}}],"partialFingerprints":{"codehealthFindingId/v1":"e8a363451cd4ad47173cd148e8d5599f322c13fb9ddab8a2a6d8b4372f85bdaf"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: client/DefaultRestClient.java: FileTooLong \u2014 628 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: DefaultRestClient (86-971). 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":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a48134d1685c8d294a345240b323e5ac9444120e97eee1b45da847c35b7dca6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: core/CodeEmitter.java: FileTooLong \u2014 626 significant lines (blank, comment-only and punctuation-only lines excluded), about 99% of them inside a single declaration: CodeEmitter (29-1040). 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":"spring-core/src/main/java/org/springframework/cglib/core/CodeEmitter.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"4936e0facfc3ef1da8628e7b6f5299961f2901f3985b2cb271601dc35c6b7891"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: listener/DefaultMessageListenerContainer.java: FileTooLong \u2014 626 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: DefaultMessageListenerContainer (136-1609). 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":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c5ac717c5ff53cfa5e3729003828fa7b3ed04e9acbb3d18e43a1b4d7678b6f70"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: annotation/AutowiredAnnotationBeanPostProcessor.java: FileTooLong \u2014 623 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e98e0cd21f696a3ee705e11fb2a231e38f7eac6fc32cf6d30878022a53d70c8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: asm/SymbolTable.java: FileTooLong \u2014 621 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/SymbolTable.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"39e73fa80c1a5ac88f85890ff415f9a1e7c955bd3ce658d638de8fc9270827c4"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ClassWriter: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassWriter.java"},"region":{"startLine":39}}}],"partialFingerprints":{"codehealthFindingId/v1":"b62be3c8fb43e895937f3bb385bc90d12db546ccd16f295c5056601b01ba0e0a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JettyDataBuffer: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/io/buffer/JettyDataBuffer.java"},"region":{"startLine":38}}}],"partialFingerprints":{"codehealthFindingId/v1":"be8cd55e61495a5f05ad7ca1317ec2c6a4e671a0297214b235cd59a41c1db70b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConcurrentReferenceHashMap: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/ConcurrentReferenceHashMap.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c6d3c460380fb0984eb4138ba3bb554d674c57e0ceecbd9c1363063971452e5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MimeType: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/MimeType.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"7bee63ab23638ee75a6dc47e06e79254332bc2f12adbb70bb85b72f7617bcad0"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SingleConnectionFactory: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/connection/SingleConnectionFactory.java"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb64971ea91486c90630058530ed68a24072f6a76fcf82ef144a0d08854d3ebd"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SimpAnnotationMethodMessageHandler: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a06aaca7f9e5750d6e12f5d88713ac8b0c2a6bc7a58715e2abeeb292e19544e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StompBrokerRelayMessageHandler: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"29cf4358ae9bf4fbf44d93948334149c2e5c3f63382ff76f4cbefa108029a4d3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MutablePersistenceUnitInfo: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/MutablePersistenceUnitInfo.java"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"600ead810a19fd10bc188a20a0a8b52abb21b8a277859e33185e4777c4216dd2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Jackson2ObjectMapperFactoryBean: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java"},"region":{"startLine":143}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ee07b68da05ff41d0ec2d4c2d77e2718e06cb3ccf65680b82a4e7ab62dccd98"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CheckNotModifiedResponse: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/function/DefaultServerRequest.java"},"region":{"startLine":619}}}],"partialFingerprints":{"codehealthFindingId/v1":"afffe1e0c5bd698bdd0255f15c6db947c68c8dcf813d2a961947b047c470c61a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResourceHttpRequestHandler: TooManyMethods \u2014 37 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/resource/ResourceHttpRequestHandler.java"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9ed7f4c8df731feb6457f47e1de3317d7c82d4d08552b52ae0e419135277425"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractMergedAnnotation: TooManyMethods \u2014 36 methods. Most of these members implement annotation.MergedAnnotation (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":"spring-core/src/main/java/org/springframework/core/annotation/AbstractMergedAnnotation.java"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"1477af6c96a20548f99855244e0be6416617238dbfcd02dfe00c0793e88afaeb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Assert: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/Assert.java"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"f30be541cafeac81f8d80e9cbf832ae61aad34ef717553622e5cfa12163d8205"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UnmodifiableMultiValueMap: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/UnmodifiableMultiValueMap.java"},"region":{"startLine":46}}}],"partialFingerprints":{"codehealthFindingId/v1":"b69e9a949bf337a89cdbdbd8b0635b0e757cf18aa72a99fc81aca5fbb2d0dfd8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: XMLEventStreamWriter: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamWriter.java"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"a6dce2bad9e02101bf4d12ce3744363e58c31f1238ecd6d313390cb52464842b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractJdbcCall: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/simple/AbstractJdbcCall.java"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"118df3aff559e462f1e89ceb8333493834e310327ac86d4d5138abe4aada705c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SqlQuery: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlQuery.java"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"e9bafebbbe2f4a27f7cd92735d29df062c3a2d63e47fe8ffbf00b555bf18fa53"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultPersistenceUnitManager: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/DefaultPersistenceUnitManager.java"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"caa7447f310b829d1f86ff4e0d9a27351263fab8325044886c799df9be6e278e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractReactiveTransactionManager: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/reactive/AbstractReactiveTransactionManager.java"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f96482f056571125b0a2f6fe590c260814e632edfe24e211628efb1c0e6d4b7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ServletWebRequest: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ff9e96fddc4b73d7f79dd846b6c4f8b8b76a86b6bce354aacf33efc04a379fc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CorsConfiguration: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/cors/CorsConfiguration.java"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"2060857f93099359bb70399a02ba5cbc094ecf0fa67263da01cef1933f3fed79"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UrlPathHelper: TooManyMethods \u2014 36 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/UrlPathHelper.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"d9249e5428cfe379c86050a08aa5a3b6fe15685f8b032096e22c63a25ae441ab"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/HierarchicalUriComponents.java: FileTooLong \u2014 598 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: HierarchicalUriComponents (55-1100). 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":"spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"071da5d53093d8792cd0f313c46e2c9c028526a1734ed3c21d0f17283dbdbb17"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: beans/AbstractNestablePropertyAccessor.java: FileTooLong \u2014 593 significant lines (blank, comment-only and punctuation-only lines excluded), about 96% of them inside a single declaration: AbstractNestablePropertyAccessor (72-1071). 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":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"109dd89c842384752fe504cea60071ff55d2c1688c79323ec1666efab8d54184"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/ClassUtils.java: FileTooLong \u2014 592 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: ClassUtils (74-1637). 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":"spring-core/src/main/java/org/springframework/util/ClassUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"730f3d4f46661a573ba559c2f6fd4c28a054c7cd28e03845a6b3ae1a4d692019"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: support/PathMatchingResourcePatternResolver.java: FileTooLong \u2014 584 significant lines (blank, comment-only and punctuation-only lines excluded), about 90% of them inside a single declaration: PathMatchingResourcePatternResolver (216-1336). 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":"spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3b586f3ee81600667b768a2d601b1c010c9180346aa03c0a9beafd67b6e1fde2"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: BeanDefinitionBuilder: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/BeanDefinitionBuilder.java"},"region":{"startLine":41}}}],"partialFingerprints":{"codehealthFindingId/v1":"7ee716033690a7825268fb484368a5e1795ac050ab2542a0e09a774aee90c912"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CacheAspectSupport: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java"},"region":{"startLine":97}}}],"partialFingerprints":{"codehealthFindingId/v1":"31aba9ebbeb90609954ceaa26f280262e4c156e8fab7256078a0acf1554d484a"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GenericApplicationContext: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/support/GenericApplicationContext.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"bea58d7ef1975b8d5d2a8c4e273ab5f1faa5cac8c0eded6c124e1d70d015b2fb"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MethodVisitor: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/MethodVisitor.java"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"c70470e107f7e93f99ef1e437c51f8d93ae5be1a4edd3de035ee70ed9634e7e8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractStaxHandler: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/xml/AbstractStaxHandler.java"},"region":{"startLine":43}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a7c2e1490de297d849c8f70b6c76d7361d06d168b3f4d2b323c62fa593f620f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultStompSession: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/DefaultStompSession.java"},"region":{"startLine":58}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7d2b1691daa2059cc9526f4720943253a02e1475bb54375afc1cadc5e1e8002"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: Builder: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"d7cdbba0b593a4a39e3e046e664aee3e9cce99f87a22161f5ce1a8842fcbd399"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DelegatingServerRequest: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RequestPredicates.java"},"region":{"startLine":1228}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6293e8d6eff2795a78001abda46fcbf9cfa35958bef5e1bcb638b481bc1347f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractSockJsService: TooManyMethods \u2014 35 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/support/AbstractSockJsService.java"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"c423970f697ebc71eb760ffade0568947635aefb11a26874959c027d1be82875"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: buffer/DataBufferUtils.java: FileTooLong \u2014 581 significant lines (blank, comment-only and punctuation-only lines excluded), about 94% of them inside a single declaration: DataBufferUtils (65-1327). 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":"spring-core/src/main/java/org/springframework/core/io/buffer/DataBufferUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"dc8c0d1fe9154a48223d23d3650ae4adcce902cc279e7cc6dc827255194047c9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ConstructorResolver: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab584d6b2917160cc62f7003f13951ba10517da46bcfa99dd809e7c9fd094d4b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultSingletonBeanRegistry: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultSingletonBeanRegistry.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"91ada052c840bf0f875be3eefb964fbeaafa2cc6d2b2bae447abf25f47759878"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnnotatedElementUtils: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/AnnotatedElementUtils.java"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"210d514883f1bc8cd7f02b06a64a2e3cdf4ca0e0f0bbf66d94eec3d324397720"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LogAccessor: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/log/LogAccessor.java"},"region":{"startLine":32}}}],"partialFingerprints":{"codehealthFindingId/v1":"2c92b533f71af394c7411ceb5d2024b16b44dc52e114de91cca2e80a0ffe4fbc"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CallMetaDataContext: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/CallMetaDataContext.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"a26e8fa43f0120267890080873aeba10b3824dd3ea0b12087150cc9ddc868661"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: GenericCallMetaDataProvider: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"90c2eb57a2ae5f4f428521f0c51390df41c6d329c7ca9b06597d7db760080b4e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultServerWebExchange: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/server/adapter/DefaultServerWebExchange.java"},"region":{"startLine":67}}}],"partialFingerprints":{"codehealthFindingId/v1":"42f3a319ce2485fdf060a18189523702b5baf5b6cac5249dacbbd19cc2201452"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ResourceWebHandler: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/resource/ResourceWebHandler.java"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"142c45166c677bedd79b39f18299f26d863cf4db899e9a13cd1d741e917e05a5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SubProtocolWebSocketHandler: TooManyMethods \u2014 34 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/SubProtocolWebSocketHandler.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"590d96e63d1366dc06790004efc825a4b9df7514280d3882b7ad937816a4b4f2"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: stomp/StompBrokerRelayMessageHandler.java: FileTooLong \u2014 565 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: StompBrokerRelayMessageHandler (82-1202). 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":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompBrokerRelayMessageHandler.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e967821520b677c91225e5062352b7f2082dbe499c66de2c35fe68d1c5595a4f"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: jaxb/Jaxb2Marshaller.java: FileTooLong \u2014 560 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c661a668d63bd86fdb2ee1b8f4fd228e9c9f56c5892e1ac6d43623c8b9263693"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: servlet/DispatcherServlet.java: FileTooLong \u2014 555 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: DispatcherServlet (157-1408). 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/DispatcherServlet.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ec006ea9b413c809c06fb3bff51037ed8a57f4d4ec73f0b2d43cd69d1123dd8"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: validation/DataBinder.java: FileTooLong \u2014 553 significant lines (blank, comment-only and punctuation-only lines excluded), about 91% of them inside a single declaration: DataBinder (130-1479). 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":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"731fc7a4ebe63ee39e7244a57bd45bed842762ad1304daad1ea73835bd8f780c"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractBindingResult: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/AbstractBindingResult.java"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"4390d2f15496563111a2eb191438d1f2ec40003fcf552d44cb246d2ceed2469b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AnnotationTypeMapping: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/AnnotationTypeMapping.java"},"region":{"startLine":49}}}],"partialFingerprints":{"codehealthFindingId/v1":"2036d44c577ef3cc22819110276beba87a122a0aa1c81614953d0bea968ef1a9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MockPageContext: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockPageContext.java"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"5080ba8cbc6ea83c7094ffe0869e39a797cbc3992902eb211cfa69881075922f"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RequestEntity: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/RequestEntity.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"27d7f3ef3a00f155bb634cf841a359879952de7d684b68985ade3849edcf58a3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractJackson2HttpMessageConverter: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":86}}}],"partialFingerprints":{"codehealthFindingId/v1":"c375746621ebf55784f3f55471d2157e44cb70704dfbc69988a445646d72af48"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: EscapedErrors: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/bind/EscapedErrors.java"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f0dc2eda9a78a3d29f841b4710b9ba5c1cef271ba7f868be2ccc5ce3cebbc51"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RequestContext: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/result/view/RequestContext.java"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"6c286de1a6fa5982b5d8f391712a4574f1d5a1dae0fcaa05d9fb4219a84d9e29"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: StompSubProtocolHandler: TooManyMethods \u2014 33 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-websocket/src/main/java/org/springframework/web/socket/messaging/StompSubProtocolHandler.java"},"region":{"startLine":75}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcf62b4d82b3f180eaf9389698d89c354c158d2b183ae6280460d8fea50493f6"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: method/RequestMappingInfo.java: FileTooLong \u2014 544 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: RequestMappingInfo (66-1084). 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/RequestMappingInfo.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"7e7d3220517215128a162d1ecf74b9845f52e5f93e7381a2c5bacfd76f3c3282"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: annotation/RequestMappingHandlerAdapter.java: FileTooLong \u2014 537 significant lines (blank, comment-only and punctuation-only lines excluded), about 82% of them inside a single declaration: RequestMappingHandlerAdapter (132-1096). 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/RequestMappingHandlerAdapter.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"63f3263047335c0f4a2a7050f07a744ab9e158951b49e91863b2b43032ba41d7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AspectJExpressionPointcut: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"8731c3814daa0f5c6bffbb4151d189248de638f2283c85a5f7bb75771573d3f6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MethodVisitorTee: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/transform/MethodVisitorTee.java"},"region":{"startLine":27}}}],"partialFingerprints":{"codehealthFindingId/v1":"ed26f63b44c3bcfc0c69f21e3a1968115f8438d934922798f87dd33073709ed3"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SpelExpression: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"c35e4c24f26698ac757ff81cc01421f9c5a04c9716c53fb1f778a1fb8c678c21"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RdbmsOperation: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/object/RdbmsOperation.java"},"region":{"startLine":62}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d57abb3c7660dec874d3a47853bb0de894bfa4f7a45a548c2f608048d3fc5a7"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: SQLErrorCodes: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/support/SQLErrorCodes.java"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d80c4ee0e4be7265fe4cc8fc0051a02354010e7c974cc50dbd774c41e48253e"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: CachedMessageProducer: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/connection/CachedMessageProducer.java"},"region":{"startLine":37}}}],"partialFingerprints":{"codehealthFindingId/v1":"70225658dda14cb8abb03d8d49a75bbffcc834f3442e862d0d4d0d3cc8b1f32b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractMarshaller: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-oxm/src/main/java/org/springframework/oxm/support/AbstractMarshaller.java"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"787f27a06cb4c07fc55be2b2d2a4a5c37a1c698ebd6510a7632c3713ad5ef93d"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MockBodyContent: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockBodyContent.java"},"region":{"startLine":36}}}],"partialFingerprints":{"codehealthFindingId/v1":"52f7c4573da06b4e4e07bfa917627a856b4489e6952b81f187a62867d6a10ed5"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: LifecyclePrintWriter: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/context/request/async/StandardServletAsyncWebRequest.java"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8ed7d307f2a189b2b46a0cb14b9aae61914c8de5883dd7c9edac5ec36f749be"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultWebClientBuilder: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"2390f19542d790f34d5e7b7c6f5f6f848503bc8df2b7f4841a690dec4116c265"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ServerRequestWrapper: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/support/ServerRequestWrapper.java"},"region":{"startLine":63}}}],"partialFingerprints":{"codehealthFindingId/v1":"c93f1d9b5ed915398a2315aa5c679500b29fb1273af4b0523c81e1a8ad81c826"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractHandlerMethodMapping: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMethodMapping.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"216f7aa1eaee9bd606f201a8c265bfe2113fcf549316a3234db760c7c723fe28"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: RedirectView: TooManyMethods \u2014 32 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/view/RedirectView.java"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"6165a7b396427964daa71a27376f7110f0bcc998ae4ebb182285ba20e94981df"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: client/RestTemplate.java: FileTooLong \u2014 530 significant lines (blank, comment-only and punctuation-only lines excluded), about 92% of them inside a single declaration: RestTemplate (107-1059). 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":"spring-web/src/main/java/org/springframework/web/client/RestTemplate.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"90ba3cfb392fd1fae3a2cd271e60c348db4de60c8fb99ffbb27062d614289583"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MutablePropertyValues: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/MutablePropertyValues.java"},"region":{"startLine":45}}}],"partialFingerprints":{"codehealthFindingId/v1":"f4a359e165c1d055c2a17b408e2cb9033dcd0f03cb74b6664ed090b19936d2d9"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: JmsActivationSpecConfig: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/listener/endpoint/JmsActivationSpecConfig.java"},"region":{"startLine":44}}}],"partialFingerprints":{"codehealthFindingId/v1":"81051a1251c247e15b1ec2c0f4ed865cdac1fb9c7e6bad7b3a8948a2239b9466"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractJacksonHttpMessageConverter: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"cfffce13532810ca21a056b97c11972d1e1402979cc11e528597f2b6d1de1540"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MultipartHttpMessageConverter: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartHttpMessageConverter.java"},"region":{"startLine":141}}}],"partialFingerprints":{"codehealthFindingId/v1":"e58ffccf53d1988fbab433c87bf3f22b38b4b4ac615f338432572b7576b1a41b"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: ServletRequestUtils: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/bind/ServletRequestUtils.java"},"region":{"startLine":33}}}],"partialFingerprints":{"codehealthFindingId/v1":"9d7ef9b435dfc9941c0e8491e06019a35158d1b0c6bf2043d665996507f53177"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: InternalParser: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/RfcUriParser.java"},"region":{"startLine":396}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2a22239a5d696f59d2b2a5f23a147e5c9d89c7e9f2d5f46fe413aebb629c75"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: UriUtils: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/UriUtils.java"},"region":{"startLine":55}}}],"partialFingerprints":{"codehealthFindingId/v1":"befd4fb03ccc9e4bb8e34cb10a30fa8dce5fc22655bde9fddad8e4eea5eb4970"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultServerRequest: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerRequest.java"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0143f3812b3db34d979b564d679990d98a7986d757c0b28eb95a9bddf30b8c8"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: DefaultServerResponseBuilder: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java"},"region":{"startLine":66}}}],"partialFingerprints":{"codehealthFindingId/v1":"0784ab1ee27a60eba92a8a3fe4f49080715869a56d7576dff195354680e18c45"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: MvcUriComponentsBuilder: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/MvcUriComponentsBuilder.java"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"1ef193e05e7f9ad58dab9248cb89c73d8e9fa3294373d33929108beb3e9f4be6"}},{"ruleId":"D3","level":"warning","message":{"text":"TooManyMethods: AbstractSockJsSession: TooManyMethods \u2014 31 methods. To reduce it, group the members that share the same data into a smaller type of their own and delegate to it, so no single type carries every responsibility."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-websocket/src/main/java/org/springframework/web/socket/sockjs/transport/session/AbstractSockJsSession.java"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"529d5c5098e2935a10fa51faf52a142f8069d24d711078fd18ae821839cc90c7"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: core/JmsTemplate.java: FileTooLong \u2014 511 significant lines (blank, comment-only and punctuation-only lines excluded), about 95% of them inside a single declaration: JmsTemplate (100-1249). 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":"spring-jms/src/main/java/org/springframework/jms/core/JmsTemplate.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d4d7034b10dc0879a6c554a25faa5ed5eaacb647051294dda963b641aaea1ac"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: util/StringUtils.java: FileTooLong \u2014 506 significant lines (blank, comment-only and punctuation-only lines excluded). To reduce it, split the file along the responsibilities already in it: move each cohesive group of declarations into its own sibling file in the same module or package, so no one file has to be read whole to change one of them."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/StringUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"52bdb70dcccc11ee1762787092e26c94cdf98433984898f7a5c3a9c825387c53"}},{"ruleId":"D3","level":"warning","message":{"text":"FileTooLong: annotation/WebMvcConfigurationSupport.java: FileTooLong \u2014 502 significant lines (blank, comment-only and punctuation-only lines excluded), about 83% of them inside a single declaration: WebMvcConfigurationSupport (184-1199). 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":"spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"409794633e64abd31cc8dc4d58a664980e1a20f5c1cc79737483760da0a332c2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (22 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:1038-1059 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:1222-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:1038\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1038}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c7bf6247573ebd8e5633b33e7e81c310452dfc74bea250bb3fd56a48c7c1763"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (21 lines \u00D7 3): spring-core/src/main/java/org/springframework/asm/ClassReader.java:674-694 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:1034-1054 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:1218-1238 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:674\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":674}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d318f4168dbc12b5e32d1217dae9d78ce200860a61420caf09cbd842549e6e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (20 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/SharedSessionCreator.java:129-148 | spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:468-489 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/SharedSessionCreator.java:129\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/SharedSessionCreator.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"5d3100b17398646cba1a6dd45b4404b53652616399630b75160e9a286af4672f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:555-573 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java:497-515 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:555\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java"},"region":{"startLine":555}}}],"partialFingerprints":{"codehealthFindingId/v1":"8134f9efddee8db86b3cf535ee65e453e6d97abda290b38f4c19bb45b400b93b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (19 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:249-267 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java:252-270 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:249\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"0aaaffa0d577c0947433212cea92d4ab00190d7c0df60cc1ec52d179db241d09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:250-267 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:252-269 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:250\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":250}}}],"partialFingerprints":{"codehealthFindingId/v1":"325da1c1940a8d3b90ca6cdaf00ae7669ab6295d4362b9d1ce5d48811db13658"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:334-351 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:311-328 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:334\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":334}}}],"partialFingerprints":{"codehealthFindingId/v1":"3193519bcd9fd6e8043df05284aa8efe35bcd60eb4fb2d18a80f46410ceb38c6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:373-390 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:351-368 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:373\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":373}}}],"partialFingerprints":{"codehealthFindingId/v1":"30c384c18504b3a33dc4f9505029e5f1accc3582a2e97c574eeed2d7e6208149"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:149-166 | spring-web/src/main/java/org/springframework/http/codec/JacksonTokenizer.java:127-144 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:149\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"281d9303a391bc153c1a06d2a57c71d9ace93660325c3abadfb80eb8ee53b187"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/xml/Jaxb2RootElementHttpMessageConverter.java:191-208 | spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java:900-917 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/xml/Jaxb2RootElementHttpMessageConverter.java:191\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/xml/Jaxb2RootElementHttpMessageConverter.java"},"region":{"startLine":191}}}],"partialFingerprints":{"codehealthFindingId/v1":"33f8d6cb3e9f5562f7d6b6cdacbf20a1ce90436506252cbdbb630c3ae9e0a890"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/xml/SourceHttpMessageConverter.java:237-254 | spring-oxm/src/main/java/org/springframework/oxm/support/AbstractMarshaller.java:218-235 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/xml/SourceHttpMessageConverter.java:237\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/xml/SourceHttpMessageConverter.java"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"50ae808723be03c7bed2807e706ee5761ad77667da6b1085b483e86b669178f5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:278-295 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java:286-303 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:278\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"56e8ce3042cfe0b562cc3732523db647f5dea3236e3ca55cdbab4e12745287ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java:142-159 | spring-web/src/main/java/org/springframework/http/server/ServletServerHttpRequest.java:132-149 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java:142\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpRequest.java"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"074f4a581427dbe351441a54c098a9187c9ce0540a9ad5c9ce445875532ffdd6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:911-928 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:1087-1104 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:911\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":911}}}],"partialFingerprints":{"codehealthFindingId/v1":"f93a034898096901bffd59f521a1cba646fe3c495500600347c84dd18432d0b1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (18 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:322-339 | spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:442-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:322\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":322}}}],"partialFingerprints":{"codehealthFindingId/v1":"ad8023718704c70d31f55e9914c71fad564fbc55b5d72606a1d78d985e821fa3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:940-956 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:1123-1139 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:940\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3ee01211fc02a099767c8b0a415f22d3b0cfa378a046f94939b58583369757a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (17 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/MultiToSingleValueMapAdapter.java:234-250 | spring-core/src/main/java/org/springframework/util/SingleToMultiValueMapAdapter.java:281-297 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/MultiToSingleValueMapAdapter.java:234\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/MultiToSingleValueMapAdapter.java"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"cda09fa9eb8e33bf08f6cab5a48689f8b537b1ff8c051d92b2cb4a799df91b83"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:285-300 | spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:415-430 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:287-302 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:386-401 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:285\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":285}}}],"partialFingerprints":{"codehealthFindingId/v1":"da9430062f03e00f6ed4859405addc92c2b6ae8dbcfac56567ecb1240e9c0d03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 4): spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:442-457 | spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:544-559 | spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java:400-415 | spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java:502-517 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:442\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":442}}}],"partialFingerprints":{"codehealthFindingId/v1":"dab9b9d2aad7647b761fd3b5a31ec9fa45fb1955421435a76c9628c910f1825f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:185-200 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:187-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:185\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"92f1479228f35b8482d9ac9a00fb507edbe1095bda03512470f425693e765619"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:215-230 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:217-232 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:215\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":215}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5eca99e691eaefdd1396e579d2cca81a1b7e333a077f7afdd2a7007ba0aa048"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java:422-437 | spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java:469-484 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java:422\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/ClassPathScanningCandidateComponentProvider.java"},"region":{"startLine":422}}}],"partialFingerprints":{"codehealthFindingId/v1":"8e95d6325809458b4c29e163a36f600c5f066e6c620f41df969b855bc451035f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/type/filter/AbstractTypeHierarchyTraversingFilter.java:77-92 | spring-core/src/main/java/org/springframework/core/type/filter/AbstractTypeHierarchyTraversingFilter.java:103-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/type/filter/AbstractTypeHierarchyTraversingFilter.java:77\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/type/filter/AbstractTypeHierarchyTraversingFilter.java"},"region":{"startLine":77}}}],"partialFingerprints":{"codehealthFindingId/v1":"2962faecdc1297b20b02b23d2847a0f34a84cf03006297838bdfc2b1e710bca8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:119-134 | spring-core/src/main/java/org/springframework/util/MethodInvoker.java:323-338 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:119\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"913c1c15d06f2766868723b15d8c920533c68b1aeabb0edcadf3c6967111ceb1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:303-318 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:405-420 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:303\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":303}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6220d1b0cd918efca0fdefd9b63019ff6f092899ca241083f9c28f5d735300d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (16 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:147-162 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java:160-175 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:147\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"b973b3f17c0b28c06c4181075412463cb02c4d297d0d29c14d973f07016b4e9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:232-246 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:211-225 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:232\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4145bd10b16e1884d1626925ac4a7e3908c9a53620ac1a49f063c5a3dfb40de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:283-297 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:262-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:283\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":283}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a480c88a143a015e32c7161b5b66a911362201767f3a17596b1261aafafa95e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:236-250 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java:244-258 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:236\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java"},"region":{"startLine":236}}}],"partialFingerprints":{"codehealthFindingId/v1":"3c9bc50d0eb97ab55500d52f1bad73a073b3af310bfb0748b7bf08c29aa7533f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java:479-493 | spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java:502-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java:479\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJExpressionPointcut.java"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"08ddb7a6a5fd8e24259bc39d1af9f6cb62dc497dc905850be945acdf29880fac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:962-976 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:1146-1160 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:962\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":962}}}],"partialFingerprints":{"codehealthFindingId/v1":"56a3e67e6944e012858ec2c5e8f44c2e7dab3cc32714f40a01c778b636c444d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:2508-2522 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:2536-2550 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:2508\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":2508}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7b8c36568bc80139012711698a30706fc278478732aaaca4befe40109e2512d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/FieldWriter.java:237-251 | spring-core/src/main/java/org/springframework/asm/RecordComponentWriter.java:186-200 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/FieldWriter.java:237\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/FieldWriter.java"},"region":{"startLine":237}}}],"partialFingerprints":{"codehealthFindingId/v1":"73a0a018512042f22419362c456b162001322423253f127b57dca42f8a5924a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java:671-685 | spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java:1166-1180 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java:671\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":671}}}],"partialFingerprints":{"codehealthFindingId/v1":"4a54ec2151f12f027714459a85ca3e952f8e96288fc2bfe1530818714d92a88a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:509-523 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:522-536 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:509\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":509}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4cc83ae3ef1b1c2139752e14e012b59e2aad4ced0c0807df6f38920fb012d33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (15 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/cors/reactive/DefaultCorsProcessor.java:150-164 | spring-web/src/main/java/org/springframework/web/cors/DefaultCorsProcessor.java:152-166 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/cors/reactive/DefaultCorsProcessor.java:150\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/cors/reactive/DefaultCorsProcessor.java"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"ffaa6d215c9f4b68790ca04166082d860b17c033e1dabbef9f98e17accdc9481"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 3): spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:138-151 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:265-278 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:328-341 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:138\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java"},"region":{"startLine":138}}}],"partialFingerprints":{"codehealthFindingId/v1":"b90e1fa80dedb0470c7927f1d2963d6b6428b53b5b0fdca4f53ce2f9103cd8b4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:340-353 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:342-355 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:340\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":340}}}],"partialFingerprints":{"codehealthFindingId/v1":"eac3492386f2db7337b404c3370448b7201c18d42f2ea0259b3824eef2658b47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:139-152 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:118-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":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"922f6cc3d53ea5a4eeb01c73538c55cbce4a60b2b4a0e4cd5353c8e72a9167fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:261-274 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:240-253 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:261\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":261}}}],"partialFingerprints":{"codehealthFindingId/v1":"92983815fd5cd5ab29097d414921023b8180bfe4646d255d0e0b144380199fa0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:313-326 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:283-296 \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":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"da40548cda15766d5c312770219984649e9d4dea0fec39fcc2f8746446d17fa4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:299-312 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java:307-320 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:299\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"50fef34fbe16ab771fa93c6af743dea109f00884a6a302d4e8fe3bc028dc8a6d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java:169-182 | spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java:220-233 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java:169\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fc44188d4b2143213e3b349b4e998c7cf8213d9dc6067f3a179f73e59fdedbe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:173-186 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:235-248 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:173\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java"},"region":{"startLine":173}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e244241361238c8791edaec271712d6d8b983cf8a3c3d19291bffcf65931206"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:300-313 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:365-378 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:300\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java"},"region":{"startLine":300}}}],"partialFingerprints":{"codehealthFindingId/v1":"f1114ba92832537ebd8253c57491b77ca09aa56a476079a098680701a9ca4c13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:2609-2622 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:2637-2650 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:2609\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":2609}}}],"partialFingerprints":{"codehealthFindingId/v1":"4103569997f38c64fb1f7448a7a8d40fba5c48268e2a88d5207bfcc085efb5bb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java:169-182 | spring-core/src/main/java/org/springframework/util/xml/StaxStreamXMLReader.java:147-160 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java:169\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/xml/StaxEventXMLReader.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"96144d71f5212311fc0c8be900d0a57dad6821ebffc113c080598f23ecba09fd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java:220-233 | spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java:310-323 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java:220\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":220}}}],"partialFingerprints":{"codehealthFindingId/v1":"1f45336246c273d1864406f27959cc1fd1e3c88f8c43f387193292d8b1c55e17"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:179-192 | spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:263-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:179\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"386ad69829fdd1f881bc3274c8694e9029d280757c88383d3a3b8942cce53bbd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java:222-236 | spring-webflux/src/main/java/org/springframework/web/reactive/result/condition/PatternsRequestCondition.java:195-208 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java:222\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/DestinationPatternsMessageCondition.java"},"region":{"startLine":222}}}],"partialFingerprints":{"codehealthFindingId/v1":"93cbd33b51c3382db6abd8922b39a48c64b80c3724c622887aa06d8f04ba3b7f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/accept/ApiVersionStrategy.java:73-86 | spring-webflux/src/main/java/org/springframework/web/reactive/accept/ApiVersionStrategy.java:128-141 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/accept/ApiVersionStrategy.java"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"2dadc04212d8a00a0e406db99fb62adc1e29b59043a0fb050479f8bb29ea1079"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (14 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:1525-1538 | spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:1630-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:1525\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":1525}}}],"partialFingerprints":{"codehealthFindingId/v1":"da99d822dd3b9ba678d070d85b5c197bfb2ccc23cf8563a883ab89a4b6d8ff41"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): framework-docs/src/main/java/org/springframework/docs/web/webflux/controller/annmethods/partevent/PartEventController.java:50-64 | framework-docs/src/main/java/org/springframework/docs/web/webfluxfnrequest/PartEventHandler.java:39-51 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060framework-docs/src/main/java/org/springframework/docs/web/webflux/controller/annmethods/partevent/PartEventController.java:50\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"framework-docs/src/main/java/org/springframework/docs/web/webflux/controller/annmethods/partevent/PartEventController.java"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"dd8fc8744e66af7448b1a257683e7c1fc1c60aa0d1286596535b291ec5f0a201"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:182-194 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:170-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:182\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java"},"region":{"startLine":182}}}],"partialFingerprints":{"codehealthFindingId/v1":"6b4886db0eea98c06e0aa4fa4f72501f84ee321e94473524001521e2dc820f59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:212-224 | spring-web/src/main/java/org/springframework/http/codec/JacksonTokenizer.java: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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:212\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b37f5341ef883f520d9a850f82568e26e45493cddafe5c963e1661dd480751b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/AbstractGenericHttpMessageConverter.java:104-116 | spring-web/src/main/java/org/springframework/http/converter/AbstractSmartHttpMessageConverter.java:94-107 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/AbstractGenericHttpMessageConverter.java:104\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/AbstractGenericHttpMessageConverter.java"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"9489648f91a410667f2c67879e3176a394e8b10d068a75ff8249364f93c13bf5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:178-190 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java:186-198 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:178\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e00f66270e621737f0d7bc428680f0fb1eb3c1cc7172bec84155ecce15047f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/JCacheInterceptor.java:70-82 | spring-context/src/main/java/org/springframework/cache/interceptor/CacheInterceptor.java:50-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":"spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/JCacheInterceptor.java"},"region":{"startLine":70}}}],"partialFingerprints":{"codehealthFindingId/v1":"a3292bdb06600c562f23b21ad5a1d41266a421aa4d3284dc2d83acd867b67d10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/retry/RetryTemplate.java:238-250 | spring-core/src/main/java/org/springframework/core/retry/RetryTemplate.java:265-277 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/retry/RetryTemplate.java:238\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/retry/RetryTemplate.java"},"region":{"startLine":238}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd0e00eaae72a5885aae5ba7b7cc072b806e1a879c55cdd6244aaa7088ff36b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/NestedCheckedException.java:99-111 | spring-core/src/main/java/org/springframework/core/NestedRuntimeException.java:100-112 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/NestedCheckedException.java:99\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/NestedCheckedException.java"},"region":{"startLine":99}}}],"partialFingerprints":{"codehealthFindingId/v1":"db591cb55b7d7b4e26101ce5d20a197ebc71a1cf046a6bf88dceaa97f627606c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:78-90 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:173-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:78\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":78}}}],"partialFingerprints":{"codehealthFindingId/v1":"0e6cdade40a35ab00020e555f9accb872fd129d06eda8291d11b866a867ab860"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java:149-161 | spring-expression/src/main/java/org/springframework/expression/spel/ast/PropertyOrFieldReference.java:214-226 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java:149\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/MethodReference.java"},"region":{"startLine":149}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b0fe3740574aa29e57e02b8b3181258bc6e5d11aa13e9e9db1f7cd671ef85a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:202-214 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:237-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:202\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java"},"region":{"startLine":202}}}],"partialFingerprints":{"codehealthFindingId/v1":"12846b3ecdcdf5df26c84f39cfbc8f18bcbb403b684c2fc7ee0d5fbf15de7edc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:1708-1720 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:2267-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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1708}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8a9545b26096736d571fe8076fbc34c3dcb7813d6512f152983c33164be96dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:1729-1741 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:2296-2308 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1729}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e4b6972069c49633b410e24a91be78b93c87b26e5bbbbafa15dab5f334ea4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/Assert.java:605-617 | spring-core/src/main/java/org/springframework/util/Assert.java:623-635 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/Assert.java:605\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/Assert.java"},"region":{"startLine":605}}}],"partialFingerprints":{"codehealthFindingId/v1":"74e4de9072e50c14ffad514e8aac580336fd58516ea3b64ee9e66cce4a4129e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java:93-105 | spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericTableMetaDataProvider.java:104-118 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java:93\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"429191ad7414a0c7cf1b48a8d05ad78c117b6e0c6d87d9bda4fe9046931df925"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:565-577 | spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java:523-535 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:565\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":565}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0db6c9075224d19123eb7e290eb1a200de2967e814fea03dcc512d53ecb88c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java:328-340 | spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java:366-378 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java:328\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/DefaultLobHandler.java"},"region":{"startLine":328}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcf8ee26703c60c00a6993aa00f8fce298d601891117ea0a86d2646ec3c16277"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcAccessor.java:117-129 | spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcTransactionManager.java:122-134 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcAccessor.java:117\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcAccessor.java"},"region":{"startLine":117}}}],"partialFingerprints":{"codehealthFindingId/v1":"27933a44d4e8f63ffe4a0963816801cc895979455f3fb11675b4d4811ea63376"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java:205-217 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java:217-229 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java:205\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"a47e91ba933af96e9b98eee89e5b2e2f0d367874c73e8b39688d85ee635f77cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:355-367 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:396-408 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:355\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java"},"region":{"startLine":355}}}],"partialFingerprints":{"codehealthFindingId/v1":"92861e4d5d27fd54c3e64a73a56149dfae8eec9c763698dd9788b05fd6e2e011"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (13 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/pattern/LiteralPathElement.java:51-63 | spring-web/src/main/java/org/springframework/web/util/pattern/SingleCharWildcardedPathElement.java:64-77 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/pattern/LiteralPathElement.java:51\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/pattern/LiteralPathElement.java"},"region":{"startLine":51}}}],"partialFingerprints":{"codehealthFindingId/v1":"10969a15292c62259624f1465dfccd180f6a08bc7fe340b2c093fb3f0d5a7705"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 4): spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:267-278 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:302-313 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:330-341 | spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:367-378 \u2014 all 4 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java:267\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java"},"region":{"startLine":267}}}],"partialFingerprints":{"codehealthFindingId/v1":"f842cfd8c35de0210f64a3d944de6cb5e6ac0c5683e8e4133b3b70106681ba75"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:175-187 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Projection.java:93-104 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Selection.java:115-126 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:175\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":175}}}],"partialFingerprints":{"codehealthFindingId/v1":"a14f55c3b0895d568ea300015e49c62a2a58f6b30ec4b178191e1d41a750d206"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 3): spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java:279-290 | spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java:47-58 | spring-web/src/main/java/org/springframework/web/util/JavaScriptUtils.java:67-79 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java:279\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompDecoder.java"},"region":{"startLine":279}}}],"partialFingerprints":{"codehealthFindingId/v1":"9231d0f16644267b25bf37e805f26f532a779e1863fe3bc9fceb9b75b06a5a5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java:71-82 | spring-web/src/main/java/org/springframework/http/codec/json/JacksonJsonDecoder.java:119-130 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2JsonDecoder.java"},"region":{"startLine":71}}}],"partialFingerprints":{"codehealthFindingId/v1":"2e137b05b56f76e0871972a2d2fa20fcc7ee345ccb4c32eb106e2c650de5ba06"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java:154-165 | spring-web/src/main/java/org/springframework/http/converter/AbstractKotlinSerializationHttpMessageConverter.java:174-185 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java:154\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"49780e30df603a4d40b81fc2f97681ca2fb5f794deb00a843fd7af03c6d62e5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java:170-181 | spring-web/src/main/java/org/springframework/http/converter/AbstractKotlinSerializationHttpMessageConverter.java:188-199 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java:170\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java"},"region":{"startLine":170}}}],"partialFingerprints":{"codehealthFindingId/v1":"7382e183d4e96c721e49e7ad360a2bfbf530f58684d7225b24ce73b3ad3c3ec7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:343-354 | spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java:211-222 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:343\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":343}}}],"partialFingerprints":{"codehealthFindingId/v1":"7040b2137e54165b6f870bb47ccaada5e620545f5848c97fd9431943e3605509"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:401-412 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:356-367 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:401\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":401}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa6e46440638d8a44bfaf7ce22c4417fe0de4394dbcdf27e66aa1d2db245d44d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:154-165 | spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:445-456 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:154\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":154}}}],"partialFingerprints":{"codehealthFindingId/v1":"4956d19e0b9751dbaf165a7349f73a8ed04f709a3d1b7a4f7de542b98ac3cc3c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java:212-223 | spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java:233-244 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java:212\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/DisposableBeanAdapter.java"},"region":{"startLine":212}}}],"partialFingerprints":{"codehealthFindingId/v1":"3baaaca6555bbb3e5ba872efef05a52a157c1e355ccfa637e37ce1b232c36492"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java:282-293 | spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java:306-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java:282\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/standard/Tokenizer.java"},"region":{"startLine":282}}}],"partialFingerprints":{"codehealthFindingId/v1":"68df6759bb7e5fb3408d266d1e34555d0ef1d6ee33fd5f3a3e6689f30235c51e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:1560-1571 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:2110-2121 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:1560\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1560}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf78fd681923286600acced57b99c781bfe36066ce25eea8a9f846dfc1db7a29"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:1668-1679 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:2221-2232 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:1668\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":1668}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e32e9fc0f4841e8424e3f62878401bb93246e2d6530fb0a7382a389bcd197ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/simple/AbstractJdbcCall.java:299-310 | spring-jdbc/src/main/java/org/springframework/jdbc/object/RdbmsOperation.java:340-354 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/simple/AbstractJdbcCall.java:299\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/simple/AbstractJdbcCall.java"},"region":{"startLine":299}}}],"partialFingerprints":{"codehealthFindingId/v1":"7091f9310c694ee69cb98ce1069489b3c3b8011e9693d584fdcf925e32914532"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java:350-361 | spring-jdbc/src/main/java/org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy.java:236-247 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java:350\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/LazyConnectionDataSourceProxy.java"},"region":{"startLine":350}}}],"partialFingerprints":{"codehealthFindingId/v1":"95e6ae5400b222e752a315d56fc5eba937bb926a2828407f495930e35f2ce7aa"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java:139-150 | spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java:166-177 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java:139\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/support/lob/TemporaryLobCreator.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"3a91b030bdfd0958a4535106e853d87326674a58fa2781d3271107748d5468a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:319-330 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:332-343 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":319}}}],"partialFingerprints":{"codehealthFindingId/v1":"45d6b257e6eec1f007bd79c185f72fa7bbee5a307e6673ebd6d17e0f33698941"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeadersMethodArgumentResolver.java:65-76 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeadersMethodArgumentResolver.java:65-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeadersMethodArgumentResolver.java:65\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeadersMethodArgumentResolver.java"},"region":{"startLine":65}}}],"partialFingerprints":{"codehealthFindingId/v1":"d58dbc652828b7bcb5bd14751d1c6a52b287525a10d1d3bae5e479e5aefa6e7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/simp/broker/AbstractSubscriptionRegistry.java:52-63 | spring-messaging/src/main/java/org/springframework/messaging/simp/broker/AbstractSubscriptionRegistry.java:88-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/simp/broker/AbstractSubscriptionRegistry.java:52\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/broker/AbstractSubscriptionRegistry.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"3958cd6cb09a01abc416eda794709a60d9bc2518287df49ae12c38aa66cb94de"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/pattern/LiteralPathElement.java:74-85 | spring-web/src/main/java/org/springframework/web/util/pattern/SingleCharWildcardedPathElement.java:98-109 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/pattern/LiteralPathElement.java:74\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/pattern/LiteralPathElement.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7ce33d41025e6974e69f229f6f961355b3dad41b6747a921029f8c4628aa669"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (12 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:961-972 | spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java: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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:961\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":961}}}],"partialFingerprints":{"codehealthFindingId/v1":"741da5dd5115fbe20c54267bd318bd65c0d710f5f20889a13c406222c9334fe8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 4): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/HandlerMethodArgumentResolverComposite.java:129-139 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java:127-137 | spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java:131-141 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/HandlerMethodArgumentResolverComposite.java:128-138 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/HandlerMethodArgumentResolverComposite.java:129\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/HandlerMethodArgumentResolverComposite.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"b6d0d8b86b55bcf94f94c36dd909ba3626b36095f55749fef0d51ac9fdfd27e6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 3): spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java:1819-1829 | spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java:1868-1878 | spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java:1899-1909 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java:1819\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/DefaultListableBeanFactory.java"},"region":{"startLine":1819}}}],"partialFingerprints":{"codehealthFindingId/v1":"d202fdbc020f9efe69b3429c7ed61312ab3f4d861eb7f0d1d666966abdf240a7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/JdkClientHttpRequest.java:144-154 | spring-web/src/main/java/org/springframework/http/client/JettyClientHttpRequest.java:110-120 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/JdkClientHttpRequest.java:144\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/JdkClientHttpRequest.java"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"0f22a9eb7ea0cb52044259c2052364a326f3f70199b57370622d3c13148dde70"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:196-206 | spring-core/src/main/java/org/springframework/core/io/buffer/SubscriberInputStream.java:175-185 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java:196\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/SubscriberInputStream.java"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"4cd90751e01760ee0f3ffe3604db0dbe1fb85f53c916ad418c02fd0b6fa67fe8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:211-221 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonDecoder.java:187-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:211\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca269d6daf4cc86dd67a251fd021c0c15ac737ea241c46c9d5a531be31e85ab3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:278-288 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:251-261 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:278\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java"},"region":{"startLine":278}}}],"partialFingerprints":{"codehealthFindingId/v1":"ebfbdc6c9afaf9f52ababcdabd7b0acf1f6b19d093635306e84a4a61e07f77e1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:101-111 | spring-web/src/main/java/org/springframework/http/codec/JacksonTokenizer.java:85-95 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:101\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java"},"region":{"startLine":101}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e29a7991badfe9a0e542a1e2b5f6fbc04bcf9bef51079c169b40ea11b73c046"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:211-221 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java:219-229 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:211\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java"},"region":{"startLine":211}}}],"partialFingerprints":{"codehealthFindingId/v1":"25f6dc9500c6f48f65961a82080a814abda950bf82d82b01d6c7c08919baaabb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java:178-188 | spring-context/src/main/java/org/springframework/context/annotation/ConfigurationClassPostProcessor.java:1054-1064 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java:178\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/aot/BeanDefinitionPropertiesCodeGenerator.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"9eb931c5101bc80c00be2a8d88e34f45134c280ee6c1852b576f0b5a08dc2075"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:244-254 | spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java: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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:244\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"62c81aafe1ba5a3bf5817078be171b8e0cd97dc09633d1e094295e6988567926"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:263-273 | spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:562-577 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:263\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":263}}}],"partialFingerprints":{"codehealthFindingId/v1":"b493414f67d9ddabf8a5d927108aa6b3fb8e69a6c166fc311050abc02cb514b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDec.java:60-72 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpInc.java:60-70 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDec.java:60\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDec.java"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b295a0f20b6b021e7f63f062f7c871984f760aa40bf811a91545384ebc92886"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java:291-301 | spring-jms/src/main/java/org/springframework/jms/annotation/JmsListenerAnnotationBeanPostProcessor.java:233-243 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java:291\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java"},"region":{"startLine":291}}}],"partialFingerprints":{"codehealthFindingId/v1":"74bb64b86cb1c912d99b60c8064917be680e959f81ad79ec7af8afd7c1684cf4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java:701-711 | spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java:737-747 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java:701\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"9253a62261267c2bab58fc887e05debb6b15ce4b0ffa355cd45097315da4c1f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java:327-337 | spring-context/src/main/java/org/springframework/scripting/support/StandardScriptFactory.java:163-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java:327\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java"},"region":{"startLine":327}}}],"partialFingerprints":{"codehealthFindingId/v1":"7f260d60d7183f5d4c37fa6a75af7f7a6ada9cc4af2c3d81990ddda9efa0caf9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-context/src/main/java/org/springframework/validation/DataBinder.java:314-324 | spring-context/src/main/java/org/springframework/validation/DataBinder.java:347-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/validation/DataBinder.java:314\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"53510484438f570ecfff9ae01fe25f59be0edf17927a67812db8f5b94396eb56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java:210-220 | spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java:225-235 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java"},"region":{"startLine":210}}}],"partialFingerprints":{"codehealthFindingId/v1":"edd642fccbfa50aea3ca5a502b942feca43c6e3ba855152f0f69a512982e44f0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java:389-399 | spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java:401-411 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java:389\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java"},"region":{"startLine":389}}}],"partialFingerprints":{"codehealthFindingId/v1":"8be873ec5dbe7b5e4b49a1f520e2a53054e1171127958fd58cc95ffaad787d9c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:195-205 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:205-215 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:195\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a247d02c03147a5ba188e37f40359d15bd070e8960426fe885119324ec8dfd2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java:150-160 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java:160-170 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java:150\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"f98295856bcd8eddd926b62a2b75084d051e62930c896d6c6edd947738916169"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeaderMethodArgumentResolver.java:73-83 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java:75-85 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeaderMethodArgumentResolver.java"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"a16cce9be310d4e01488077a973800565c7315c4ba24c0655548a6030e5c11e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/support/OpenEntityManagerInViewFilter.java:168-178 | spring-orm/src/main/java/org/springframework/orm/jpa/support/OpenEntityManagerInViewInterceptor.java:90-100 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/support/OpenEntityManagerInViewFilter.java:168\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/support/OpenEntityManagerInViewFilter.java"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6b1ded5e044fe9959510b26e8f2d6e9cfe4a3dead5d8f9149bac5bf4115182b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:381-391 | spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:494-504 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java:381\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"b2ca9cb38e1be4b873d103686c1fc9cdc119e1d9f412f318e8777f0d0f7b62a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java:177-187 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java:152-162 \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":"spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":177}}}],"partialFingerprints":{"codehealthFindingId/v1":"dcfb087c5a111709ae767919a1493047de43e228275afde56a6463ff8acecdc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:321-331 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:361-371 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:321\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java"},"region":{"startLine":321}}}],"partialFingerprints":{"codehealthFindingId/v1":"0dc2bc22bb928de3a09986aba9fc8d930e21fa96b1d36fd954299467a4a6c717"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (11 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java:235-245 | spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerResponseBuilder.java:399-409 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java:235\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultEntityResponseBuilder.java"},"region":{"startLine":235}}}],"partialFingerprints":{"codehealthFindingId/v1":"a7c8b8675758318027c026cde8e051cb06a7f9f261298166c4df566f0fec006b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 6): spring-core/src/main/java/org/springframework/asm/AnnotationVisitor.java:73-82 | spring-core/src/main/java/org/springframework/asm/ClassVisitor.java:72-81 | spring-core/src/main/java/org/springframework/asm/FieldVisitor.java:69-78 | spring-core/src/main/java/org/springframework/asm/MethodVisitor.java:86-95 | spring-core/src/main/java/org/springframework/asm/ModuleVisitor.java:71-80 | spring-core/src/main/java/org/springframework/asm/RecordComponentVisitor.java:71-80 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/AnnotationVisitor.java:73\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/AnnotationVisitor.java"},"region":{"startLine":73}}}],"partialFingerprints":{"codehealthFindingId/v1":"89fe6104398534ac094ab6d86c5afa46652c80f25b7cce2670a89f0ce6492d39"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java:124-133 | spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java:149-158 | spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java:174-183 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java:124\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/xml/UtilNamespaceHandler.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"e568562a313dc1b6e9ca700e3326ccef1319d438754bf56146b44c2a64154eb6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java:139-148 | spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:321-330 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:361-370 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java:139\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"0487dcc944bacb1f441c962c4a577f90c573b3322f6f5d11a563bb65083bf4af"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java:54-63 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpNE.java:55-64 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Operator.java:93-103 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c4d8712387f04005443ccd124c433532941064b217a5481a115e7aa0b8f4120"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 3): spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java:68-77 | spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java:91-100 | spring-jms/src/main/java/org/springframework/jms/config/AnnotationDrivenJmsBeanDefinitionParser.java:52-61 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java:68\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/config/AnnotationDrivenBeanDefinitionParser.java"},"region":{"startLine":68}}}],"partialFingerprints":{"codehealthFindingId/v1":"31718ae5392872c91dc276f00a31c6b6b050ae64e968f6e1ae1f52bff7a429e4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:325-334 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:327-336 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:325\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"c9c78715914b027fcd9ee864072480bf94ac2e276ca4d7afa0fe3985c393b07f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:136-145 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonDecoder.java:113-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:136\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java"},"region":{"startLine":136}}}],"partialFingerprints":{"codehealthFindingId/v1":"647186316777c0f2025944b8f36ad6b641245c0bda8210b26ec6ab016732f044"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/DefaultParts.java:224-233 | spring-web/src/main/java/org/springframework/http/converter/multipart/DefaultParts.java:217-226 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/DefaultParts.java:224\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/DefaultParts.java"},"region":{"startLine":224}}}],"partialFingerprints":{"codehealthFindingId/v1":"0a2181bec17eeee458185bdcfc100800f3b21ab5e016d091b3e09e9140254511"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:468-477 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java:414-423 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:468\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"37e18063bd7c9a7fc6cc4de83c7f6c21fd90cbcd256be28038d69b40c16e27df"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/PartEventHttpMessageWriter.java:72-81 | spring-web/src/main/java/org/springframework/http/codec/multipart/PartHttpMessageWriter.java:72-81 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/PartEventHttpMessageWriter.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"7a3282279bb89abb67b25c618c80d06634706adf23ed732f5cd8bc0cb144c4ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:242-251 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:273-282 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:242\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java"},"region":{"startLine":242}}}],"partialFingerprints":{"codehealthFindingId/v1":"c8d02ac570ec2031c285544bbe336eafa7327c8f80be3a534d2ada8f226c73b2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java:844-853 | spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java:854-863 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java:844\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java"},"region":{"startLine":844}}}],"partialFingerprints":{"codehealthFindingId/v1":"ddfe43918d9517c6159a7737b4b58edabe5db3d42d6bf5691fa6a6071e9bb0c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java:201-210 | spring-messaging/src/main/java/org/springframework/messaging/converter/ProtobufMessageConverter.java:203-212 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java:201\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/protobuf/ProtobufHttpMessageConverter.java"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"f308b41cbf4cb764324998d1034f95ca86357d6b821c3df8e03d78b74abed0ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/xml/Jaxb2CollectionHttpMessageConverter.java:94-103 | spring-web/src/main/java/org/springframework/http/converter/ResourceRegionHttpMessageConverter.java:91-100 \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":"spring-web/src/main/java/org/springframework/http/converter/xml/Jaxb2CollectionHttpMessageConverter.java"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"89ce6a1034f107afafe4634ab03b2c6ab8859cccc92c980c0ee923f9c877d51c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:352-361 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/ChannelSendOperator.java:360-369 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java:352\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ChannelSendOperator.java"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"8d35dfa92f95bec1214346e41b9a22e1d32e9375374ef731f25300f1c8720a19"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java:520-529 | spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java:580-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java:520\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":520}}}],"partialFingerprints":{"codehealthFindingId/v1":"343244148e795f4bf284a7108470de97604d822fe0de32f4aacf4f6c80a96ce7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java:72-81 | spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java:122-131 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java:72\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeansDtdResolver.java"},"region":{"startLine":72}}}],"partialFingerprints":{"codehealthFindingId/v1":"32cd767f8c5c35e128e17ff54a59e9f8fb437e9414e21ecc1d134082f8a7dfe3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java:162-171 | spring-beans/src/main/java/org/springframework/beans/factory/xml/PluggableSchemaResolver.java:156-165 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java:162\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/xml/DefaultNamespaceHandlerResolver.java"},"region":{"startLine":162}}}],"partialFingerprints":{"codehealthFindingId/v1":"eca5f4acec3896f7cbc9bd60e1ce128ba5c4dcf3b1068c04fd898f4b30d33af4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java:488-497 | spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java:561-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":"spring-beans/src/main/java/org/springframework/beans/TypeConverterDelegate.java"},"region":{"startLine":488}}}],"partialFingerprints":{"codehealthFindingId/v1":"da26398ef52a8947b47cb1a8b3f345567ffc4839c04d6ed07fd01afc661a5c14"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java:87-96 | spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java:138-147 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java:87\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/cache/interceptor/NameMatchCacheOperationSource.java"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb8ebe075df22ea44747b21ccba3275b4eb26ee24254b2ce4acac7911c81b51c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:398-407 | spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:444-453 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:398\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java"},"region":{"startLine":398}}}],"partialFingerprints":{"codehealthFindingId/v1":"772cae9159ce9d4227b47ea8f070c1e3ff2d5064329ff57918c31d155ef4a431"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java:254-265 | spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java:268-277 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java:254\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java"},"region":{"startLine":254}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc0d54bc84bc0cf35f653fd5f50199a103731c7b022514a2761f1c7f562c2e47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/annotation/AnnotatedMethod.java:313-322 | spring-core/src/main/java/org/springframework/core/MethodParameter.java:898-907 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/annotation/AnnotatedMethod.java:313\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/AnnotatedMethod.java"},"region":{"startLine":313}}}],"partialFingerprints":{"codehealthFindingId/v1":"771cb7d03fb034e96d6bd52dd4269b0f25933ceefcdfdb18b6719a85e95e8a42"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/annotation/MergedAnnotationsCollection.java:243-252 | spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java:575-584 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/annotation/MergedAnnotationsCollection.java:243\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/MergedAnnotationsCollection.java"},"region":{"startLine":243}}}],"partialFingerprints":{"codehealthFindingId/v1":"0eb26f84379acea3587906dd893f803e6bcf40368657aaa020e736c257d7fecb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java:462-471 | spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java:488-497 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java:462\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/annotation/ScheduledAnnotationBeanPostProcessor.java"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"a4af97a58b57eb6b9022461e7fc764319d3f6bf500924d1699a2e7be88baa3dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/Frame.java:806-815 | spring-core/src/main/java/org/springframework/asm/Frame.java:824-833 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/Frame.java:806\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/Frame.java"},"region":{"startLine":806}}}],"partialFingerprints":{"codehealthFindingId/v1":"ada66a6195ae9aef5eee825ecac2d26e0643a4d8c4eea2489f0bc2ec7a82ac0f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java:119-128 | spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java:153-162 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"b12872999f2f09a5acb73b99909fc7c8b17afdd8e1fdd90a8d17d19aa04373d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java:889-898 | spring-core/src/main/java/org/springframework/cglib/transform/impl/AccessFieldTransformer.java:55-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java:889\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/core/EmitUtils.java"},"region":{"startLine":889}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef2cd7c69abd5c4d966b84b4d4d9dbadf48a9ef6510ea5144ab3160e612b6f7d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:374-383 | spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java:332-341 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:374\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":374}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ae4e7fbf99db7dc130c4bcb7af163d3e91e545735d0969bb67942115e464b65"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java:519-528 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/BeanPropertyRowMapper.java:161-170 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java:519\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/support/JdbcUtils.java"},"region":{"startLine":519}}}],"partialFingerprints":{"codehealthFindingId/v1":"5c7c4bc0a885a3d133d38bfc2a35fb0ceb4ebbee0f2804f354c6447d58ea112b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java:145-154 | spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java:209-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java:145\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/config/AbstractJmsListenerEndpoint.java"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"c79a250d100092b0aa0dd69bf1fe4e91b592ea084c1749d8b480bae73c97b2e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java:84-93 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java: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":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"8435f90593878b3732931f4f2fdc1c2001cc356dace77d9d244f6f60c0ec1498"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:318-327 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:298-308 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:318\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":318}}}],"partialFingerprints":{"codehealthFindingId/v1":"93867b806ba4852e1c7000db19a01821284f6f662cf697bcd94379811e10f8f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:152-161 | spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:229-238 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:152\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java"},"region":{"startLine":152}}}],"partialFingerprints":{"codehealthFindingId/v1":"e004f94170f2bfadd0decbceee6cbec5a9f94ae2954f6283695c3cdd36610a6b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java:84-93 | spring-web/src/main/java/org/springframework/web/service/invoker/HttpServiceMethod.java:111-120 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java:84\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce40f5f356a9bc5bf853c834db85132ce48904586bfa9e952ce5298438a27844"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java:271-280 | spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SubscriptionMethodReturnValueHandler.java:171-180 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java:271\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SendToMethodReturnValueHandler.java"},"region":{"startLine":271}}}],"partialFingerprints":{"codehealthFindingId/v1":"ca3bfbda62c20af5f1086e1071bcf18d725f4f91474a8511541f5987a485e297"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java:610-619 | spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java:636-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java:610\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java"},"region":{"startLine":610}}}],"partialFingerprints":{"codehealthFindingId/v1":"c797b0969862ca996ca279cefdb10245045435d05af1a9490ac091801ca6cd03"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-test/src/main/java/org/springframework/mock/http/client/reactive/MockClientHttpRequest.java:157-166 | spring-test/src/main/java/org/springframework/mock/http/server/reactive/MockServerHttpResponse.java:143-152 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-test/src/main/java/org/springframework/mock/http/client/reactive/MockClientHttpRequest.java:157\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/http/client/reactive/MockClientHttpRequest.java"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"12e55774b31b746d214c06232a670e5b182699cad923e72b408a77a2350743f6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java:114-123 | spring-web/src/main/java/org/springframework/web/service/invoker/HttpRequestValues.java:96-105 \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. Note what the matched lines are: every one of them assigns one field to another, so the block is a hand-written mapper between two data shapes rather than behaviour with a helper inside it. Extracting one shared function only works if both sites map the SAME pair of types in the same direction \u2014 check that first, because inverse or differently-typed mappers have no single function they can both call. Where they do not, the moves that exist are a generated or reflective mapper, a common embedded/base type the fields live on once, or accepting the run and covering it with a test that fails when a field is added to one side only."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/reactive/function/server/MockServerRequest.java"},"region":{"startLine":114}}}],"partialFingerprints":{"codehealthFindingId/v1":"e13ecfc1850cb9787cef545052d3c5e954bdca69065c3786fdaa46b2f85f090b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/support/RestClientAdapter.java:119-128 | spring-webflux/src/main/java/org/springframework/web/reactive/function/client/support/WebClientAdapter.java:131-140 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/client/support/RestClientAdapter.java:119\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/support/RestClientAdapter.java"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"a83c643c5689ba9512586d28ce2538097efdaa5c9b4d79ff82c823c30852017a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/DefaultResponseErrorHandler.java:200-209 | spring-web/src/main/java/org/springframework/web/client/DefaultRestClient.java:729-738 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/DefaultResponseErrorHandler.java"},"region":{"startLine":200}}}],"partialFingerprints":{"codehealthFindingId/v1":"892eb38c478e4d51af5e793bbd01177effe7f2acf223d4b6880ecd5d7dacc46e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (10 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java:281-290 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java:201-210 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java:281\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"502a6f29207c7869dd554c67ea72c39fdc009773c81f296a411647d2abda90ee"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:403-411 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:377-385 | spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:551-559 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:500-508 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:403\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java"},"region":{"startLine":403}}}],"partialFingerprints":{"codehealthFindingId/v1":"857fa9e68419115371d7807cdbe25884eafb29505d81e87aa91d2e165afbbb13"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 4): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java:169-177 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java:179-187 | spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java:196-204 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java:171-179 \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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"192bed7e1e70e43f64d3b9ee3ce5d6c45551f16614b65567632a7e1e9af5311e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:431-439 | spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:443-451 | spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:455-463 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java"},"region":{"startLine":431}}}],"partialFingerprints":{"codehealthFindingId/v1":"7d49dd970df20deb309dd68388dc7cfb2deee6da3c3e77c7937f9dbe6e820ecd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:468-476 | spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:480-488 | spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:492-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:468\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java"},"region":{"startLine":468}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b91db34ff2003ae52f308ca986a85eebe8eb05a4a50812a038d84705da703dc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 3): spring-web/src/main/java/org/springframework/web/cors/reactive/CorsUtils.java:90-98 | spring-web/src/main/java/org/springframework/web/cors/CorsUtils.java:57-65 | spring-web/src/main/java/org/springframework/web/util/WebUtils.java:816-824 \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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/cors/reactive/CorsUtils.java"},"region":{"startLine":90}}}],"partialFingerprints":{"codehealthFindingId/v1":"b3e96280aa9170f8f020c510cd80dd6ea93613f1d90bdbef41cc216116719cdc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:358-366 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:360-368 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:358\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":358}}}],"partialFingerprints":{"codehealthFindingId/v1":"db990ad44150014b89993dcaddcf1a791eb43d7fc57b6727a7963ca3c1cfc2c5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:116-124 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:118-126 \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":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"70533c13eb2143a4daee850d88fdfca0ed3b0668823296ced06424e3b7bd5bce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:155-163 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:143-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java:155\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Encoder.java"},"region":{"startLine":155}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fe5040bca71838693075e305d1eff8e452326df9e2138dd535569163b99455a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java:247-255 | spring-web/src/main/java/org/springframework/http/codec/JacksonCodecSupport.java:235-243 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java:247\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java"},"region":{"startLine":247}}}],"partialFingerprints":{"codehealthFindingId/v1":"73f73c183674af1a22da0eb6bf4e40f48563a258c5cc8a4a0f3b8afbec11bcc7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:593-602 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java:534-542 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:593\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java"},"region":{"startLine":593}}}],"partialFingerprints":{"codehealthFindingId/v1":"d482b4ebcbb0da59d41f93a8385c403819677e69ddb7c6bafaee3b7c0d12265c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartUtils.java:76-84 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java:127-135 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartUtils.java:76\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartUtils.java"},"region":{"startLine":76}}}],"partialFingerprints":{"codehealthFindingId/v1":"12acce13c54db52e356e01329744d4847a53a7c60dd6ebf033abcbea2449dbb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:203-211 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:239-247 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:203\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":203}}}],"partialFingerprints":{"codehealthFindingId/v1":"6fb4a2a512e29478ec4ff908fcc963d3bec0525e1380a608b80b9d26ac60025c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:274-282 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:273-281 \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":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":274}}}],"partialFingerprints":{"codehealthFindingId/v1":"be4f9bef8c87ad734c4735572da113086672fcba140181aa00425e9bc01f4f62"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java:521-529 | spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java:658-666 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java:521\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/DefaultHttpMessageConverters.java"},"region":{"startLine":521}}}],"partialFingerprints":{"codehealthFindingId/v1":"8460b24d50843dddb011059f3fd794bd9ba26c54ea8aad1f44579baad8907714"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/observation/DefaultServerRequestObservationConvention.java:133-141 | spring-web/src/main/java/org/springframework/http/server/reactive/observation/DefaultServerRequestObservationConvention.java:134-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/observation/DefaultServerRequestObservationConvention.java:133\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/observation/DefaultServerRequestObservationConvention.java"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"38562f931200b3e8b9dbcd4e228a38be9ad743629e6145c6f50b7a11f906141e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java:697-705 | spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java:194-206 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java"},"region":{"startLine":697}}}],"partialFingerprints":{"codehealthFindingId/v1":"c13b1b9cb5ac3702f4c15ec629500129146a7c4e5b19730f319729ef2c8fad9f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java:273-281 | spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java:352-360 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanDefinition.java"},"region":{"startLine":273}}}],"partialFingerprints":{"codehealthFindingId/v1":"e2f3799f13c287e7e7b42a8a9220f420a6261795a50e5a7bdef862bfd78bf6d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java:205-213 | spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java:266-274 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java:205\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java"},"region":{"startLine":205}}}],"partialFingerprints":{"codehealthFindingId/v1":"eb59b9c4ef46037b55c3e3ba6e19e429186b96cebaeff48f1138f702e8f0a494"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/MethodParameter.java:500-509 | spring-core/src/main/java/org/springframework/core/MethodParameter.java:632-640 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/MethodParameter.java:500\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":500}}}],"partialFingerprints":{"codehealthFindingId/v1":"e35a938b4cc447fa58eba58ed426b74415d9da0dfac015487c2be4188f3c9305"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:280-288 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:375-383 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:280\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":280}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14a77f2c5dc8e2554f73941fc68328eb85fac305e35a3fee7296517fe17c044"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java:87-95 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java:175-183 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java:87\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java"},"region":{"startLine":87}}}],"partialFingerprints":{"codehealthFindingId/v1":"a0d7b6cc1f66ff85135269ba38c88e5dadf597fac7612dd98acc2a4a95c4f80f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:753-761 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:798-806 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:753\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":753}}}],"partialFingerprints":{"codehealthFindingId/v1":"39d97c2977dabd41e4848915e182c2a623dd4716f9f2b5f0ce2e26d11f3108d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:1024-1032 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:1080-1088 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java:1024\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":1024}}}],"partialFingerprints":{"codehealthFindingId/v1":"100f3e267920373bd249b9b1e8322c846c01b85b1ad067d46377a80140429a63"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java:69-77 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpNE.java:70-78 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java:69\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java"},"region":{"startLine":69}}}],"partialFingerprints":{"codehealthFindingId/v1":"72e946accfc3decc3c6bdd12c1acf64403eaf71d9d44edec21b9f1de7ac733a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java:240-248 | spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleTriggerFactoryBean.java:241-249 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java:240\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java"},"region":{"startLine":240}}}],"partialFingerprints":{"codehealthFindingId/v1":"e6c9932f98b796bb8ed5a19b201672004603da9ee5d28a62b3bf230f853031eb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java:527-535 | spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java:560-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java:527\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java"},"region":{"startLine":527}}}],"partialFingerprints":{"codehealthFindingId/v1":"d96a2d72b0b5b93b1677357c3b5cdc4edec22a5b68e8326451b8d424f7653e1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java:932-940 | spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java:952-960 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java:932\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java"},"region":{"startLine":932}}}],"partialFingerprints":{"codehealthFindingId/v1":"4aee1c5e151647c33d0731c8e8905228ce294733c1b23f2fd95fb49302e1c6a9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java:192-200 | spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java:208-216 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java:192\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/beanvalidation/BeanValidationBeanRegistrationAotProcessor.java"},"region":{"startLine":192}}}],"partialFingerprints":{"codehealthFindingId/v1":"c19ffab9e9a9a040db6bfbb5b1299294387997657325db5c7662855b4d23276c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:821-830 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:842-850 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:821\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":821}}}],"partialFingerprints":{"codehealthFindingId/v1":"e0a6302820af10550b145137c9fc8ae32634b79f9b5573a2b0dcce87421b63b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:3457-3474 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:3477-3485 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":3457}}}],"partialFingerprints":{"codehealthFindingId/v1":"395b3b7e343509bbe99e3a1d3e89ea1c065c59b6c194bea2a3f9b3f47dcc3937"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/Type.java:308-316 | spring-core/src/main/java/org/springframework/asm/Type.java:763-771 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/Type.java"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"d5d05523380b320c47587b40936f4def12a1dd30c981447654794314a80fd51d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/Type.java:376-384 | spring-core/src/main/java/org/springframework/asm/Type.java:712-720 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/Type.java:376\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/Type.java"},"region":{"startLine":376}}}],"partialFingerprints":{"codehealthFindingId/v1":"575ed1a9ce21a045d91217ac733666f6e195fdd6eba537e86e46297e9ef2405f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamReader.java:226-234 | spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamReader.java:251-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamReader.java:226\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/xml/XMLEventStreamReader.java"},"region":{"startLine":226}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe45c4b4f9e7db4d9524ce1a2d954154fa2e2726d9207010791bb6c2ed111d49"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:308-316 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java:314-322 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:308\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":308}}}],"partialFingerprints":{"codehealthFindingId/v1":"f19b09562e9f8b6192a09ee8579a1720e4bb78a9c8fbd3130e917a6b75768be6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java:281-289 | spring-jms/src/main/java/org/springframework/jms/connection/TransactionAwareConnectionFactoryProxy.java:304-312 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/connection/CachingConnectionFactory.java"},"region":{"startLine":281}}}],"partialFingerprints":{"codehealthFindingId/v1":"0ff3fccc08328d843ce7669646ed0d918dbfb95bf009195d665b5178dc81f445"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/connection/SingleConnectionFactory.java:592-600 | spring-jms/src/main/java/org/springframework/jms/connection/TransactionAwareConnectionFactoryProxy.java:231-239 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/connection/SingleConnectionFactory.java"},"region":{"startLine":592}}}],"partialFingerprints":{"codehealthFindingId/v1":"bfa926ee355b5778d9ba77d6adf7c67441d6f211c6a413a9d0460474c8835011"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:272-280 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:283-291 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:272\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":272}}}],"partialFingerprints":{"codehealthFindingId/v1":"94ef1605855210ed308644a2e52a8638e3e2010b05d37352ba49b3b18bd659a0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java:144-152 | spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java:233-241 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java:144\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"65a2681c305bfa85264322fda570dd7e4d4b3991bc4fa2350837cfd0b6b1964f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java:251-259 | spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java:341-349 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java:251\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":251}}}],"partialFingerprints":{"codehealthFindingId/v1":"1aaae0ff449808cd55cfe5e53dc0d45780f0c5d939ebbc2a2bcf611f6442ef47"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:399-407 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:376-384 \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":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":399}}}],"partialFingerprints":{"codehealthFindingId/v1":"0272186871ab2fd43225ebf7c93eb3ca61424dca3c45892a929e9968ab833185"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:462-470 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:484-492 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:462\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":462}}}],"partialFingerprints":{"codehealthFindingId/v1":"3453f7ecd832224995a50c7a79507e775877671644d81d4d074e33dc1de823cd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java:163-171 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:255-263 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java:163\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"4f72065693db6db37077ef06d346ef381136a57810b9fb18dd162a95df0e12c4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/HandlerMethod.java:217-225 | spring-web/src/main/java/org/springframework/web/method/HandlerMethod.java:419-427 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/HandlerMethod.java:217\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/HandlerMethod.java"},"region":{"startLine":217}}}],"partialFingerprints":{"codehealthFindingId/v1":"421acbdb18279f3d5b4a71b103544ae7051fdadede2e031c7268a3c4b9352570"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java:112-120 | spring-web/src/main/java/org/springframework/web/service/invoker/HttpServiceMethod.java:247-255 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java:112\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bfb838b91dcbc33994d6b5b44be4fdc507f903d00625726e142229bcf2201ea"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceProxyFactory.java:252-260 | spring-web/src/main/java/org/springframework/web/service/invoker/HttpServiceProxyFactory.java:300-308 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceProxyFactory.java:252\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceProxyFactory.java"},"region":{"startLine":252}}}],"partialFingerprints":{"codehealthFindingId/v1":"aec7f70844a8dce41a3e6f96c7959773d3ed3b4f204fc1533474f49dbb1ab512"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java:189-197 | spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java:215-223 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java:189\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/support/NativeMessageHeaderAccessor.java"},"region":{"startLine":189}}}],"partialFingerprints":{"codehealthFindingId/v1":"1972c041afe0fd82259f3ba7da100e03d6b8145871cb4657fd67f69170f3082b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java:600-608 | spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java:626-634 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java:600\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateTransactionManager.java"},"region":{"startLine":600}}}],"partialFingerprints":{"codehealthFindingId/v1":"b7e47093f85a68c147e31a6f600038ac4b33d8ba0d40685c2712f60d9ddcc7bd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/support/InjectionCodeGenerator.java:82-90 | spring-orm/src/main/java/org/springframework/orm/jpa/support/InjectionCodeGenerator.java:104-112 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/support/InjectionCodeGenerator.java:82\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/support/InjectionCodeGenerator.java"},"region":{"startLine":82}}}],"partialFingerprints":{"codehealthFindingId/v1":"8cfef6508d54f8dd004936460dff5375c98ba7f95dcb99445e0bfd6b07e3444c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:971-979 | spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:1000-1009 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:971\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java"},"region":{"startLine":971}}}],"partialFingerprints":{"codehealthFindingId/v1":"e4e71da6add85cce59f044af245624214ea540083bdc2aea0171f575abb066a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java:777-785 | spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java:950-958 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java:777\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java"},"region":{"startLine":777}}}],"partialFingerprints":{"codehealthFindingId/v1":"44b483200d934772183856c4822358f9fa389373bf17c4fb60fb85d09eeb23ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java:89-97 | spring-webflux/src/main/java/org/springframework/web/reactive/accept/DefaultApiVersionStrategy.java:93-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java:89\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/accept/DefaultApiVersionStrategy.java"},"region":{"startLine":89}}}],"partialFingerprints":{"codehealthFindingId/v1":"9f0ac8438de23a68c61839d2f7c00d42b01a8a8380272c75b02541342b2ad4a6"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java:128-136 | spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java:118-128 \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":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java"},"region":{"startLine":128}}}],"partialFingerprints":{"codehealthFindingId/v1":"e100a960b757aecab45087098a4cc0166f8cce21d5be82f7221888ab62f6bcc8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java:244-252 | spring-web/src/main/java/org/springframework/web/server/adapter/ForwardedHeaderTransformer.java:209-217 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java:244\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java"},"region":{"startLine":244}}}],"partialFingerprints":{"codehealthFindingId/v1":"cebadb618b282df49e2f409703ed898e3f6d8c9a87714c6cf90345a02128657a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java:342-350 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/AbstractNamedValueArgumentResolver.java:336-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java:342\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java"},"region":{"startLine":342}}}],"partialFingerprints":{"codehealthFindingId/v1":"077f2a1b906db5e77dd5e0add7d3b7dc2e5c777c960939d1af88f0f26eba2946"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:302-310 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:342-350 \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":"spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java"},"region":{"startLine":302}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6ada49af39f17fdf02c4669916442d74e84a05257ecd0cf8249a2e5b646d571"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (9 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/resource/PathResourceResolver.java:124-132 | spring-webflux/src/main/java/org/springframework/web/reactive/result/view/script/ScriptTemplateView.java:307-315 \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":"spring-webflux/src/main/java/org/springframework/web/reactive/resource/PathResourceResolver.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"7836a94fff57b3a44baf8f42f44628b958558c5fd98a7a997f5f5d61fc90daaf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java:181-188 | spring-web/src/main/java/org/springframework/http/codec/JacksonCodecSupport.java:189-196 | spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:202-209 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:238-245 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java:181\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2CodecSupport.java"},"region":{"startLine":181}}}],"partialFingerprints":{"codehealthFindingId/v1":"0be5f1e7ebf2401b3c2d0efcdb9b14323a20939f26e0b26ded7f2852265faef3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java:112-119 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java:202-209 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java:109-116 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java:160-167 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java:112\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"d45bb5f66ca895a236988d39e4bd77a80465fce1119ad0903f8b64880e30a3b5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 4): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGE.java:48-55 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGT.java:48-55 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpLE.java:48-55 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpLT.java:48-55 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGE.java:48\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpGE.java"},"region":{"startLine":48}}}],"partialFingerprints":{"codehealthFindingId/v1":"d6f199104cb5c07961cd35fbaea4f0c96334fbd2b45ff4faac4b8c659610d082"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java:532-539 | spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:381-388 | spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:427-434 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java:532\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":532}}}],"partialFingerprints":{"codehealthFindingId/v1":"bef5c2a20944b8f83762ef43671f3b0e8e6986404c69a75a1d0af0b3a4080c9b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java:443-450 | spring-messaging/src/main/java/org/springframework/messaging/handler/HandlerMethod.java:216-223 | spring-web/src/main/java/org/springframework/web/method/HandlerMethod.java:418-425 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java:443\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/event/ApplicationListenerMethodAdapter.java"},"region":{"startLine":443}}}],"partialFingerprints":{"codehealthFindingId/v1":"8494e0e17ff48fbb974100096942ebf8026ccce28396112c2a3e7efbc9978678"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java:172-179 | spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:343-350 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:384-391 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java:172\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/CoroutinesUtils.java"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"88b86884bf741b4527fa789e9b03286c6b687edf1007a31609b7cf1b35dbb122"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 3): spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java:206-213 | spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java:215-222 | spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java:224-231 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java:206\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesBeanRegistrationAotProcessor.java"},"region":{"startLine":206}}}],"partialFingerprints":{"codehealthFindingId/v1":"cb55d187f7779c4a7825cbf89f215427d06d993d2a470001229b9303050fd94e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): buildSrc/src/main/java/org/springframework/build/RepositoriesPlugin.java:56-63 | buildSrc/src/main/java/org/springframework/build/RepositoriesPlugin.java:67-74 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060buildSrc/src/main/java/org/springframework/build/RepositoriesPlugin.java:56\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"buildSrc/src/main/java/org/springframework/build/RepositoriesPlugin.java"},"region":{"startLine":56}}}],"partialFingerprints":{"codehealthFindingId/v1":"f0a2262fbff6e978874247477146fb8221ba1cfa9b5f90f9f7b691144fa6c034"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java:74-81 | spring-core/src/main/java/org/springframework/core/io/buffer/OutputStreamPublisher.java:76-83 \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":"spring-web/src/main/java/org/springframework/http/client/OutputStreamPublisher.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"31f40b8437d56e040493c0b71298efcf1c13605424d13c2ea7e1603d0bdebc38"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:150-157 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonDecoder.java:127-134 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:150\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"5b902aa2a0975bb6723324e67bd00d3bf17f1e647be8d26e690e5619a940b9ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/KotlinSerializationJsonDecoder.java:113-120 | spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationStringDecoder.java:121-128 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/KotlinSerializationJsonDecoder.java:113\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/KotlinSerializationJsonDecoder.java"},"region":{"startLine":113}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d0e573c5a428ded7d5143e734d46e2f48e7811bb6c7cf9d0d1cffd8ec560da3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/DefaultPartHttpMessageReader.java:194-201 | spring-web/src/main/java/org/springframework/http/codec/multipart/PartEventHttpMessageReader.java:151-158 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/DefaultPartHttpMessageReader.java:194\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/DefaultPartHttpMessageReader.java"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"047eb72b56fe4732272d8de736c70b281d871ae64aae4e879f705d1c10a4af8e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartUtils.java:60-67 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartHttpMessageConverter.java:370-377 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartUtils.java:60\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartUtils.java"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"e164bdd768dc8475fa350be0d59a4d3237b50bab520373c3ee487dda28b68eed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/PartEventHttpMessageWriter.java:95-102 | spring-web/src/main/java/org/springframework/http/codec/multipart/PartHttpMessageWriter.java:83-90 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/PartEventHttpMessageWriter.java:95\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/PartEventHttpMessageWriter.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"53106dfe0f9eed5fe6cef35fdbe55192851d1ef1a016a1154c22340dc5fd39c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:157-164 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java:226-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":"spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonEncoder.java"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"a469dc560d32215c100da2ed30b2dac47f3c110b2663a1ac8f88b6e6a0389cc9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/ServerSentEvent.java:130-137 | spring-web/src/main/java/org/springframework/http/codec/ServerSentEventHttpMessageWriter.java:146-153 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/ServerSentEvent.java:130\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/ServerSentEvent.java"},"region":{"startLine":130}}}],"partialFingerprints":{"codehealthFindingId/v1":"d8619a6804c05b113262a0fa3c1ff96c8625f49d36a78266db50d6bbefe16a4d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:482-489 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:430-437 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:482\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bf2b6063b347ded752924960ed77d095ef6fa6af281fa2a5010d8e39b4933cb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-aop/src/main/java/org/springframework/aop/config/SpringConfiguredBeanDefinitionParser.java:57-64 | spring-context/src/main/java/org/springframework/context/config/SpringConfiguredBeanDefinitionParser.java:50-57 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-aop/src/main/java/org/springframework/aop/config/SpringConfiguredBeanDefinitionParser.java:57\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/config/SpringConfiguredBeanDefinitionParser.java"},"region":{"startLine":57}}}],"partialFingerprints":{"codehealthFindingId/v1":"d1194d31dea94dfe66c2efda18ab9d573b77779d32ba87b08e58bd36ac9e6a43"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java:482-489 | spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java:532-539 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java:482\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/aspectj/AspectJAdviceParameterNameDiscoverer.java"},"region":{"startLine":482}}}],"partialFingerprints":{"codehealthFindingId/v1":"67f8b0883afe20e71b16b3c1bbc887fe11a886c953177f4bf812ceb106f54f6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java:788-795 | spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java:816-823 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java"},"region":{"startLine":788}}}],"partialFingerprints":{"codehealthFindingId/v1":"798a4babca80afea84d818e04ba23cd892437ae829b6d4f886b630080fdb163a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java:861-868 | spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java:930-937 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java:861\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractAutowireCapableBeanFactory.java"},"region":{"startLine":861}}}],"partialFingerprints":{"codehealthFindingId/v1":"b14aea577a2bb757042188a3b7fe579f69ea6b69fcc238a69ed9712d0a5f3c67"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:757-765 | spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:866-873 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:757\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":757}}}],"partialFingerprints":{"codehealthFindingId/v1":"06576286489757fdce81fb92df66afe34aa0f04cc5cab8eb5f0591d32d615ff9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:1070-1077 | spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:1078-1085 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java:1070\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/ConstructorResolver.java"},"region":{"startLine":1070}}}],"partialFingerprints":{"codehealthFindingId/v1":"91991721aace398c37d38feb84bd064387ca55c0f8c95e702b009612ec29e8d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java:325-332 | spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java:351-358 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java:325\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java"},"region":{"startLine":325}}}],"partialFingerprints":{"codehealthFindingId/v1":"0b22d08d9064cbdf7fa6f790d32127485a018110a4d8708eb05c9345f2b1fd54"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java:168-175 | spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java:230-237 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/BeanFactoryUtils.java"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"821f501a4ca435dd09632c149f44aaeba39207bc940475117b04ba9e907b5f3d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java:213-220 | spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java:222-229 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java"},"region":{"startLine":213}}}],"partialFingerprints":{"codehealthFindingId/v1":"30427ce2f47834619e56b6c0c04fbfbf7776f8ce4d0a5a3bf7ad52e5ac0797b9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:430-437 | spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:472-479 \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":"spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java"},"region":{"startLine":430}}}],"partialFingerprints":{"codehealthFindingId/v1":"22a521585ef1148e9e00fd32e0a2e36127ec1641a3db202919daad2c61f67268"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java:112-119 | spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java:125-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java:112\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/support/PostProcessorRegistrationDelegate.java"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"773a7de3beabdd71eae2b9044386818b868f71d13aadb91ef78d60967f26c2ef"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/Nullness.java:195-202 | spring-core/src/main/java/org/springframework/core/Nullness.java:228-235 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/Nullness.java:195\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/Nullness.java"},"region":{"startLine":195}}}],"partialFingerprints":{"codehealthFindingId/v1":"e7f38897ac5a4b93162a53d7f2dd462f91fd2dff7549d479c6a358c325ae33e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/Elvis.java:153-162 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Ternary.java:117-124 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/Elvis.java:153\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Elvis.java"},"region":{"startLine":153}}}],"partialFingerprints":{"codehealthFindingId/v1":"d057c6b8cc86c5d77a6fdb3604568619985d5460a0733145fcd2b6b04fa2f499"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpAnd.java:96-103 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpOr.java:95-102 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpAnd.java"},"region":{"startLine":96}}}],"partialFingerprints":{"codehealthFindingId/v1":"71ccffd52eb1201b0210b1c4bfec3f4b99cf2a1d4aacc49d6f9a2d441967325f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpNE.java:93-100 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OperatorNot.java:75-82 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpNE.java"},"region":{"startLine":93}}}],"partialFingerprints":{"codehealthFindingId/v1":"edacbf7702f03d471e612ff11455fd2dfd8291c4d18da8155bc20bf9e26f8f4f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java:479-486 | spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java:503-510 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java:479\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/config/ScheduledTaskRegistrar.java"},"region":{"startLine":479}}}],"partialFingerprints":{"codehealthFindingId/v1":"56ae425a662baf34468a4ae7aad8043acac19cd9308a0528666d57daa7c4193a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java:81-88 | spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java:93-100 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java:81\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"b290f5bb7482815e7ee0d9b1886742dab095b5ba87b7435ccac64bfa97d355f4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/instrument/classloading/glassfish/GlassFishLoadTimeWeaver.java:119-126 | spring-context/src/main/java/org/springframework/instrument/classloading/tomcat/TomcatLoadTimeWeaver.java:118-125 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/instrument/classloading/glassfish/GlassFishLoadTimeWeaver.java:119\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/instrument/classloading/glassfish/GlassFishLoadTimeWeaver.java"},"region":{"startLine":119}}}],"partialFingerprints":{"codehealthFindingId/v1":"0c56d78a4de008e019d2bab8f17eeec004fed97ed5daa3311ff5a0ce83535172"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/jmx/access/MBeanClientInterceptor.java:557-564 | spring-context/src/main/java/org/springframework/jmx/access/MBeanClientInterceptor.java:573-580 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/jmx/access/MBeanClientInterceptor.java:557\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/jmx/access/MBeanClientInterceptor.java"},"region":{"startLine":557}}}],"partialFingerprints":{"codehealthFindingId/v1":"1494f92ec9a5e1414085d5fa33f3e91506faa01fd0b65f76731ca60d6d5ddec8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java:732-739 | spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java:749-756 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java:732\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/jmx/export/MBeanExporter.java"},"region":{"startLine":732}}}],"partialFingerprints":{"codehealthFindingId/v1":"8995543969f42796166b834e9a140a33a9ff88cbefa4b8a8585bf5d597064307"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/validation/support/BindingAwareConcurrentModel.java:53-60 | spring-context/src/main/java/org/springframework/validation/support/BindingAwareModelMap.java:57-64 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/validation/support/BindingAwareConcurrentModel.java:53\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/support/BindingAwareConcurrentModel.java"},"region":{"startLine":53}}}],"partialFingerprints":{"codehealthFindingId/v1":"d86fe2a1f4ae1042c2cc4b86232122102bac2483ca5c1041733032f1994ae4cf"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-context/src/main/java/org/springframework/validation/DataBinder.java:1032-1039 | spring-context/src/main/java/org/springframework/validation/DataBinder.java:1084-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":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":1032}}}],"partialFingerprints":{"codehealthFindingId/v1":"68e094e535cc95a87e7e3c0fd1c7bdddf4e2f06931399ac07f321bcb7d6e22d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ByteVector.java:139-146 | spring-core/src/main/java/org/springframework/asm/ByteVector.java:204-211 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ByteVector.java"},"region":{"startLine":139}}}],"partialFingerprints":{"codehealthFindingId/v1":"6f70f7c186937ff5e4e209733c8b175815a3bb39108b757aa4aa7ca71f630786"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/MethodWriter.java:890-897 | spring-core/src/main/java/org/springframework/asm/MethodWriter.java:922-929 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/MethodWriter.java:890\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/MethodWriter.java"},"region":{"startLine":890}}}],"partialFingerprints":{"codehealthFindingId/v1":"398805d863770ef8ac48e0e52b1007ac3df512ee4000d5fd3d5c54ddf9b01c05"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/AntPathMatcher.java:665-672 | spring-web/src/main/java/org/springframework/web/util/pattern/RegexPathElement.java:68-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/AntPathMatcher.java:665\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":665}}}],"partialFingerprints":{"codehealthFindingId/v1":"8a6f1eba96417ecd1da8f4a5518412199d164902b9931c9034a2018b49c31d59"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/AntPathMatcher.java:729-736 | spring-web/src/main/java/org/springframework/web/util/pattern/RegexPathElement.java:155-162 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/AntPathMatcher.java:729\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/AntPathMatcher.java"},"region":{"startLine":729}}}],"partialFingerprints":{"codehealthFindingId/v1":"12171346e51846e1be6a52721dde2b438109aac6de5dd9dfbf31c929c65ac8f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java:451-458 | spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java:469-476 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java"},"region":{"startLine":451}}}],"partialFingerprints":{"codehealthFindingId/v1":"a8b184e668dc187940633fe24b418c1a788d63771128fffceea5e8254bc39546"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java:381-388 | spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java:424-431 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java:381\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.java"},"region":{"startLine":381}}}],"partialFingerprints":{"codehealthFindingId/v1":"d4578bf4a1eb18b08fa20e7f028ef065fa8a10153dbbb56ed9e5ccbfacd1a0ed"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:194-201 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java:197-204 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:194\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":194}}}],"partialFingerprints":{"codehealthFindingId/v1":"74b738c6b44f9c3ec8bc2468cec85a83661512f00192c8d2d31a14cb5d45404a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java:658-665 | spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java:1153-1160 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java"},"region":{"startLine":658}}}],"partialFingerprints":{"codehealthFindingId/v1":"d0b39c53ce7f7fd7753768878f269979a0787cf353d9288cebbe9dd30ddd9c56"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java:496-503 | spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/init/ScriptUtils.java:453-460 \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":"spring-jdbc/src/main/java/org/springframework/jdbc/datasource/init/ScriptUtils.java"},"region":{"startLine":496}}}],"partialFingerprints":{"codehealthFindingId/v1":"a084b0005355cea8418d791784072ec7c0c34b79625cbf214919cc92054ed1dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:372-379 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:385-392 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:372\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc800718ce235db10756daa58134424eedd277c25fc78aa9a086ee3cb5c238ae"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:424-431 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:437-444 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:424\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":424}}}],"partialFingerprints":{"codehealthFindingId/v1":"07985f3aa2e5f3559aac8f6dece76665e0899c8ed636290c25928a6eebd11870"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeaderMethodArgumentResolver.java:88-95 | spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/HeaderMethodArgumentResolver.java:90-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. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/HeaderMethodArgumentResolver.java"},"region":{"startLine":88}}}],"partialFingerprints":{"codehealthFindingId/v1":"f11344d16d4d1a7a4f0c6546dbde1b7407cd1513ebdb020fd1ae0007acf413f9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java:142-149 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java:211-218 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java:142\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHandlerMethod.java"},"region":{"startLine":142}}}],"partialFingerprints":{"codehealthFindingId/v1":"1b48ea049a32f0cdf1a1d058d0dbbe634bd67ed650343259ebc8d4d735b6574d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:129-136 | spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:203-210 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:129\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java"},"region":{"startLine":129}}}],"partialFingerprints":{"codehealthFindingId/v1":"f936ff11fc6719802991491a6e4a418b91795e0917d4bb8baf68ead8b071720c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java:137-144 | spring-web/src/main/java/org/springframework/web/service/invoker/HttpServiceMethod.java:500-507 \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. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketServiceMethod.java"},"region":{"startLine":137}}}],"partialFingerprints":{"codehealthFindingId/v1":"7dd75b5e9da8370b447b6b3477086f8acc90142ec5d783660d5182921ab91a9d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java:166-173 | spring-web/src/main/java/org/springframework/web/multipart/support/StandardMultipartHttpServletRequest.java:194-201 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java:166\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockMultipartHttpServletRequest.java"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"4338f134813cc2bb3510a66c5b7ff3ac5b1d848a86c504eb5ff5b7135e205762"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/context/request/async/WebAsyncManager.java:307-314 | spring-web/src/main/java/org/springframework/web/context/request/async/WebAsyncManager.java:402-409 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/context/request/async/WebAsyncManager.java"},"region":{"startLine":307}}}],"partialFingerprints":{"codehealthFindingId/v1":"398f06049498010aa14c20809a90a86a24cab2761c8a71abce17a6408201f803"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java:372-379 | spring-web/src/main/java/org/springframework/web/filter/AbstractRequestLoggingFilter.java:380-387 \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":"spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java"},"region":{"startLine":372}}}],"partialFingerprints":{"codehealthFindingId/v1":"c97e7a598cb79a2d756709d52bcb401267ab14c88ab448e133d59fa0273288e8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/service/invoker/RequestBodyArgumentResolver.java:91-98 | spring-web/src/main/java/org/springframework/web/service/invoker/RequestPartArgumentResolver.java:102-109 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/service/invoker/RequestBodyArgumentResolver.java:91\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/service/invoker/RequestBodyArgumentResolver.java"},"region":{"startLine":91}}}],"partialFingerprints":{"codehealthFindingId/v1":"9aa5eced9a0ea04d8f7db0e6210b4453a2aebf853ea892ebe2f5d19c36f98e6e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (8 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultClientResponseBuilder.java:190-197 | spring-webflux/src/main/java/org/springframework/web/reactive/function/server/DefaultServerRequestBuilder.java:168-175 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultClientResponseBuilder.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"0486bc902fb835fe79bf678e469158388da589c9c2da989778290a7c42116dc2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 4): spring-web/src/main/java/org/springframework/http/client/observation/DefaultClientRequestObservationConvention.java:144-150 | spring-web/src/main/java/org/springframework/http/server/observation/DefaultServerRequestObservationConvention.java:158-164 | spring-web/src/main/java/org/springframework/http/server/reactive/observation/DefaultServerRequestObservationConvention.java:159-165 | spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultClientRequestObservationConvention.java:152-158 \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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/observation/DefaultClientRequestObservationConvention.java:144\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/observation/DefaultClientRequestObservationConvention.java"},"region":{"startLine":144}}}],"partialFingerprints":{"codehealthFindingId/v1":"470a34e4b329ac44836b08086a8430ade63334cfeb2c0b29e0089e521e613edd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/client/MultipartBodyBuilder.java:190-196 | spring-web/src/main/java/org/springframework/http/client/MultipartBodyBuilder.java:210-216 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/client/MultipartBodyBuilder.java:190\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/client/MultipartBodyBuilder.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"d29276122d92424a33b2bc4f555ca6b6a994feb52a913f659e694cd46e1892ac"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:196-202 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonDecoder.java:172-178 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:196\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java"},"region":{"startLine":196}}}],"partialFingerprints":{"codehealthFindingId/v1":"cc62ff1daa048ba558e576b6c598d66b49e94740ec39eda64e60eea8a4c9eb6c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:324-330 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java:272-278 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:324\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java"},"region":{"startLine":324}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d4213a310b279514875a809bd95b62a60bc142616b201ef6ae59d687c7251db"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java:163-169 | spring-web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java:143-149 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java:163\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/FormHttpMessageReader.java"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"b82b6e45cb0ac60514aab08eac6dbfc0f359d388545aafc1c9def886b4dfb8c0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:377-383 | spring-web/src/main/java/org/springframework/http/converter/AbstractJacksonHttpMessageConverter.java:341-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java:377\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java"},"region":{"startLine":377}}}],"partialFingerprints":{"codehealthFindingId/v1":"5e686f94913aadd0746a9eebf4c77e9eef8fadc5146333ed61e66e3f14eb64da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java:351-357 | spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java:387-393 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java:351\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java"},"region":{"startLine":351}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9ad39727285c890600eb6ae3d52cd04f6a826589b8746a7263bc0a4cdca6132"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/ContentDisposition.java:438-444 | spring-web/src/main/java/org/springframework/http/ContentDisposition.java:483-489 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/ContentDisposition.java:438\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/ContentDisposition.java"},"region":{"startLine":438}}}],"partialFingerprints":{"codehealthFindingId/v1":"4d7abab77a4610fe95e04643c22dcc23126e2a5abd4a06ea87c6a689dbe76b5a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:362-368 | spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:383-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java:362\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core-test/src/main/java/org/springframework/aot/agent/InstrumentedBridgeMethods.java"},"region":{"startLine":362}}}],"partialFingerprints":{"codehealthFindingId/v1":"dbcee86d1af5dd371dea26cce33f2396089d09c69f2dd0161c7df7a24d6c98ce"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java:297-303 | spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java:305-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java:297\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/InitDestroyAnnotationBeanPostProcessor.java"},"region":{"startLine":297}}}],"partialFingerprints":{"codehealthFindingId/v1":"96cb5f332c0af1ae0768e900b9dd84f3f057efdbe1a2ced4a1cdcf1acd302ff4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java:420-426 | spring-core/src/main/java/org/springframework/core/SerializableTypeWrapper.java:302-308 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java:420\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/config/DependencyDescriptor.java"},"region":{"startLine":420}}}],"partialFingerprints":{"codehealthFindingId/v1":"fe2cb3510f843428e3a0402a89e99df0c2a0a59b9eb085073f6df0ab7fa67187"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/BeanRegistryAdapter.java:157-163 | spring-beans/src/main/java/org/springframework/beans/factory/support/BeanRegistryAdapter.java:172-178 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/BeanRegistryAdapter.java:157\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/BeanRegistryAdapter.java"},"region":{"startLine":157}}}],"partialFingerprints":{"codehealthFindingId/v1":"8321a7a0ec616140404d03423fac5f9477d94cafec6f56da6bca6a59ff9bc4a8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/PropertyBatchUpdateException.java:112-118 | spring-beans/src/main/java/org/springframework/beans/PropertyBatchUpdateException.java:124-130 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/PropertyBatchUpdateException.java:112\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/PropertyBatchUpdateException.java"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"fad583cf68c801d95558c9cbaa7faf5f0149fa6f7d8aff4b57705ef0f63b766f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java:197-203 | spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java:211-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java:197\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/PropertyDescriptorUtils.java"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"6e447581312398e028e6d85593f3dbe0e304197ea412de3343a01534ac7c73dd"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context-indexer/src/main/java/org/springframework/context/index/processor/SortedProperties.java:103-109 | spring-core/src/main/java/org/springframework/core/SortedProperties.java:105-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context-indexer/src/main/java/org/springframework/context/index/processor/SortedProperties.java:103\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-indexer/src/main/java/org/springframework/context/index/processor/SortedProperties.java"},"region":{"startLine":103}}}],"partialFingerprints":{"codehealthFindingId/v1":"19168f5ce670741406a33186bd91e979240318910008b09fc0aa8d2d1d4d62e0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java:147-153 | spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java:172-178 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java:147\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java"},"region":{"startLine":147}}}],"partialFingerprints":{"codehealthFindingId/v1":"58984091759c3ff9226536916f132d87ca5f7b7b0cfd27ae0dafeab099202ea3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/codec/ByteArrayEncoder.java:64-70 | spring-core/src/main/java/org/springframework/core/codec/ByteBufferEncoder.java:64-70 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/codec/ByteArrayEncoder.java:64\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/codec/ByteArrayEncoder.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"f21f6c9c03f7a0bf43777fa5d3c62bbc32fb01edebfd1cd576a7d0aa68dd4024"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:371-377 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java:384-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":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectionHelper.java"},"region":{"startLine":371}}}],"partialFingerprints":{"codehealthFindingId/v1":"61c32db55c163b9912c2f68df858b470e53d71b834a67014df337fc29f00e581"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java:257-263 | spring-context-support/src/main/java/org/springframework/scheduling/quartz/SimpleTriggerFactoryBean.java:255-261 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-support/src/main/java/org/springframework/scheduling/quartz/CronTriggerFactoryBean.java"},"region":{"startLine":257}}}],"partialFingerprints":{"codehealthFindingId/v1":"c4485a53a72ca0a54f6e44512ba48a171303c5d4b9fe5f4c7fb597b6a8a1c410"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java:81-87 | spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAttributeSourceEditor.java:62-69 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java:81\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/interceptor/NameMatchTransactionAttributeSource.java"},"region":{"startLine":81}}}],"partialFingerprints":{"codehealthFindingId/v1":"fa7784ebb2e15a303bd0b9c81398345746071f14068311bbfd99a1b9e1794467"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context-support/src/main/java/org/springframework/mail/MailSendException.java:168-174 | spring-context-support/src/main/java/org/springframework/mail/MailSendException.java:184-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context-support/src/main/java/org/springframework/mail/MailSendException.java:168\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-support/src/main/java/org/springframework/mail/MailSendException.java"},"region":{"startLine":168}}}],"partialFingerprints":{"codehealthFindingId/v1":"bf34359c6e59821b462c60eddb9d48672f6a702cbf85d5bf7424053890da23cc"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context/src/main/java/org/springframework/jmx/export/assembler/MetadataMBeanInfoAssembler.java:320-326 | spring-context/src/main/java/org/springframework/jmx/export/assembler/MetadataMBeanInfoAssembler.java:376-383 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/jmx/export/assembler/MetadataMBeanInfoAssembler.java:320\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/jmx/export/assembler/MetadataMBeanInfoAssembler.java"},"region":{"startLine":320}}}],"partialFingerprints":{"codehealthFindingId/v1":"87bc1d8736dac3b5b148e60b9754cd206023ed92aa641efcdaaa449ccf73b02b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java:190-196 | spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java:200-206 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java:190\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/resilience/retry/AbstractRetryInterceptor.java"},"region":{"startLine":190}}}],"partialFingerprints":{"codehealthFindingId/v1":"76afea44ab02bb5881d93216b41cf82def1726183401ff14b82e723dc241b9e3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java:234-240 | spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java:269-275 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java:234\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scripting/groovy/GroovyScriptFactory.java"},"region":{"startLine":234}}}],"partialFingerprints":{"codehealthFindingId/v1":"d88e9b09f8e0d1f85e51a41a1eaae65a0f9ef5922d7ad4ea389208bdb26b7a79"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-context/src/main/java/org/springframework/validation/DataBinder.java:940-946 | spring-context/src/main/java/org/springframework/validation/DataBinder.java:1134-1140 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/validation/DataBinder.java:940\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":940}}}],"partialFingerprints":{"codehealthFindingId/v1":"6bd685980fa5ee7f3139781659a2a5c26ecdbc7f9b4e86be68be341c286b3bad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/SymbolTable.java:664-670 | spring-core/src/main/java/org/springframework/asm/SymbolTable.java:719-725 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/SymbolTable.java:664\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/SymbolTable.java"},"region":{"startLine":664}}}],"partialFingerprints":{"codehealthFindingId/v1":"96a25b87def63bc231790c1e07edcea4595e77e71abf53d5242d986c2c30e808"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-core/src/main/java/org/springframework/cglib/beans/BeanMapEmitter.java:116-122 | spring-core/src/main/java/org/springframework/cglib/beans/BeanMapEmitter.java:140-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/cglib/beans/BeanMapEmitter.java:116\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/cglib/beans/BeanMapEmitter.java"},"region":{"startLine":116}}}],"partialFingerprints":{"codehealthFindingId/v1":"7b878d2f8cfb28a4ff13b895a295fa1f3d5e70ba7aad3322765bec8d2264b398"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/DataClassRowMapper.java:98-104 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DataClassRowMapper.java:91-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/DataClassRowMapper.java:98\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/DataClassRowMapper.java"},"region":{"startLine":98}}}],"partialFingerprints":{"codehealthFindingId/v1":"9c38573f0e15f6a308e5ddca630d447e30a065e4fa354cc0cc65c3ec649d399c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java:474-480 | spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java:487-493 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/support/converter/JacksonJsonMessageConverter.java"},"region":{"startLine":474}}}],"partialFingerprints":{"codehealthFindingId/v1":"a302c3fa3020196db5cd9b02f67e77cc0e90375a817e994f079cd6ca97ef1c5e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHelper.java:150-156 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:624-630 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHelper.java:150\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHelper.java"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"1e33e588dd9f7545858fec043c5123922c4ca40d27d5f111463f3760c20855ba"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:172-178 | spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java:256-262 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java:172\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java"},"region":{"startLine":172}}}],"partialFingerprints":{"codehealthFindingId/v1":"bcc0d664e634cac035239effbc31bb6cc519a1d1c7cee56556d771bf688d52b0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateExceptionTranslator.java:124-130 | spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateExceptionTranslator.java:135-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":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/HibernateExceptionTranslator.java"},"region":{"startLine":124}}}],"partialFingerprints":{"codehealthFindingId/v1":"27733a03212bd4dbcb4f84aa40114dd7cc15c0e47d78cb7276927142dcd2a58d"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBuilder.java:301-307 | spring-orm/src/main/java/org/springframework/orm/jpa/persistenceunit/PersistenceManagedTypesScanner.java:143-149 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBuilder.java:301\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/hibernate/LocalSessionFactoryBuilder.java"},"region":{"startLine":301}}}],"partialFingerprints":{"codehealthFindingId/v1":"3201afaecee6921ef5341e277a141e64e61166b775d5f95f3f3a850be566a324"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-orm/src/main/java/org/springframework/orm/jpa/JpaTransactionManager.java:545-551 | spring-orm/src/main/java/org/springframework/orm/jpa/JpaTransactionManager.java:571-577 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-orm/src/main/java/org/springframework/orm/jpa/JpaTransactionManager.java:545\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/JpaTransactionManager.java"},"region":{"startLine":545}}}],"partialFingerprints":{"codehealthFindingId/v1":"526154a96ee0a0a4dc12c9ae258548161ee2bc8bbc259f59993384c20eac1378"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/bind/annotation/ControllerMappingReflectiveProcessor.java:94-100 | spring-web/src/main/java/org/springframework/web/bind/annotation/ControllerMappingReflectiveProcessor.java:107-113 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/bind/annotation/ControllerMappingReflectiveProcessor.java:94\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/bind/annotation/ControllerMappingReflectiveProcessor.java"},"region":{"startLine":94}}}],"partialFingerprints":{"codehealthFindingId/v1":"022b7f24cec48885b8ccb40f6dd3c8ee8f0e8d15ccaa679d27e937166e3e1a91"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/DefaultResponseErrorHandler.java:146-152 | spring-web/src/main/java/org/springframework/web/client/StatusHandler.java:134-140 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/client/DefaultResponseErrorHandler.java:146\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/DefaultResponseErrorHandler.java"},"region":{"startLine":146}}}],"partialFingerprints":{"codehealthFindingId/v1":"0d994e91a2ba5f9c1a88e404d616f96cfb0222db7d92182f2afea5183d1e1812"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java:481-487 | spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java:365-371 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java:481\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java"},"region":{"startLine":481}}}],"partialFingerprints":{"codehealthFindingId/v1":"2340e17a3874c84e0b351757fb662aa95132969df2e788d594d15d214c8eadd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/filter/FormContentFilter.java:145-151 | spring-web/src/main/java/org/springframework/web/multipart/support/DefaultMultipartHttpServletRequest.java:120-126 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/filter/FormContentFilter.java"},"region":{"startLine":145}}}],"partialFingerprints":{"codehealthFindingId/v1":"ce3e800c15233756176be946d7f426dabf3b2a54f8d7326c1d878e5e923cbf1c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java:478-484 | spring-web/src/main/java/org/springframework/web/server/adapter/ForwardedHeaderTransformer.java:234-240 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java:478\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/filter/ForwardedHeaderFilter.java"},"region":{"startLine":478}}}],"partialFingerprints":{"codehealthFindingId/v1":"511c3adb631ce8c54cc5b8600a7e0fe4cd00d03294f86c70db0225885ec9e780"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:636-642 | spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:647-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:636\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":636}}}],"partialFingerprints":{"codehealthFindingId/v1":"41644bd58983a05628f085ecae813a9cf9c3c6e5adc4278e9427b569859ef276"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClientRequestException.java:60-66 | spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClientResponseException.java:152-158 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/client/WebClientRequestException.java"},"region":{"startLine":60}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a3544cadf1d38eb520878e83a61bda6050ed4df8cf4c4079e3f247c4b61a275"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (7 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RouterFunctionBuilder.java:368-374 | spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RouterFunctionBuilder.java:381-387 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RouterFunctionBuilder.java"},"region":{"startLine":368}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ce41b8ec91c0071bf70f4f80ef6148bbebbf6a6761bb9d7deb7012987dd5d89"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java:951-956 | spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:767-772 | spring-orm/src/main/java/org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor.java:868-873 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java:951\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java"},"region":{"startLine":951}}}],"partialFingerprints":{"codehealthFindingId/v1":"32705018c52f2d2c83ea01b045c8a84b89af5943076e65ef16fa6273a2215e09"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java:50-55 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java:48-53 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java:81-86 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java:50\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpDivide.java"},"region":{"startLine":50}}}],"partialFingerprints":{"codehealthFindingId/v1":"ab4209ae1b84105dd9a45940fcd961033fd36e077847b2054a160060de88ecbb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 3): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:346-351 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:327-332 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/AbstractHandlerMethodMapping.java:230-235 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere all 3 call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made 3 times. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:346\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":346}}}],"partialFingerprints":{"codehealthFindingId/v1":"612fafc44910471eb9a0362804d09a6f42189c612adb0a568d0612b7fd0d9f02"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java:232-237 | spring-web/src/main/java/org/springframework/http/codec/AbstractJacksonDecoder.java:207-212 \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":"spring-web/src/main/java/org/springframework/http/codec/json/AbstractJackson2Decoder.java"},"region":{"startLine":232}}}],"partialFingerprints":{"codehealthFindingId/v1":"cbeb1758126ac988e203e0c73939c0866b6dd48798f48ce57a98742b79bdae5c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:187-192 | spring-web/src/main/java/org/springframework/http/codec/JacksonTokenizer.java:165-170 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:187\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"98c375f1df075225389ef201f47d5e4269fd67be7f936e48eb81a3968902447e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java:115-120 | spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java:136-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java:115\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartWriterSupport.java"},"region":{"startLine":115}}}],"partialFingerprints":{"codehealthFindingId/v1":"abf9df5b1fce1e4e9a25914023cd96a08afbf429eab18afe36a457594e309e72"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpResponse.java:108-113 | spring-web/src/main/java/org/springframework/http/server/reactive/ServletServerHttpResponse.java:165-170 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ReactorServerHttpResponse.java"},"region":{"startLine":108}}}],"partialFingerprints":{"codehealthFindingId/v1":"0927770ec8d0bb223a45699ec14e9993a99a3cfd64d14c4cd713b684224036c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java:80-85 | spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:549-554 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java:80\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java"},"region":{"startLine":80}}}],"partialFingerprints":{"codehealthFindingId/v1":"5499b015f06253fbe3aee943d81e27c42415dd8175807e1d9faa4894d58eb858"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java:95-100 | spring-web/src/main/java/org/springframework/web/util/HierarchicalUriComponents.java:392-397 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java:95\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/server/reactive/ReactorUriHelper.java"},"region":{"startLine":95}}}],"partialFingerprints":{"codehealthFindingId/v1":"928b6477b8bc31074712ed309445756ff465bbace54c30d237c046c4366b295c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java:435-440 | spring-aop/src/main/java/org/springframework/aop/framework/JdkDynamicAopProxy.java:236-241 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java:435\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-aop/src/main/java/org/springframework/aop/framework/CglibAopProxy.java"},"region":{"startLine":435}}}],"partialFingerprints":{"codehealthFindingId/v1":"c20f39eeb3c7d05e36e8ce6d0dbbed3be7e7120a4854e7332bfed9b7d99cb622"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java:112-117 | spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java:156-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":"spring-context/src/main/java/org/springframework/cache/annotation/SpringCacheAnnotationParser.java"},"region":{"startLine":112}}}],"partialFingerprints":{"codehealthFindingId/v1":"288292a4003990a69ab6bbac70d5192fd3c44a4bee9d6271adba48b50c4ad568"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java:163-168 | spring-tx/src/main/java/org/springframework/transaction/config/AnnotationDrivenBeanDefinitionParser.java:144-149 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java:163\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/cache/config/AnnotationDrivenCacheBeanDefinitionParser.java"},"region":{"startLine":163}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c65f0fb36a180c5bfba598c92cdbf8a199420cafc5fcfe4eac74f5dfa3771a2"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:649-654 | spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java:700-705 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java"},"region":{"startLine":649}}}],"partialFingerprints":{"codehealthFindingId/v1":"bb70c5ec4268cc13bbd93bb3a48306cd1b1ecda38f9b7e69839f8141d293b82f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-context-indexer/src/main/java/org/springframework/context/index/processor/SortedProperties.java:92-97 | spring-core/src/main/java/org/springframework/core/SortedProperties.java:94-99 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context-indexer/src/main/java/org/springframework/context/index/processor/SortedProperties.java:92\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context-indexer/src/main/java/org/springframework/context/index/processor/SortedProperties.java"},"region":{"startLine":92}}}],"partialFingerprints":{"codehealthFindingId/v1":"efb922e2d27481e6f41d324a704d18986522065431e8447a75614ecd6cc64ffe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/codec/ByteArrayDecoder.java:52-57 | spring-core/src/main/java/org/springframework/core/codec/ResourceDecoder.java:70-76 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/codec/ByteArrayDecoder.java"},"region":{"startLine":52}}}],"partialFingerprints":{"codehealthFindingId/v1":"2b6cb783362905aa5adc527dbbc396cf5c4448eb63eb40861a590f9a9ce19c25"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/io/buffer/DefaultDataBuffer.java:314-319 | spring-core/src/main/java/org/springframework/core/io/buffer/NettyDataBuffer.java:202-207 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/io/buffer/DefaultDataBuffer.java:314\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/io/buffer/DefaultDataBuffer.java"},"region":{"startLine":314}}}],"partialFingerprints":{"codehealthFindingId/v1":"c2e2828b30db82a34981bc3873556ac425b92d2fb4382b7097e99c3cc90d9316"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-core/src/main/java/org/springframework/core/MethodParameter.java:538-543 | spring-core/src/main/java/org/springframework/core/MethodParameter.java:571-576 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/core/MethodParameter.java:538\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/MethodParameter.java"},"region":{"startLine":538}}}],"partialFingerprints":{"codehealthFindingId/v1":"cf422335c3af751fcad64395702f720cfc85b207493cf7dfa1e4c27388694eb8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java:74-79 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodResolver.java:167-172 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveConstructorResolver.java"},"region":{"startLine":74}}}],"partialFingerprints":{"codehealthFindingId/v1":"a41758c8657925cc5d4c4d5419573737adabb2b38ee425f10f8ae353188c1b40"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/Ternary.java:104-109 | spring-expression/src/main/java/org/springframework/expression/spel/ast/Ternary.java:114-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/Ternary.java:104\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Ternary.java"},"region":{"startLine":104}}}],"partialFingerprints":{"codehealthFindingId/v1":"51eea7aba7341d31028362f4c57e490188a0b14b06693bcdc10e35fe9d66c3c3"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java:178-183 | spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java:196-201 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java:178\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/scheduling/support/BitsCronField.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"c1f71191d0b8aeff776e5b144055af64f2830c7b14cd2e6f2cd57d7f647608d0"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java:701-706 | spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java:1033-1038 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java:701\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-tx/src/main/java/org/springframework/transaction/interceptor/TransactionAspectSupport.java"},"region":{"startLine":701}}}],"partialFingerprints":{"codehealthFindingId/v1":"9e4a2a981eb208f198dafebacb4de7276ca2075c4b382f2af9339b74765e214c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ByteVector.java:187-192 | spring-core/src/main/java/org/springframework/asm/ByteVector.java:237-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ByteVector.java:187\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ByteVector.java"},"region":{"startLine":187}}}],"partialFingerprints":{"codehealthFindingId/v1":"773ea128fd6ff95dd6f64b033a58f9e1c6c5c8c4a65d9ea1281033b94ffdfe7c"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:529-534 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:933-939 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/asm/ClassReader.java:529\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":529}}}],"partialFingerprints":{"codehealthFindingId/v1":"93aeed570ecdac6a8e2f17321ae475002ae27252fc75d2c01c1a9ce13153040a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java:411-416 | spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java:426-431 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java:411\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/metadata/GenericCallMetaDataProvider.java"},"region":{"startLine":411}}}],"partialFingerprints":{"codehealthFindingId/v1":"db53a8d5217cdc08cb28aa2a0592e8ccb5381d228e85c9dfc080988a1c8711fe"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:295-300 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/NamedParameterUtils.java:302-307 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java:295\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/core/namedparam/NamedParameterUtils.java"},"region":{"startLine":295}}}],"partialFingerprints":{"codehealthFindingId/v1":"212cef5ff4cad3ada2d2452a22369da92ea89d71ebd6a1431edad2fd3d01f73b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/object/RdbmsOperation.java:391-396 | spring-jdbc/src/main/java/org/springframework/jdbc/object/RdbmsOperation.java:415-420 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-jdbc/src/main/java/org/springframework/jdbc/object/RdbmsOperation.java:391\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/object/RdbmsOperation.java"},"region":{"startLine":391}}}],"partialFingerprints":{"codehealthFindingId/v1":"2fe7f25ec488519c602d8c1b4cbdca44aabbbe59274111fb910aefe87931244e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java:253-258 | spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java:272-277 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jdbc/src/main/java/org/springframework/jdbc/object/SqlUpdate.java"},"region":{"startLine":253}}}],"partialFingerprints":{"codehealthFindingId/v1":"9de53a85d85d04d64cd1c3b45d7208a86a9355999c6ab3ef6929367d647a0317"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/MessageMappingMessageHandler.java:352-357 | spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java:537-542 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/MessageMappingMessageHandler.java:352\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/MessageMappingMessageHandler.java"},"region":{"startLine":352}}}],"partialFingerprints":{"codehealthFindingId/v1":"ec4981f9e4f12a88b120aaf45f6816c2d2434e5dc05df0c99fc9f4b740e2f783"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:375-380 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:354-359 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java:375\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/AbstractMethodMessageHandler.java"},"region":{"startLine":375}}}],"partialFingerprints":{"codehealthFindingId/v1":"4c14e007ff091171c3c2b5b5edff38266b91b09679f5f6689ca4633aa77d3389"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHelper.java:165-170 | spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/AbstractMethodMessageHandler.java:637-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHelper.java:165\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/reactive/InvocableHelper.java"},"region":{"startLine":165}}}],"partialFingerprints":{"codehealthFindingId/v1":"1501b54e0320dbe27ff8b70bdedd0eea8683fccedb109186c5655313a0802b10"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java:169-174 | spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java:184-189 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/DefaultRSocketRequester.java"},"region":{"startLine":169}}}],"partialFingerprints":{"codehealthFindingId/v1":"39376311102bd00e36aa46ac0673c8909049afe3289dcaadcddf95dee721e37b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java:423-428 | spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java:437-442 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java:423\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/simp/annotation/support/SimpAnnotationMethodMessageHandler.java"},"region":{"startLine":423}}}],"partialFingerprints":{"codehealthFindingId/v1":"f7a76208de950228b9b972a484e244b9399400996818707d67be7960cf6f0b01"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/bind/WebDataBinder.java:249-254 | spring-web/src/main/java/org/springframework/web/bind/WebDataBinder.java:277-282 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/bind/WebDataBinder.java:249\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/bind/WebDataBinder.java"},"region":{"startLine":249}}}],"partialFingerprints":{"codehealthFindingId/v1":"5ac6ef131561b888efe825b829e0e807dd19a2de5048d6c73f3115467295f60b"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/context/support/AbstractRefreshableWebApplicationContext.java:151-156 | spring-web/src/main/java/org/springframework/web/context/support/StaticWebApplicationContext.java:132-137 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/context/support/AbstractRefreshableWebApplicationContext.java"},"region":{"startLine":151}}}],"partialFingerprints":{"codehealthFindingId/v1":"98fd1c634bbb2ac0fd0b9a15f651d54cd3368a17a2efe68dcc34be470fbd46c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/annotation/ModelFactory.java:179-184 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/ModelInitializer.java:153-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/method/annotation/ModelFactory.java:179\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/method/annotation/ModelFactory.java"},"region":{"startLine":179}}}],"partialFingerprints":{"codehealthFindingId/v1":"3f23a35f5fe10b8ba2ac503dc1c9bc4e390a6dea7bdfecb64d41f7abd8119cd5"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/method/annotation/SessionAttributesHandler.java:84-89 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/SessionAttributesHandler.java:55-60 \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":"spring-web/src/main/java/org/springframework/web/method/annotation/SessionAttributesHandler.java"},"region":{"startLine":84}}}],"partialFingerprints":{"codehealthFindingId/v1":"a2d1ec9447922be70be8ae1bcb69853fd5199a46563498baa2d6c0a915ea26a4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:617-622 | spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:651-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:617\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":617}}}],"partialFingerprints":{"codehealthFindingId/v1":"aacbd66a407b00708a2ac5af9e36eb9a3018eb94a0cb60bef83d81d989cd88d1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:625-630 | spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:647-652 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java:625\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/WhatWgUrlParser.java"},"region":{"startLine":625}}}],"partialFingerprints":{"codehealthFindingId/v1":"415f6def037a25d78ad427669db5e4f69b37f7ce897690ebde4a607fa8074b4e"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (6 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/function/BodyInserters.java:150-155 | spring-webflux/src/main/java/org/springframework/web/reactive/function/BodyInserters.java:174-179 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/BodyInserters.java"},"region":{"startLine":150}}}],"partialFingerprints":{"codehealthFindingId/v1":"6a52dcfb934486b97448ee47bcd02685dec415c59faa525ff6d99ccb009e00d4"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 4): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java:123-127 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpModulus.java:52-56 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMultiply.java:85-89 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java:101-105 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java:123\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpMinus.java"},"region":{"startLine":123}}}],"partialFingerprints":{"codehealthFindingId/v1":"0bc6fde8a36cf39d66df9e01d761a876fe9682353c28af2cd5c00016154da8f8"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 3): spring-web/src/main/java/org/springframework/web/util/HtmlUtils.java:83-87 | spring-web/src/main/java/org/springframework/web/util/HtmlUtils.java:132-136 | spring-web/src/main/java/org/springframework/web/util/HtmlUtils.java:182-186 \u2014 all 3 copies are in the same file, so extract the block into one function there and call it from every one of those sites \u2014 resolving only two of them leaves the rest to drift apart the first time one is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/HtmlUtils.java:83\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/HtmlUtils.java"},"region":{"startLine":83}}}],"partialFingerprints":{"codehealthFindingId/v1":"99c864aadf2a032eca3c2b2b88338ca51b3965656b221b898ca42db28caed3d9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:178-182 | spring-web/src/main/java/org/springframework/http/codec/JacksonTokenizer.java:156-160 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java:178\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/json/Jackson2Tokenizer.java"},"region":{"startLine":178}}}],"partialFingerprints":{"codehealthFindingId/v1":"8485fe665032f3d942b341c09a48a2445e51e5afacdd48aff82f7cc04406aa33"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:425-429 | spring-web/src/main/java/org/springframework/http/converter/multipart/MultipartParser.java:373-377 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java:425\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/http/codec/multipart/MultipartParser.java"},"region":{"startLine":425}}}],"partialFingerprints":{"codehealthFindingId/v1":"78f3f8664d402d5ab9ea92f624845f0209ff0bca758d705ab2532b1ab013cfeb"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java:393-397 | spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java:434-438 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java:393\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/factory/support/StaticListableBeanFactory.java"},"region":{"startLine":393}}}],"partialFingerprints":{"codehealthFindingId/v1":"9adbbb830e7003d63be1fa50306c57113c1b27da1acd2842f07819849471b4d7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java:332-336 | spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java:451-455 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java:332\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/PropertyEditorRegistrySupport.java"},"region":{"startLine":332}}}],"partialFingerprints":{"codehealthFindingId/v1":"762f623fee3d97ba8f1ee9bae9572e39af3828d0052bc6539a24fa31bfda7583"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java:1192-1196 | spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java:1207-1211 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java:1192\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. The matched lines also transfer control out of the body holding them, which cannot survive a move into a called unit unchanged: have the extracted unit return that decision and let each site act on it."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java"},"region":{"startLine":1192}}}],"partialFingerprints":{"codehealthFindingId/v1":"9cd144e66ff7cb3c67f5b03a6965d6a2c6c2cd11f64f1ec2cda3c00b0bec45c9"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java:201-205 | spring-jms/src/main/java/org/springframework/jms/config/AbstractListenerContainerParser.java:123-127 \u2014 the copies span different directories, so extracting a shared function means choosing where it lives: put it somewhere both call sites can already reach \u2014 a location they all depend on today, or a new shared one if there is none \u2014 and call it from each site; until then, every change has to be made twice. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java:201\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/context/annotation/ComponentScanBeanDefinitionParser.java"},"region":{"startLine":201}}}],"partialFingerprints":{"codehealthFindingId/v1":"d44e5020a50b962ad8940c655863e4b71b61e27dbc818f5cc3f8c1e016c7c6da"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java:185-189 | spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java:543-547 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java:185\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectivePropertyAccessor.java"},"region":{"startLine":185}}}],"partialFingerprints":{"codehealthFindingId/v1":"2eaf9e2e6dd60b16dfa4a57172f5d13371312ca4283401ab81a15f8455e056b7"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java:42-46 | spring-expression/src/main/java/org/springframework/expression/spel/ast/OpNE.java:43-47 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpEQ.java"},"region":{"startLine":42}}}],"partialFingerprints":{"codehealthFindingId/v1":"f9d812179b59ca635a874151b66707cbcb6e62e015a0fd6a17da2a48d16b0f35"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-core/src/main/java/org/springframework/asm/ClassReader.java:2465-2470 | spring-core/src/main/java/org/springframework/asm/ClassReader.java:3831-3835 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/asm/ClassReader.java"},"region":{"startLine":2465}}}],"partialFingerprints":{"codehealthFindingId/v1":"23a61afbec861f3272c60a984a315f81a39cad53a8d04e703010a0ee3d1f8034"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-core/src/main/java/org/springframework/util/xml/DomUtils.java:64-68 | spring-core/src/main/java/org/springframework/util/xml/DomUtils.java:126-130 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-core/src/main/java/org/springframework/util/xml/DomUtils.java:64\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that. Note that the copies do not run to the end of the range shown: their LAST lines are different code, not the same code under different names \u2014 the matched region ends inside that line. Extract the lines above it, and read the last line of each site separately."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/util/xml/DomUtils.java"},"region":{"startLine":64}}}],"partialFingerprints":{"codehealthFindingId/v1":"fffb4a792a61f9eda10d3f689dcd9388a419f18a4495e997e37c0184ef118584"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketExchangeBeanRegistrationAotProcessor.java:54-58 | spring-web/src/main/java/org/springframework/web/service/annotation/HttpExchangeBeanRegistrationAotProcessor.java:52-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketExchangeBeanRegistrationAotProcessor.java:54\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-messaging/src/main/java/org/springframework/messaging/rsocket/service/RSocketExchangeBeanRegistrationAotProcessor.java"},"region":{"startLine":54}}}],"partialFingerprints":{"codehealthFindingId/v1":"77f84e3660374263f332927f895ab70bc1680b4aca6826cc63eb5cc2659f69a1"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DefaultDatabaseClient.java:131-135 | spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DefaultDatabaseClient.java:153-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DefaultDatabaseClient.java:131\u0060 it begins part-way through the construct above it, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-r2dbc/src/main/java/org/springframework/r2dbc/core/DefaultDatabaseClient.java"},"region":{"startLine":131}}}],"partialFingerprints":{"codehealthFindingId/v1":"6ceb783e223b3a53feb13bd7375bb5b4a2f28a32522d3574c629c6ae9c4f180f"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java:197-201 | spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java:255-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. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java:197\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-test/src/main/java/org/springframework/mock/web/MockHttpSession.java"},"region":{"startLine":197}}}],"partialFingerprints":{"codehealthFindingId/v1":"4e73c505dca0b3b19fba0c758d69cff72fbbb3e9d47bd0e9d4883d045ab9290a"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/support/RestClientAdapter.java:133-137 | spring-web/src/main/java/org/springframework/web/client/support/RestTemplateAdapter.java:118-122 \u2014 the copies sit in sibling files of one directory: extract the block into a single shared function in that directory and call it from each site, so a change lands once."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/support/RestClientAdapter.java"},"region":{"startLine":133}}}],"partialFingerprints":{"codehealthFindingId/v1":"ef33f7ba44be1cf6475def6f698c4bff324bfa6f1f34b25feca5f0aae728e746"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java:490-494 | spring-webflux/src/main/java/org/springframework/web/reactive/function/client/DefaultWebClientBuilder.java:374-378 \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":"spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java"},"region":{"startLine":490}}}],"partialFingerprints":{"codehealthFindingId/v1":"abea82a671e6072a3e7d10aeb0c0e002005c73607d5dbc4c84055948cc515d71"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/client/RestTemplate.java:968-972 | spring-web/src/main/java/org/springframework/web/client/RestTemplate.java:979-983 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/client/RestTemplate.java:968\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/RestTemplate.java"},"region":{"startLine":968}}}],"partialFingerprints":{"codehealthFindingId/v1":"19523305448ac840efd6bf0bca0013941918d1ab6b3f77c9fade1a9dfead2683"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java:287-291 | spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java:396-400 \u2014 both copies are in the same file, so extract the block into one function there and call it from each site \u2014 the copies drift apart the first time only one of them is edited. Read the line range as the matched WINDOW rather than a finished unit: at \u0060spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java:287\u0060 it does not close everything it opens, so those exact lines cannot be lifted as they stand \u2014 widen the region to the smallest complete statement or declaration that contains it, and extract that."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java"},"region":{"startLine":287}}}],"partialFingerprints":{"codehealthFindingId/v1":"971966018c5e3c8a4247dc8671364b2b58bc82ca63d9a47963b3eb3724e6dfad"}},{"ruleId":"D4","level":"warning","message":{"text":"Duplicated block (5 lines \u00D7 2): spring-webflux/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java:166-170 | spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfoHandlerMapping.java:146-150 \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":"spring-webflux/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java"},"region":{"startLine":166}}}],"partialFingerprints":{"codehealthFindingId/v1":"60263d3a3e47d9da04d3055e1b304b53f8e330e1b7c1f4d7963c3dee1eb5f4aa"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-context/src/main/java/org/springframework/validation/DataBinder.java: spring-context/src/main/java/org/springframework/validation/DataBinder.java changed 6 times in last 90 days, max complexity 29. 1 of those changes was a fix/bug commit, and the other 5 changed it for other reasons \u2014 this file is under both repair and feature pressure. Before the next change lands here, cover the area it touches with tests, then split that area out of the file so the following change is smaller than this one \u2014 a file this often edited pays the complexity back every time."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-context/src/main/java/org/springframework/validation/DataBinder.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"3d41cec0d7d9a08101fe1282f816b75c24f72117a3b6170ce18d14800945a733"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java: spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java changed 6 times in last 90 days, max complexity 17. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"8ddebefe599fb6431ae6880846e48036d9e1cc5f9604cffe6f0d78832f3f5cd3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java: spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java changed 3 times in last 90 days, max complexity 27. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-orm/src/main/java/org/springframework/orm/jpa/SharedEntityManagerCreator.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a423adc3468ac6bff4a5248b209935753240f375e9e5658e7ccc96a978c325d0"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-core/src/main/java/org/springframework/core/ResolvableType.java: spring-core/src/main/java/org/springframework/core/ResolvableType.java changed 2 times in last 90 days, max complexity 38. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/ResolvableType.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"a9c75bb039ce3b96283162bccf949547905c27fa1f533cbee153709e32c4cbcd"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java: spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java changed 3 times in last 90 days, max complexity 25. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-jms/src/main/java/org/springframework/jms/listener/DefaultMessageListenerContainer.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"79a81aa24c35391081e7d8c83e30004af0244d7983b896d929d5872b5305a4a3"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-web/src/main/java/org/springframework/web/client/HttpClientErrorException.java: spring-web/src/main/java/org/springframework/web/client/HttpClientErrorException.java changed 2 times in last 90 days, max complexity 30. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-web/src/main/java/org/springframework/web/client/HttpClientErrorException.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"05adf21b21e5b3a43510bebc2d1d83fc78a9b55f93d7c17be97d9340029b9c85"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java: spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java changed 2 times in last 90 days, max complexity 27. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/OpPlus.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"f86a22ee947d3735fdf2f4c1d8ac41740a126dbe8897b32a407b3e150057d9d8"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java: spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java changed 2 times in last 90 days, max complexity 24. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"b887f3b2c5770536e646af3677b31b291343f04deb5d15b25062e6f3e575c0a1"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java: spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java changed 2 times in last 90 days, max complexity 24. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3732e8afc27c5b39a0e6b254f31f76771f71513e0dfd0edefda7acedad69c1b"}},{"ruleId":"D15","level":"warning","message":{"text":"Hotspot: spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java: spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java changed 2 times in last 90 days, max complexity 23. Frequent change and high complexity in one file compound: schedule the next change to it to include carving out the part being edited, behind tests written first."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-beans/src/main/java/org/springframework/beans/AbstractNestablePropertyAccessor.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"676d5aae4fb2dddaa12ba8c32743e821e14f9683308b1e6386a11c45fbf658a9"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #1: If anonymized user #1 becomes unavailable, 87 significant file(s) lose their only recent owner: spring-core/src/main/java/org/springframework/asm/ClassReader.java, spring-tx/src/main/java/org/springframework/transaction/jta/JtaTransactionManager.java, spring-core/src/main/java/org/springframework/asm/MethodVisitor.java, spring-context/src/main/java/org/springframework/context/annotation/CommonAnnotationBeanPostProcessor.java, spring-orm/src/main/java/org/springframework/orm/jpa/JpaTransactionManager.java, spring-orm/src/main/java/org/springframework/orm/jpa/AbstractEntityManagerFactoryBean.java, spring-orm/src/main/java/org/springframework/orm/jpa/EntityManagerFactoryUtils.java, spring-oxm/src/main/java/org/springframework/oxm/support/AbstractMarshaller.java (\u002B79 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"62ec8a20c8faa6e3507c153813adc4981fa6735de6c283fe1e8ee4dafed0a623"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #2: If anonymized user #2 becomes unavailable, 51 significant file(s) lose their only recent owner: spring-expression/src/main/java/org/springframework/expression/spel/ast/Indexer.java, spring-expression/src/main/java/org/springframework/expression/spel/CodeFlow.java, spring-core/src/main/java/org/springframework/core/annotation/MergedAnnotations.java, spring-core/src/main/java/org/springframework/core/annotation/MergedAnnotation.java, spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotation.java, spring-expression/src/main/java/org/springframework/expression/spel/standard/SpelExpression.java, spring-expression/src/main/java/org/springframework/expression/spel/ast/ConstructorReference.java, spring-expression/src/main/java/org/springframework/expression/spel/support/SimpleEvaluationContext.java (\u002B43 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"f86994b19bcda813ec770e4d01acb502c698246dcc8f8203a6aa6c8103b427fa"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #3: If anonymized user #3 becomes unavailable, 37 significant file(s) lose their only recent owner: spring-webmvc/src/main/java/org/springframework/web/servlet/handler/AbstractHandlerMapping.java, spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/support/DefaultHandlerExceptionResolver.java, spring-webflux/src/main/java/org/springframework/web/reactive/result/method/RequestMappingInfo.java, spring-messaging/src/main/java/org/springframework/messaging/simp/broker/DefaultSubscriptionRegistry.java, spring-web/src/main/java/org/springframework/web/util/ForwardedHeaderUtils.java, spring-webmvc/src/main/java/org/springframework/web/servlet/config/MvcNamespaceUtils.java, spring-webmvc/src/main/java/org/springframework/web/servlet/function/RouterFunctionBuilder.java, spring-webflux/src/main/java/org/springframework/web/reactive/function/server/RouterFunctionBuilder.java (\u002B29 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"dc5aaf93bba0912aad813f6b46a1d7847089e7be477f363047d748445933bcaf"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #4: If anonymized user #4 becomes unavailable, 22 significant file(s) lose their only recent owner: spring-beans/src/main/kotlin/org/springframework/beans/factory/BeanRegistrarDsl.kt, spring-webflux/src/main/java/org/springframework/web/reactive/result/view/script/ScriptTemplateView.java, spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementTag.java, spring-messaging/src/main/java/org/springframework/messaging/converter/JacksonJsonMessageConverter.java, spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/JacksonJsonView.java, spring-web/src/main/java/org/springframework/http/codec/KotlinSerializationSupport.java, spring-webmvc/src/main/java/org/springframework/web/servlet/view/DefaultRequestToViewNameTranslator.java, spring-core/src/main/java/org/springframework/core/KotlinDetector.java (\u002B14 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"5bbb3ddd891758ccceed687d7e95a7ffa2f3bdbcef2c411873e7054a93465391"}},{"ruleId":"D16","level":"note","message":{"text":"Off-boarding risk: anonymized user #5: If anonymized user #5 becomes unavailable, 13 significant file(s) lose their only recent owner: spring-web/src/main/java/org/springframework/web/util/pattern/InternalPathPatternParser.java, spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/RestClientXhrTransport.java, spring-websocket/src/main/java/org/springframework/web/socket/server/standard/StandardWebSocketUpgradeStrategy.java, spring-webmvc/src/main/java/org/springframework/web/servlet/resource/CachingResourceResolver.java, spring-webflux/src/main/java/org/springframework/web/reactive/resource/CachingResourceResolver.java, buildSrc/src/main/java/org/springframework/build/shadow/ShadowSource.java, spring-web/src/main/java/org/springframework/web/client/RestClientUtils.java, spring-webmvc/src/main/java/org/springframework/web/servlet/resource/AbstractVersionStrategy.java (\u002B5 more). Pair on, review, or document these before any departure."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"384dcaa1cf8ab072b54e22c9a46e2377a75eeed104d216703e616d7e114f3048"}},{"ruleId":"D16","level":"note","message":{"text":"Further sole-owners (lower concentration): 12 other contributor(s) are each the sole owner of a small amount of code below the off-boarding threshold \u2014 folded into the bus-factor score and metrics (223 single-owned of 2992 analysed files in total, counted over production source files of roughly 100 lines or more, excluding tests, vendored, generated and example/demo trees, largest first). They are anonymized user #6 (2 file(s)), anonymized user #7 (1 file(s)), anonymized user #8 (1 file(s)), anonymized user #9 (1 file(s)), anonymized user #10 (1 file(s)), anonymized user #11 (1 file(s)) (\u002B6 more) \u2014 spread or document their files in the same way, at lower priority than the named off-boarding risks above."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"6eac528f2429e724e1a97ed868f79eefbcf1888dab4af9a9e673429369bb5b2f"}},{"ruleId":"D28","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"967c2c48aa81d966a292d3e4868d9b23a4bd2666afc68a4b129d72415a4d718f"}},{"ruleId":"D28","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"3cdfd7beb31b791ae18dcb425e21eb157c842e7bbcd522cc330573c1a6538db1"}},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"9476e839dca13747231ff53fef7aa1504ce4d4453362207cf84eca984e90d7dc"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6ec8a7ab6bf193be650710298616a83c83ec481ef5a7929dc57b04b9ce0e4b52"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"4e6f9592aec2545dd4ba3c725e65b77a8f0a2f79a681396c51a70ea13a9c1210"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"210a8be8d6126f1fde04387250d8eeba0da5656e9148c99f4a8db6c45583b089"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"5f4c81284a8f16a0392db91969df89649a8c2ca8fd25ba395ba483f738268308"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"70897ff61af1d756e638bb332e33883ec20b76f510fddff09f73246917d3cedc"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"cc3d4b7e04149c00e48c07d1c323069d8420fc284c13380bc8c57e4a9eae2f07"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"b2e77283cd4f3f3ecf2826b0ee134982f37e4dc058166848802e8fcbad8ce6e1"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"bdf9e280b4c25ee2dde7c317a30be66824f7a5fe885f3395e34441fb1dbc124a"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"6e779ed03b15c6a2019290b90d62d7bff2d27b31db836a31aca2e8b00cdd9c48"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"c6d5f4aceb07250df7e5e7240bb6c36a721799c1e5e204a27fb815765aa93105"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"af31f341a01689687204e99ede373d0657a37bcc38ccc484aaf0e2912c041be5"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"7d8580c1edd0944c5a2cdb8026d38ceb483a55df5260e4366119adc1a664e0f2"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"70213f62565604811c01e15872b4cf95378d835c27593ecb467114612708345a"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"373b2262f2cca35ef906009cccf39bcb8b18f5abefbeeef31fba06c9ecf06e5a"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"388c694639a42f5833992155c5beeeb355bbe24a692be11ee6952a12f7e10518"},"taxa":[{"id":"CWE-78","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"a5dfd90c56d69ee54ae767c494d3f1a9756e5e6c9b19816e7d7016b968bb4114"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"94b3140cb3ba76e95984f21c72589855fce2e1f00557ffee6d5b727758bc6fef"},"taxa":[{"id":"CWE-1357","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}},{"id":"CWE-353","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D29","level":"error","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"8984c1453b29940cb587c35ccdc6592d6d8e866e72c7235dc7c2b60f9903e81d"},"taxa":[{"id":"CWE-502","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":"8011a5c49352b0270f886a271c6533e75c774d7019e8a9814d78d94708c1c09d"},"taxa":[{"id":"CWE-502","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":"eeb67203b8ede27ec9d6c38866442059a1d57637323dca6b1543eb364d47be08"},"taxa":[{"id":"CWE-502","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":"88fad912d4b3d36297ea1fefcd68893b331059f448007265b1036092e70951ab"},"taxa":[{"id":"CWE-502","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":"8a7373f0dc85be5a201ed140e5191588643503624461ccef088c422b63445d87"},"taxa":[{"id":"CWE-611","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":"15ca7c22a406f1c39cdaff4f03bbdb6aa67f7a73eecef6fde8b40a15c3f8f318"},"taxa":[{"id":"CWE-611","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":"d30118311eda8f60c7a37f043d8ee3a15a989e99584d9733cf2d5b45753e3ef0"},"taxa":[{"id":"CWE-611","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":"8ba8420ff1ed9cc87513736a73731c61269a6e19beb4ebc79fbcc11830c2e1fe"},"taxa":[{"id":"CWE-611","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":"25ab5e807c9d4a03f5e6b97dea6b38a231133cdf055f38686c8a53242429222f"},"taxa":[{"id":"CWE-611","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":"8c77881572aebf43d9a5976d2fb55c38d69ccf87731aed9e2013fa547c0c5777"},"taxa":[{"id":"CWE-611","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":"a1786e27ee621a2b90dd8a838083118dc62fa86c913da0f56e91625aa24fdb05"},"taxa":[{"id":"CWE-611","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":"ba08ea9edc0c49ba99862391bcd50f96a02ea046864d606682c3524b5a1d6b73"},"taxa":[{"id":"CWE-611","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":"23ecba67867645a519f4f2827f3e7137a96bc9dad7315f8916032c7a5d220f93"},"taxa":[{"id":"CWE-611","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":"95bf209b56f004927e4044801472157888416e030e4b99e364d8a282ff4c33aa"},"taxa":[{"id":"CWE-89","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":"9432eaf920b18a9b3ff8a967c048269cf35c9ac6432ca0cf3d53279dacbfc5a6"},"taxa":[{"id":"CWE-352","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":"7c4efae686b80351324c8f68df377869ae261e1e8702e401d6c47892a9f4e302"},"taxa":[{"id":"CWE-200","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":"79e86572edf5f8a8c276334c254dc7e9bcede65ec837f348b162f282a2000183"},"taxa":[{"id":"CWE-200","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":"804dc1b9604de80fddf1f2918b9be2ae195a141769b8e26a39d18575f6d0c418"},"taxa":[{"id":"CWE-94","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":"7f9009bb62d7a85067f8a724a41d52aafd556792a0d6281703f69c5b8b22639c"},"taxa":[{"id":"CWE-94","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":"e28ecc38c24665136c8655cabff7ca162d37a3b93bbd505515f6100a646fcba8"},"taxa":[{"id":"CWE-1004","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":"d2487063617ef9b56f69f1c48e1843cbc4b0a3135df8a204f3da10beef035581"},"taxa":[{"id":"CWE-614","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":"65e90f535c4c920a0df61b776b83162792f3469651cfdf5c0a39ab48fbfb70c5"},"taxa":[{"id":"CWE-1004","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":"fcbae03d868c5ce3825b2803e7f9ecbac7be5a5c0e07638b1220879ab1b8c49a"},"taxa":[{"id":"CWE-614","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":"be676d58b4b690397df86eaf3e3f5bb13832555bf9c94af5c094c83b90a65f0d"},"taxa":[{"id":"CWE-94","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":"62da21388f36a3ace4841497a4952d48a9c73e5749ee48c0924fb350a8a1ee92"},"taxa":[{"id":"CWE-94","toolComponent":{"name":"CWE","guid":"c3a2b1d0-7f3e-4b2a-9c1d-5e6f7a8b9c0d"}}]},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webflux/src/main/java/org/springframework/web/reactive/function/server/ServerRequest.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"1cab943070b754d4066069f187be415d62276783969d19ee3fcbc2a99afaf709"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-core/src/main/java/org/springframework/core/annotation/TypeMappedAnnotations.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"d3628ddb0ee5af2e7c90fa41d06cbe8ed2b01289e5e704b2e8bb5a729ff3fb67"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-webmvc/src/main/java/org/springframework/web/servlet/function/ServerRequest.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"43b5c465e471be978c6d0b9f4017177c2f43a38528c43023d7f78c7b6bb90d87"}},{"ruleId":"D34","level":"error","message":{"text":"Orphaned knowledge: No living knowledge remains for this large file \u2014 its last meaningful change has decayed away; if it breaks, no one currently understands it. Schedule a read-through / add characterisation tests before it bites."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-r2dbc/src/main/java/org/springframework/r2dbc/connection/ConnectionFactoryUtils.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"e75917c074f8cc06dd48941fdfe6976bb9046027ee0b88413722d7bc86da54bd"}},{"ruleId":"D34","level":"note","message":{"text":"Further orphaned files (smaller): 241 smaller file(s) also have no living knowledge \u2014 folded into the freshness score and metrics rather than listed individually (245 orphaned of 3000 analysed files in total, counted over production source files of roughly 100 lines or more, excluding tests, vendored, generated and example/demo trees, largest first)."},"locations":[],"partialFingerprints":{"codehealthFindingId/v1":"ce861fd78f6935114d3a342cb90ad25870f984e1042954fcbbe27c0e23be3658"}},{"ruleId":"D35","level":"warning","message":{"text":"Change coupling: SimpleEvaluationContext.java \u2194 StandardEvaluationContext.java: \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/SimpleEvaluationContext.java\u0060 and \u0060spring-expression/src/main/java/org/springframework/expression/spel/support/StandardEvaluationContext.java\u0060 change together 50% of the time (7 of the 14 commits that touched whichever of the two files changed less often, counting a file under its earlier names as well). They sit in the same directory, and in this ecosystem sibling files there normally share one namespace/package \u2014 so a direct reference between them needs no import and this pass cannot see whether one exists. Read the pair before acting: if one file only DECLARES what the other consumes (a constants/types file beside its user), the co-change is definitional and the question is whether the split earns its keep; if they duplicate structure, extract the common part into a shared function or type they both call; if neither holds, the coupling is hidden and worth breaking."},"locations":[{"physicalLocation":{"artifactLocation":{"uri":"spring-expression/src/main/java/org/springframework/expression/spel/support/SimpleEvaluationContext.java"},"region":{"startLine":1}}}],"partialFingerprints":{"codehealthFindingId/v1":"c47e15ca054c482a0bd6113f63f20d681e7df1b8fe91e7350c4b359d6ad70cd4"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"1b213f6eedd4b140d0bc37bdf1496f72811a643f34064f12518b32e9e83bcfc7"}},{"ruleId":"D36","level":"note","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"eb00976a698a5d68999b7ee6d27206fd374e916853e7ff1ead5eed42386f043f"}},{"ruleId":"D36","level":"warning","message":{"text":"A security finding was recorded here. Its details are withheld on the public artifact \u2014 ask the repository owner for the full report."},"partialFingerprints":{"codehealthFindingId/v1":"90f83b4fa27db32740afe9540c905f3c0499caed87f61049a8a903ecc95b41c3"}}],"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-1004","guid":"872195c9-bb07-cf51-8a32-865f4bb753ca","name":"CWE-1004","shortDescription":{"text":"CWE-1004"},"helpUri":"https://cwe.mitre.org/data/definitions/1004.html"},{"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-1395","guid":"800e09e7-c11a-8654-9fa6-86f398995fed","name":"Dependency on Vulnerable Third-Party Component","shortDescription":{"text":"Dependency on Vulnerable Third-Party Component"},"helpUri":"https://cwe.mitre.org/data/definitions/1395.html"},{"id":"CWE-200","guid":"b0ce3b1d-7a29-fe50-8aab-9aba899d2988","name":"Exposure of Sensitive Information to an Unauthorized Actor","shortDescription":{"text":"Exposure of Sensitive Information to an Unauthorized Actor"},"helpUri":"https://cwe.mitre.org/data/definitions/200.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-352","guid":"2afe7bdb-7330-195f-b3bf-8cf5b789b3ae","name":"CWE-352","shortDescription":{"text":"CWE-352"},"helpUri":"https://cwe.mitre.org/data/definitions/352.html"},{"id":"CWE-353","guid":"09d7e902-d4ee-f05d-ae6c-0a1554d0c18f","name":"CWE-353","shortDescription":{"text":"CWE-353"},"helpUri":"https://cwe.mitre.org/data/definitions/353.html"},{"id":"CWE-494","guid":"b8a65e0d-e459-4a55-a931-fc1136482375","name":"Download of Code Without Integrity Check","shortDescription":{"text":"Download of Code Without Integrity Check"},"helpUri":"https://cwe.mitre.org/data/definitions/494.html"},{"id":"CWE-502","guid":"f7d3b296-aac0-5c5a-b706-e07faba26c36","name":"CWE-502","shortDescription":{"text":"CWE-502"},"helpUri":"https://cwe.mitre.org/data/definitions/502.html"},{"id":"CWE-611","guid":"1afbae66-ea29-2d59-aaa2-134e3ae2e85a","name":"CWE-611","shortDescription":{"text":"CWE-611"},"helpUri":"https://cwe.mitre.org/data/definitions/611.html"},{"id":"CWE-614","guid":"faa8a6a5-7e9d-5d5e-afc9-020ff49d250a","name":"CWE-614","shortDescription":{"text":"CWE-614"},"helpUri":"https://cwe.mitre.org/data/definitions/614.html"},{"id":"CWE-77","guid":"332c8ade-6612-9f56-a06b-d8d90b1a8750","name":"Command Injection","shortDescription":{"text":"Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/77.html"},{"id":"CWE-78","guid":"2e31ceaf-c7ae-2e5e-9661-cfb1362789cf","name":"OS Command Injection","shortDescription":{"text":"OS Command Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/78.html"},{"id":"CWE-79","guid":"fd45580b-e8c4-fc5e-8c2f-aa8fab0b4dbf","name":"Cross-site Scripting (XSS)","shortDescription":{"text":"Cross-site Scripting (XSS)"},"helpUri":"https://cwe.mitre.org/data/definitions/79.html"},{"id":"CWE-798","guid":"5e8f057d-fee3-995a-a0cb-9fc5b0d174d1","name":"Use of Hard-coded Credentials","shortDescription":{"text":"Use of Hard-coded Credentials"},"helpUri":"https://cwe.mitre.org/data/definitions/798.html"},{"id":"CWE-89","guid":"6d08fdad-37eb-c150-bbf0-d7d946863407","name":"SQL Injection","shortDescription":{"text":"SQL Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/89.html"},{"id":"CWE-937","guid":"16f316ae-415c-b354-a59b-1f7905f756e9","name":"Using Components with Known Vulnerabilities","shortDescription":{"text":"Using Components with Known Vulnerabilities"},"helpUri":"https://cwe.mitre.org/data/definitions/937.html"},{"id":"CWE-94","guid":"75e7f50c-6c2f-dd52-bf40-bf6c52b861fd","name":"Code Injection","shortDescription":{"text":"Code Injection"},"helpUri":"https://cwe.mitre.org/data/definitions/94.html"}]}],"properties":{"codehealthPublication":{"public":true,"notice":"This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings \u2014 which rule fired, in which file, on which line, and how to fix it \u2014 are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.","securityFindingsRedacted":48,"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."]}]}