{"results":{"result":{"added-files":{"code-health":10.0,"old-code-health":0.0,"files":[{"file":"e2e/tests/move-to-sharings.spec.ts","loc":185,"code-health":10.0},{"file":"src/modules/shareddrives/hooks/useQueryMultipleSharedDriveFolders.spec.tsx","loc":26,"code-health":10.0},{"file":"e2e/pages/PublicMoveToPage.ts","loc":27,"code-health":10.0},{"file":"e2e/tests/move-to.mobile.spec.ts","loc":33,"code-health":10.0}]},"external-review-url":"https://github.com/linagora/twake-drive/pull/4208","old-code-health":9.750202489168235,"modified-files":{"code-health":9.761841928589808,"old-code-health":9.750202489168235,"files":[{"file":"src/components/FilePicker/FilePickerBody.jsx","loc":535,"old-loc":524,"code-health":9.387218218812514,"old-code-health":9.387218218812514},{"file":"src/components/FilePicker/FilePickerBody.spec.jsx","loc":796,"old-loc":743,"code-health":10.0,"old-code-health":10.0},{"file":"src/modules/move/MoveTo.jsx","loc":281,"old-loc":267,"code-health":10.0,"old-code-health":10.0},{"file":"src/modules/move/MoveTo.spec.jsx","loc":910,"old-loc":741,"code-health":10.0,"old-code-health":10.0},{"file":"src/modules/move/helpers.js","loc":226,"old-loc":211,"code-health":8.550702132413953,"old-code-health":8.598774368581582},{"file":"e2e/helpers/sharing.ts","loc":79,"old-loc":62,"code-health":9.6882083290695,"old-code-health":9.6882083290695},{"file":"e2e/pages/FilePickerPage.ts","loc":218,"old-loc":211,"code-health":9.387218218812514,"old-code-health":9.387218218812514},{"file":"e2e/pages/FileRow.ts","loc":133,"old-loc":125,"code-health":10.0,"old-code-health":10.0},{"file":"e2e/pages/MoveToPage.ts","loc":202,"old-loc":166,"code-health":9.387218218812514,"old-code-health":9.387218218812514},{"file":"e2e/helpers/stack.ts","loc":206,"old-loc":192,"code-health":9.6882083290695,"old-code-health":9.6882083290695},{"file":"e2e/pages/DrivePage.ts","loc":105,"old-loc":95,"code-health":10.0,"old-code-health":10.0},{"file":"src/components/FilePicker/FilePickerHeaderTabs.jsx","loc":86,"old-loc":86,"code-health":10.0,"old-code-health":10.0},{"file":"src/modules/move/MoveModal.spec.jsx","loc":857,"old-loc":794,"code-health":10.0,"old-code-health":10.0},{"file":"src/modules/paste/index.spec.js","loc":414,"old-loc":353,"code-health":10.0,"old-code-health":10.0},{"file":"e2e/helpers/fixtures.ts","loc":108,"old-loc":99,"code-health":10.0,"old-code-health":10.0},{"file":"e2e/pages/PublicLinkPage.ts","loc":39,"old-loc":21,"code-health":10.0,"old-code-health":10.0},{"file":"e2e/pages/ShareByLinkPage.ts","loc":65,"old-loc":50,"code-health":10.0,"old-code-health":10.0},{"file":"e2e/tests/z-link-sharing.spec.ts","loc":159,"old-loc":107,"code-health":10.0,"old-code-health":10.0},{"file":"src/modules/move/MoveModal.jsx","loc":304,"old-loc":304,"code-health":8.625613288549147,"old-code-health":8.649849356915432},{"file":"e2e/tests/move-to.spec.ts","loc":237,"old-loc":203,"code-health":10.0,"old-code-health":10.0}]},"removed-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-id":"4208","analysis-time":"2026-09-18T08:00:04Z","negative-impact-count":0,"suppressions":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"affected-hotspots":0,"commits":["b377b6b2513578fac1ff78ffe31ebbc183d469c2","05bc2f595779a5804672d81b8bb0a203caa6fbc6","b33f40d7906327a8b6ec2c6019e4c8b756aa7c9b","c965c9636eaf8721e55c0a1030c6535c8fdef204","c446467f4cb6db3228b438d65db4049873aede1e"],"is-negative-review":false,"negative-findings":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"positive-impact-count":2,"repo":"twake-drive","code-health":9.77219995095414,"version":"3.0","authors":["doubleface"],"directives":{"added":[],"removed":[]},"positive-findings":{"number-of-types":2,"number-of-files-touched":2,"findings":[{"name":"Overall Code Complexity","file":"src/modules/move/helpers.js","change-type":"improved","change-level":"improvement","is-hotspot?":false,"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).","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","what-changed":"The mean cyclomatic complexity decreases from 4.37 to 4.23, threshold = 4"},{"name":"String Heavy Function Arguments","file":"e2e/helpers/stack.ts","change-type":"improved","change-level":"improvement","is-hotspot?":false,"why-it-occurs":"String is a generic type that fail to capture the constraints of the domain object it represents. In this module, 67 % of all function arguments are string types.","how-to-fix":"Heavy string usage indicates a missing domain language. Introduce data types that encapsulate the semantics. For example, a user_name is better represented as a constrained User type rather than a pure string, which could be anything.","what-changed":"The ratio of strings in function arguments decreases from 71.43% to 66.67%, threshold = 39.0%"}]},"notices":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"external-review-provider":"GitHub"},"analysistime":"2026-09-18T08:00:03.000Z","project-name":"twake-drive","repository":"https://github.com/linagora/twake-drive.git"}}