{"results":{"result":{"added-files":{"code-health":9.91594047136792,"old-code-health":0.0,"files":[{"file":"scripts/ci-web-boot-stall-pages.js","loc":79,"code-health":10.0},{"file":"scripts/ci-web-report-failures.js","loc":69,"code-health":9.387218218812514},{"file":"integration_test/utils/test_backend.dart","loc":12,"code-health":10.0},{"file":"scripts/test_backend_reset_server.py","loc":219,"code-health":10.0},{"file":"android/app/src/androidTest/java/com/linagora/android/tmail/ActivityDrainingPatrolJUnitRunner.java","loc":79,"code-health":10.0},{"file":"scripts/test_ci_console_filter.py","loc":45,"code-health":10.0}]},"external-review-url":"https://github.com/linagora/tmail-flutter/pull/5068","old-code-health":9.986739894454681,"modified-files":{"code-health":9.884053313053455,"old-code-health":9.986739894454681,"files":[{"file":"integration_test/base/test_base.dart","loc":87,"old-loc":64,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/scenarios/search/collapsed_threads_search_more_scenario.dart","loc":40,"old-loc":32,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/robots/thread_assertion_robot.dart","loc":105,"old-loc":104,"code-health":10.0,"old-code-health":10.0},{"file":"lib/features/home/presentation/home_controller.dart","loc":336,"old-loc":336,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/base/base_test_scenario.dart","loc":37,"old-loc":37,"code-health":9.6882083290695,"old-code-health":9.6882083290695},{"file":"integration_test/tests/login/login_with_basic_auth_test.dart","loc":18,"old-loc":17,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/utils/backend_reset_client.dart","loc":50,"old-loc":31,"code-health":10.0,"old-code-health":10.0},{"file":"scripts/backend-reset-server.py","loc":357,"old-loc":158,"code-health":9.6882083290695,"old-code-health":10.0},{"file":"integration_test/base/base_scenario.dart","loc":19,"old-loc":18,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/scenarios/misc/hide_sign_out_inside_twake_workplace_scenario.dart","loc":19,"old-loc":19,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/scenarios/composer/android/share_mailto_before_mailbox_ready_opens_composer_scenario.dart","loc":54,"old-loc":35,"code-health":10.0,"old-code-health":10.0},{"file":"integration_test/utils/receive_sharing_intent_simulator.dart","loc":37,"old-loc":19,"code-health":9.6882083290695,"old-code-health":10.0}]},"removed-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-id":"5068","analysis-time":"2026-11-02T03:47:30Z","negative-impact-count":1,"suppressions":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"affected-hotspots":0,"commits":["3be6eee74631dd2077ed33edb81134c6b0024e1c","36ea1be0b31feb8f6cd54ab801e5bb016331e7c9","5e7eb3e4609dfe9d8bde7f040b103a472522dff8","b5ce6ab370e334f8ea65c2b72e9be9f3976a2089","9e91774a6f26435b13cbca602487cab5f3b93a0c","e276183945c2ad5c6111c6c52c05881fd5c34115","b9c9a150a53af84333af96c78e851a1624000ce6","061caa255b6a6521be2df4db564eb07c1201d5db","fb4aa4d09c6d33bb33e61fd4845009c6b9b55f59","84e7a4956c09ec64e59f2372db1d6f6daded7ce7","c1024762172bddace2a7c4a6dc8a4fc7e7835a47","5d00cb54476835a5c541945aa506c1c1fb4180dc","3b98f36e0c2ed9a9f0c77be6284162684523d207","aef82bd4c95b9f063cd229cc811135f656364933","b663247e10f7cee4fcacfb2eabc4aafb02c2da0d","3fbfd16292ce3bbd70d64518e722a2b60756f8b4","d6002122c0732c629a8a68e4693adeab2021aa48","a5010e3235df309251f3944f4319d2084eece930","519cbd364effc9480cc9699e8433cba6bb424a6a","705a51a6f5285c8f8e53df18ece1dd1519dd5318","0600725cc9b3a68e3e70a35b8401b86312bb419b","e8e36aa7b4740bccd13c9fda85e3ed23e1beec34","d54307587b944af2dfdcf1f43f1cf500aadb99b3","fc6deebbd49eb953c4d74c5a0af04ff09d667fdb","634d03b6de5f460284c66d6e7ce05c5ec404b913","4011a508c58d50198429ae327bda3fe22b00d9f8","23de4bd4ec6ea5efa3c9eccabcce9b32b77e31c7","5ea87381db62d4895aca4660874109e10373e99f","074ae026bf6d295d28a1c4f2efc70325ff0c4114","e1fe87b050ad8c2ca496bb0c8dd135ea137c28dc","f5ce899b46b281c7120c81d4eec20b6bc7371f55","d9f1f0aefc28417789f8b90129a1986e847f33a8","91dc50e289d06fb10d26ea4f13cc1eeee43bcd45","34fecac85eddb01398f1af31a06d7d7de72177c4","1ec43797cce703b341e8e034c4783b9fef539073","9adb08702c5e1e911fa1033ccd5cd90675771550","54e7efd94f3d9da3b96d24b4258528338930e042","121f71fbff064721dc401484d393383f98fb9ee9","47fb7aa2f62b3e7529d4603091b3b157d519884a","08a727caadfd385e38324a634936c2fec41362ee","e2af8afeeba32590047f6ebd93d0de024da1331e","3ae2ab113ce1ce20fefd741ef62ac64e567fc681","1d189ba81f48e961de6c2857d342a4d96a5b222e","3bdd1de1e1169adcfaf75fd04174069151019cd4","d3851d5f6fbca008bba57e9bcb4d8375e46a7abb","bd16b95d13048cf871ec9dbd6af91ed10afa9e74"],"is-negative-review":true,"negative-findings":{"number-of-types":1,"number-of-files-touched":1,"findings":[{"why-it-occurs":"Overall Code Complexity is measured by the mean cyclomatic complexity across all functions in the file. The lower the number, the better.\n\nCyclomatic complexity is a function level metric that measures the number of logical branches (if-else, loops, etc.). Cyclomatic complexity is a rough complexity measure, but useful as a way of estimating the minimum number of unit tests you would need. As such, prefer functions with low cyclomatic complexity (2-3 branches).","name":"Overall Code Complexity","file":"scripts/ci-web-report-failures.js","refactoring-examples":null,"change-level":"warning","is-hotspot?":false,"what-changed":"This module has a mean cyclomatic complexity of 4.71 across 7 functions. The mean complexity threshold is 4","how-to-fix":"You address the overall cyclomatic complexity by a) modularizing the code, and b) abstract away the complexity. Let's look at some examples:\n\nModularizing the Code: Do an X-Ray and inspect the local hotspots. Are there any complex conditional expressions? If yes, then do a [DECOMPOSE CONDITIONAL](https://refactoring.com/catalog/decomposeConditional.html) refactoring. Extract the conditional logic into a separate function and put a good name on that function. This clarifies the intent and makes the original function easier to read. Repeat until all complex conditional expressions have been simplified.\n\n","change-type":"introduced"}]},"positive-impact-count":0,"repo":"tmail-flutter","code-health":9.893703879017458,"version":"3.0","authors":["Dang Dat","dab246"],"directives":{"added":[],"removed":[]},"positive-findings":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"notices":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"external-review-provider":"GitHub"},"analysistime":"2026-11-02T03:47:30.000Z","project-name":"james-project","repository":"https://github.com/linagora/tmail-flutter.git"}}