{"results":{"result":{"added-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-url":"https://github.com/SasView/sasdata/pull/152","old-code-health":9.564300027068034,"modified-files":{"code-health":9.611531032027841,"old-code-health":9.564300027068034,"files":[{"file":"sasdata/data.py","loc":101,"old-loc":52,"code-health":9.6882083290695,"old-code-health":9.6882083290695},{"file":"test/sasdataloader/utest_sasdataload.py","loc":86,"old-loc":65,"code-health":10.0,"old-code-health":10.0},{"file":"sasdata/metadata.py","loc":470,"old-loc":205,"code-health":9.6882083290695,"old-code-health":9.6882083290695},{"file":"sasdata/quantities/unit_parser.py","loc":163,"old-loc":153,"code-health":8.997354731618337,"old-code-health":8.997354731618337},{"file":"test/utest_unit_parser.py","loc":59,"old-loc":61,"code-health":10.0,"old-code-health":10.0}]},"removed-files":{"code-health":0.0,"old-code-health":0.0,"files":[]},"external-review-id":"152","analysis-time":"2025-08-12T11:14:53Z","negative-impact-count":0,"suppressions":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"affected-hotspots":0,"commits":["43cfd12bb84344609018056ee92cde10563736e4","39e11a31a33ef1e314dc7f6f50778b53d0605824","f9419a0fd5d00827e97b082a024b79bf407114db","9b4a5615315f23a045de8a5ef556c72a723d696d","4acda72e0c7c45300afe75c40e6f96e0f61f979f","e66117da08233d6c5a0296236ac08ba677872f92","948759b78dcb1f3f35f57cf53b7e65252b20a615","0037490587027a99e039a939b217e49c5631539a","df12d245ae5039e05045b6fd05cfb4aacd73c20d","775170e9d7c55d4fd69a6d01f909c266b7f95ef7","6ffbaa8142b4a0c3ada6896a9fa179ed6b428ec6","bf15104e6cf7b909334944eaa800925afe73b788","c37facd0c923f3a67a1303aa7c6ff49f9f7b1e3b","431e6e8e9b60ab18fc774a15f83c0d0d20928cce","ad8262584204f84507d945d40a31e9ec3c77f519","0a6b21304e00f476574c443437c8b7f0b65fad99","e19f2149d220cd928fbb2ae4904cd59df245fcf6","76ace63f8f240019c335af9532ede43c9f0aeb95","a45f18ec706217729ee962f71636a02ac3e69ae9","2d9364bbd2b2f9f9c8813898034732b9ce96c60b"],"is-negative-review":false,"negative-findings":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"positive-impact-count":1,"repo":"sasdata","code-health":9.611531032027841,"version":"3.0","authors":["Adam Washington"],"directives":{"added":[],"removed":[]},"positive-findings":{"number-of-types":1,"number-of-files-touched":1,"findings":[{"name":"Overall Code Complexity","file":"sasdata/quantities/unit_parser.py","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.82 to 4.67, threshold = 4"}]},"notices":{"number-of-types":0,"number-of-files-touched":0,"findings":[]},"external-review-provider":"GitHub"},"analysistime":"2025-08-12T11:14:52.000Z","project-name":"sasdata","repository":"https://github.com/SasView/sasdata.git"}}