{"results":{"result":{"added-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-url":"https://github.com/umbraco/Umbraco-CMS/pull/21200","old-code-health":7.71169833383966,"modified-files":{"code-health":7.692785033236609,"old-code-health":7.71169833383966,"files":[{"file":"src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs","loc":97,"old-loc":96,"code-health":10.0,"old-code-health":10.0},{"file":"src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs","loc":450,"old-loc":435,"code-health":7.788037646779413,"old-code-health":7.788037646779413},{"file":"tests/Umbraco.Tests.Integration/Umbraco.Infrastructure/Persistence/Repositories/DictionaryRepositoryTest.cs","loc":455,"old-loc":418,"code-health":7.106711345609554,"old-code-health":7.106711345609554}]},"removed-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-id":"21200","analysis-time":"2026-01-21T08:15:05Z","negative-impact-count":0,"suppressions":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"affected-hotspots":0,"commits":["02750c0a531078e44919175fe3c9e50171f9cf40","b0a0d0945e7251fc69b44dfd13b08fc39646de30","e455b20eecf1021ec3eb9a0aa5251bf156b82795","087b4bc39f9e69bb74c923fd88cb7267a56c1f82","5992a8e6d7d099e5bfa808849e784447d7404d2b","a06168196436e295c7600c3c59b363f37fd884fe","6aef0b92fe1d9a31427db5224f4f5e3ab317c530","541d45cbeeffdcdfd00b3d1294cc1dd3bf37325d","007e694bc2ad9d88eb03730bafe3c394d5089296","2ba95014e0253590f3d00249f6fa3d34c4603159"],"is-negative-review":false,"negative-findings":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"positive-impact-count":1,"repo":"Umbraco-CMS","code-health":7.692785033236609,"version":"3.0","authors":["KNOWIT\\niksko","Andy Butland"],"directives":{"added":[],"removed":[]},"positive-findings":{"number-of-types":1,"number-of-files-touched":1,"findings":[{"name":"Primitive Obsession","file":"src/Umbraco.Infrastructure/Persistence/Repositories/Implement/DictionaryRepository.cs","change-type":"improved","change-level":"improvement","is-hotspot?":false,"why-it-occurs":"Code that uses a high degree of built-in, primitives such as integers, strings, floats, lacks a domain language that encapsulates the validation and semantics of function arguments. Primitive Obsession has several consequences: 1) In a statically typed language, the compiler will detect less erroneous assignments. 2) Security impact since the possible value range of a variable/argument isn't retricted.\n\nIn this module, 40 % of all functions have primitive types as arguments.","how-to-fix":"Primitive Obsession indicates a missing domain language. Introduce data types that encapsulate the details and constraints of your domain. For example, instead of `int userId`, consider `User clicked`.","what-changed":"The ratio of primitive types in function arguments decreases from 40.00% to 39.62%, threshold = 30.0%"}]},"notices":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"external-review-provider":"GitHub"},"analysistime":"2026-01-21T08:15:04.000Z","project-name":"Umbraco-CMS","repository":"https://github.com/umbraco/Umbraco-CMS.git"}}