{"results":{"result":{"added-files":{"code-health":10.0,"old-code-health":0.0,"files":[{"file":"src/Paramore.Brighter/Policies/Attributes/UseResiliencePipelineAsyncAttribute.cs","loc":25,"code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Attributes/UseResiliencePipelineAttribute.cs","loc":25,"code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Handlers/ResilienceExceptionPolicyHandler.cs","loc":44,"code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Handlers/ResilienceExceptionPolicyHandlerAsync.cs","loc":34,"code-health":10.0},{"file":"src/Paramore.Brighter/Extensions/ResiliencePipelineRegistryExtensions.cs","loc":19,"code-health":10.0}]},"external-review-url":"https://github.com/BrighterCommand/Brighter/pull/3677","old-code-health":8.010622824162057,"modified-files":{"code-health":8.080721254790591,"old-code-health":8.010622824162057,"files":[{"file":"src/Paramore.Brighter/CommandProcessor.cs","loc":1056,"old-loc":1045,"code-health":7.106711345609554,"old-code-health":7.106711345609554},{"file":"src/Paramore.Brighter/Policies/Attributes/UsePolicyAsyncAttribute.cs","loc":32,"old-loc":31,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Attributes/UsePolicyAtttribute.cs","loc":32,"old-loc":31,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Handlers/ExceptionPolicyHandlerAsync.cs","loc":42,"old-loc":42,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Handlers/FallbackPolicyHandler.cs","loc":65,"old-loc":65,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Handlers/FallbackPolicyHandlerRequestHandlerAsync.cs","loc":74,"old-loc":74,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/RequestContext.cs","loc":53,"old-loc":46,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter.Extensions.DependencyInjection/ServiceCollectionExtensions.cs","loc":440,"old-loc":437,"code-health":9.128118197753722,"old-code-health":9.128118197753722},{"file":"src/Paramore.Brighter.ServiceActivator/ControlBus/ControlBusReceiverBuilder.cs","loc":187,"old-loc":184,"code-health":8.715400157423334,"old-code-health":8.720298221085535},{"file":"src/Paramore.Brighter/CommandProcessorBuilder.cs","loc":266,"old-loc":227,"code-health":9.387218218812514,"old-code-health":9.387218218812514},{"file":"src/Paramore.Brighter/ControlBusSenderFactory.cs","loc":45,"old-loc":43,"code-health":9.6882083290695,"old-code-health":9.6882083290695},{"file":"src/Paramore.Brighter/Policies/Attributes/TimeoutPolicyAttribute.cs","loc":24,"old-loc":23,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/Policies/Handlers/TimeoutPolicyHandler.cs","loc":91,"old-loc":90,"code-health":10.0,"old-code-health":10.0},{"file":"src/Paramore.Brighter/OutboxProducerMediator.cs","loc":828,"old-loc":806,"code-health":7.15860485606499,"old-code-health":6.945249111767968}]},"removed-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-id":"3677","analysis-time":"2025-07-25T08:23:08Z","negative-impact-count":1,"suppressions":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"affected-hotspots":4,"commits":["8e5a2277a4cfe4c37553935793daf2addf92343d","b4f8bae79c5b1145b45e73baae0955713427ea5b","7788af7f3c0b71e9ebbc9f670b4034e4d5c48d68","9a8a22948b4ef05890bd734922b1af98528c6da4","01e480b023c426fda22c68b47fbdf37e97456405","76f0943795294f297189230d956ebe91b0a4d4f9","5be9fd3100b5724159d85227d33986e4b901d016","fb26c9286b55da4a7a7f091fc66d1e9ae7ffde71","4526fba35dd14cc983f678a0f80b11276cce494f","2d7d01c3aaac8393457229a2ebd40e30b8e4e28a"],"is-negative-review":true,"negative-findings":{"number-of-types":1,"number-of-files-touched":1,"findings":[{"method":"Build","why-it-occurs":"Overly long functions make the code harder to read. The recommended maximum function length for the C# language is 70 lines of code. Severity: Brain Method - Complex Method - Long Method.","name":"Large Method","file":"src/Paramore.Brighter.ServiceActivator/ControlBus/ControlBusReceiverBuilder.cs","refactoring-examples":null,"change-level":"warning","is-hotspot?":true,"line":121,"what-changed":"Build increases from 75 to 76 lines of code, threshold = 70","how-to-fix":"We recommend to be careful here -- just splitting long functions don't necessarily make the code easier to read. Instead, look for natural chunks inside the functions that expresses a specific task or concern. Often, such concerns are indicated by a Code Comment followed by an if-statement. Use the [EXTRACT FUNCTION](https://refactoring.com/catalog/extractFunction.html) refactoring to encapsulate that concern.","change-type":"degraded"}]},"positive-impact-count":1,"repo":"Brighter","code-health":8.164143482923583,"version":"3.0","authors":["Rafael Andrade","Rafael Lillo"],"directives":{"added":[],"removed":[]},"positive-findings":{"number-of-types":1,"number-of-files-touched":1,"findings":[{"method":"BulkDispatchAsync","why-it-occurs":"Deep nested logic means that you have control structures like if-statements or loops inside other control structures. Deep nested logic increases the cognitive load on the programmer reading the code. The human working memory has a maximum capacity of 3-4 items; beyond that threshold, we struggle with keeping things in our head. Consequently, deep nested logic has a strong correlation to defects and accounts for roughly 20% of all programming mistakes.\n\nCodeScene measures the maximum nesting depth inside each function. The deeper the nesting, the lower the code health. The threshold for the C# language is  levels of nesting.","name":"Deep, Nested Complexity","file":"src/Paramore.Brighter/OutboxProducerMediator.cs","change-level":"improvement","is-hotspot?":true,"line":817,"what-changed":"BulkDispatchAsync is no longer above the threshold for nested complexity depth","how-to-fix":"Occassionally, it's possible to get rid of the nested logic by [Replacing Conditionals with Guard Clauses](https://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html).\n\nAnother viable strategy is to identify smaller building blocks inside the nested chunks of logic and extract those responsibilities into smaller, cohesive, and well-named functions. The [EXTRACT FUNCTION](https://refactoring.com/catalog/extractFunction.html) refactoring explains the steps.","change-type":"fixed"}]},"notices":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"external-review-provider":"GitHub"},"analysistime":"2025-07-25T08:23:08.000Z","project-name":"Brighter","repository":"https://github.com/BrighterCommand/Brighter.git"}}