Assessment: critical peak
Most callables are easy to reason about, but the maximum CC of 46 in cmd_start makes change risk uneven. Review high-complexity routines before adding more paths.
diff --git a/complexity.html b/complexity.html index d68ae25..918fd3a 100644 --- a/complexity.html +++ b/complexity.html @@ -44,23 +44,23 @@
The codebase is mostly made of small, low-complexity functions, but risk is concentrated in a few execution paths. src/sbx/cli.py contains 37.9% of production LOC; the peak is cmd_start at CC 46.
The codebase is mostly made of small, low-complexity functions, but risk is concentrated in a few execution paths. src/sbx/cli.py contains 37.6% of production LOC; the peak is cmd_start at CC 56.
physical source lines
3,313 nonblank/non-comment
functions + methods
2 classes
mean cyclomatic complexity
729 aggregate decisions
high-or-higher callables
6.9% of callables
physical source lines
3,456 nonblank/non-comment
functions + methods
2 classes
mean cyclomatic complexity
767 aggregate decisions
high-or-higher callables
8.4% of callables
Most callables are easy to reason about, but the maximum CC of 46 in cmd_start makes change risk uneven. Review high-complexity routines before adding more paths.
166 test functions across 9 test modules and 4,174 test LOC (1.11× production LOC). This is a useful safety net, but runtime coverage was not re-measured for this static report, so no coverage percentage is claimed.
| Module | LOC | SLOC | Functions | Classes | Total CC | Mean CC | Max CC | Max rank |
|---|---|---|---|---|---|---|---|---|
src/sbx/cli.py | 1,430 | 1,269 | 51 | 0 | 284 | 5.6 | 46 | F · critical |
src/sbx/image/build_debian.py | 445 | 393 | 11 | 1 | 44 | 3.7 | 21 | D · very high |
src/sbx/network.py | 338 | 293 | 19 | 0 | 84 | 4.4 | 14 | C · high |
src/sbx/completion.py | 409 | 386 | 7 | 0 | 24 | 3.4 | 13 | C · high |
src/sbx/guest_setup.py | 379 | 336 | 15 | 0 | 86 | 5.7 | 13 | C · high |
src/sbx/doctor.py | 102 | 90 | 5 | 0 | 37 | 7.4 | 12 | C · high |
src/sbx/lifecycle_warnings.py | 181 | 150 | 13 | 0 | 47 | 3.6 | 10 | B · moderate |
src/sbx/image/ls.py | 85 | 69 | 8 | 0 | 33 | 4.1 | 8 | B · moderate |
src/sbx/smolvm_preset.py | 80 | 70 | 2 | 0 | 8 | 4.0 | 7 | B · moderate |
src/sbx/session_state.py | 68 | 55 | 6 | 0 | 22 | 3.7 | 7 | B · moderate |
src/sbx/vm_metadata.py | 36 | 27 | 4 | 0 | 11 | 2.8 | 6 | B · moderate |
src/sbx/runtime.py | 166 | 132 | 15 | 1 | 42 | 2.8 | 5 | A · low |
src/sbx/vm_state.py | 40 | 32 | 3 | 0 | 7 | 2.3 | 3 | A · low |
src/sbx/constants.py | 10 | 9 | 0 | 0 | 0 | 0.0 | 0 | — |
src/sbx/__init__.py | 3 | 2 | 0 | 0 | 0 | 0.0 | 0 | — |
src/sbx/image/__init__.py | 0 | 0 | 0 | 0 | 0 | 0.0 | 0 | — |
src/sbx/image/resources/__init__.py | 0 | 0 | 0 | 0 | 0 | 0.0 | 0 | — |
Every callable at CC ≥ 11 is listed. These are the routines most likely to require extra review and focused tests when changed.
| Callable | Source lines | LOC | CC | Rank | Max nesting | Parameters | Returns |
|---|---|---|---|---|---|---|---|
cmd_startfunction | src/sbx/cli.py:698–926 | 229 | 46 | F · critical | 4 | 1 | 14 |
cmd_shellfunction | src/sbx/cli.py:939–1033 | 95 | 27 | D · very high | 3 | 1 | 9 |
_start_local_imagefunction | src/sbx/cli.py:550–674 | 125 | 23 | D · very high | 2 | 17 | 2 |
main_from_argsfunction | src/sbx/image/build_debian.py:312–435 | 124 | 21 | D · very high | 4 | 1 | 5 |
expose_auth_portfunction | src/sbx/network.py:138–216 | 79 | 14 | C · high | 3 | 4 | 8 |
_insert_missing_sbx_valuesfunction | src/sbx/cli.py:469–493 | 25 | 14 | C · high | 2 | 2 | 3 |
fish_completionfunction | src/sbx/completion.py:353–409 | 57 | 13 | C · high | 2 | 0 | 1 |
host_git_configfunction | src/sbx/guest_setup.py:81–117 | 37 | 13 | C · high | 3 | 1 | 3 |
doctor_metadatafunction | src/sbx/doctor.py:9–40 | 32 | 12 | C · high | 3 | 1 | 4 |
_maybe_write_project_configfunction | src/sbx/cli.py:514–547 | 34 | 11 | C · high | 2 | 5 | 4 |
sync_forwarded_envfunction | src/sbx/guest_setup.py:173–201 | 29 | 11 | C · high | 2 | 4 | 2 |
Long routines are shown separately because generated strings and parser declarations can be large while having few branches.
| Callable | Source lines | LOC | CC | Rank |
|---|---|---|---|---|
cmd_start | src/sbx/cli.py:698–926 | 229 | 46 | F · critical |
build_parser | src/sbx/cli.py:1231–1401 | 171 | 3 | A · low |
bash_completion | src/sbx/completion.py:108–233 | 126 | 1 | A · low |
_start_local_image | src/sbx/cli.py:550–674 | 125 | 23 | D · very high |
main_from_args | src/sbx/image/build_debian.py:312–435 | 124 | 21 | D · very high |
_add_start_options | src/sbx/cli.py:1114–1228 | 115 | 1 | A · low |
zsh_completion | src/sbx/completion.py:236–344 | 109 | 1 | A · low |
cmd_shell | src/sbx/cli.py:939–1033 | 95 | 27 | D · very high |
expose_auth_port | src/sbx/network.py:138–216 | 79 | 14 | C · high |
| Class | Source lines | LOC | Methods | Method CC total | Max method CC | Rank |
|---|---|---|---|---|---|---|
SbxDockerImageBuilder | src/sbx/image/build_debian.py:85–95 | 11 | 1 | 1 | 1 | A · low |
ConfigError | src/sbx/runtime.py:16–17 | 2 | 0 | 1 | 0 | A · low |
cmd_start — CC 46, 229 LOC at src/sbx/cli.py:698. Reduce branches along its existing execution paths before introducing new abstractions.cmd_shell — CC 27, 95 LOC at src/sbx/cli.py:939. Reduce branches along its existing execution paths before introducing new abstractions._start_local_image — CC 23, 125 LOC at src/sbx/cli.py:550. Reduce branches along its existing execution paths before introducing new abstractions.main_from_args — CC 21, 124 LOC at src/sbx/image/build_debian.py:312. Reduce branches along its existing execution paths before introducing new abstractions.build_parser: 171 LOC but CC 3; size alone does not justify refactoring.bash_completion: 126 LOC but CC 1; size alone does not justify refactoring._add_start_options: 115 LOC but CC 1; size alone does not justify refactoring.zsh_completion: 109 LOC but CC 1; size alone does not justify refactoring.| Callable | Source lines | LOC | CC | Rank | Max nesting | Parameters | Returns |
|---|---|---|---|---|---|---|---|
_deep_mergefunction | src/sbx/cli.py:43–50 | 8 | 4 | A · low | 2 | 2 | 1 |
_read_tomlfunction | src/sbx/cli.py:53–63 | 11 | 4 | A · low | 2 | 1 | 1 |
load_configfunction | src/sbx/cli.py:66–88 | 23 | 5 | A · low | 2 | 1 | 1 |
_sectionfunction | src/sbx/cli.py:91–97 | 7 | 3 | A · low | 1 | 2 | 2 |
_cfgfunction | src/sbx/cli.py:100–101 | 2 | 1 | A · low | 0 | 4 | 1 |
_sbx_configfunction | src/sbx/cli.py:104–105 | 2 | 1 | A · low | 0 | 1 | 1 |
_cfg_agentfunction | src/sbx/cli.py:108–112 | 5 | 2 | A · low | 1 | 1 | 1 |
_list_valuefunction | src/sbx/cli.py:115–122 | 8 | 6 | B · moderate | 1 | 2 | 3 |
_resolve_project_pathfunction | src/sbx/cli.py:125–129 | 5 | 2 | A · low | 1 | 1 | 1 |
_project_identityfunction | src/sbx/cli.py:132–151 | 20 | 4 | A · low | 3 | 2 | 1 |
_same_path_mountfunction | src/sbx/cli.py:154–156 | 3 | 1 | A · low | 0 | 1 | 1 |
_workspace_mounts_from_specsfunction | src/sbx/cli.py:159–180 | 22 | 7 | B · moderate | 2 | 2 | 1 |
_warn_running_mount_driftfunction | src/sbx/cli.py:183–201 | 19 | 5 | A · low | 1 | 3 | 2 |
_sync_existing_vm_start_configfunction | src/sbx/cli.py:204–239 | 36 | 9 | B · moderate | 2 | 5 | 2 |
_project_guest_cwdfunction | src/sbx/cli.py:242–245 | 4 | 2 | A · low | 1 | 1 | 2 |
_sync_forwarded_env_or_errorfunction | src/sbx/cli.py:248–254 | 7 | 2 | A · low | 1 | 2 | 2 |
_validate_cpusfunction | src/sbx/cli.py:257–261 | 5 | 2 | A · low | 1 | 1 | 1 |
_validate_boot_timeoutfunction | src/sbx/cli.py:264–268 | 5 | 2 | A · low | 1 | 1 | 1 |
_smolvm_info_vmfunction | src/sbx/cli.py:271–280 | 10 | 5 | A · low | 1 | 1 | 3 |
_get_existing_vm_statusfunction | src/sbx/cli.py:283–288 | 6 | 3 | A · low | 1 | 1 | 2 |
_print_tablefunction | src/sbx/cli.py:291–301 | 11 | 7 | B · moderate | 1 | 2 | 0 |
cmd_listfunction | src/sbx/cli.py:304–324 | 21 | 7 | B · moderate | 1 | 1 | 1 |
_print_boot_timeout_running_hintfunction | src/sbx/cli.py:327–342 | 16 | 1 | A · low | 0 | 2 | 0 |
_maybe_print_boot_timeout_running_hintfunction | src/sbx/cli.py:345–351 | 7 | 3 | A · low | 1 | 2 | 3 |
_start_existing_vm_if_neededfunction | src/sbx/cli.py:354–369 | 16 | 4 | A · low | 1 | 3 | 3 |
_stop_vm_if_last_sessionfunction | src/sbx/cli.py:372–380 | 9 | 3 | A · low | 1 | 2 | 2 |
_post_start_actionsfunction | src/sbx/cli.py:383–415 | 33 | 5 | A · low | 2 | 11 | 3 |
_arg_or_configfunction | src/sbx/cli.py:418–429 | 12 | 3 | A · low | 1 | 6 | 2 |
_manifest_sbxfunction | src/sbx/cli.py:432–436 | 5 | 2 | A · low | 1 | 1 | 1 |
_project_config_pathfunction | src/sbx/cli.py:439–440 | 2 | 1 | A · low | 0 | 0 | 1 |
_toml_valuefunction | src/sbx/cli.py:443–451 | 9 | 6 | B · moderate | 1 | 1 | 4 |
_project_config_valuesfunction | src/sbx/cli.py:454–466 | 13 | 5 | A · low | 2 | 4 | 1 |
_insert_missing_sbx_valuesfunction | src/sbx/cli.py:469–493 | 25 | 14 | C · high | 2 | 2 | 3 |
_write_project_config_valuesfunction | src/sbx/cli.py:496–511 | 16 | 4 | A · low | 2 | 2 | 2 |
_maybe_write_project_configfunction | src/sbx/cli.py:514–547 | 34 | 11 | C · high | 2 | 5 | 4 |
_start_local_imagefunction | src/sbx/cli.py:550–674 | 125 | 23 | D · very high | 2 | 17 | 2 |
cmd_doctorfunction | src/sbx/cli.py:677–682 | 6 | 2 | A · low | 0 | 1 | 1 |
cmd_completionfunction | src/sbx/cli.py:685–687 | 3 | 1 | A · low | 0 | 1 | 1 |
cmd_image_build_debianfunction | src/sbx/cli.py:690–691 | 2 | 1 | A · low | 0 | 1 | 1 |
cmd_image_lsfunction | src/sbx/cli.py:694–695 | 2 | 1 | A · low | 0 | 1 | 1 |
cmd_startfunction | src/sbx/cli.py:698–926 | 229 | 46 | F · critical | 4 | 1 | 14 |
_confirm_destructive_actionfunction | src/sbx/cli.py:929–936 | 8 | 3 | A · low | 1 | 2 | 3 |
cmd_shellfunction | src/sbx/cli.py:939–1033 | 95 | 27 | D · very high | 3 | 1 | 9 |
cmd_stopfunction | src/sbx/cli.py:1036–1041 | 6 | 2 | A · low | 1 | 1 | 2 |
cmd_removefunction | src/sbx/cli.py:1044–1051 | 8 | 3 | A · low | 1 | 1 | 3 |
_delete_vmfunction | src/sbx/cli.py:1054–1083 | 30 | 10 | B · moderate | 3 | 2 | 4 |
cmd_createfunction | src/sbx/cli.py:1086–1090 | 5 | 2 | A · low | 1 | 1 | 1 |
cmd_recreatefunction | src/sbx/cli.py:1093–1111 | 19 | 7 | B · moderate | 1 | 1 | 4 |
_add_start_optionsfunction | src/sbx/cli.py:1114–1228 | 115 | 1 | A · low | 0 | 1 | 0 |
build_parserfunction | src/sbx/cli.py:1231–1401 | 171 | 3 | A · low | 1 | 0 | 1 |
mainfunction | src/sbx/cli.py:1404–1426 | 23 | 6 | B · moderate | 2 | 1 | 4 |
_wordsfunction | src/sbx/completion.py:90–91 | 2 | 1 | A · low | 0 | 1 | 1 |
_zsh_wordsfunction | src/sbx/completion.py:94–95 | 2 | 2 | A · low | 0 | 1 | 1 |
completion_scriptfunction | src/sbx/completion.py:98–105 | 8 | 4 | A · low | 1 | 1 | 3 |
bash_completionfunction | src/sbx/completion.py:108–233 | 126 | 1 | A · low | 0 | 0 | 1 |
zsh_completionfunction | src/sbx/completion.py:236–344 | 109 | 1 | A · low | 0 | 0 | 1 |
_fish_flagfunction | src/sbx/completion.py:347–350 | 4 | 2 | A · low | 1 | 1 | 2 |
fish_completionfunction | src/sbx/completion.py:353–409 | 57 | 13 | C · high | 2 | 0 | 1 |
doctor_metadatafunction | src/sbx/doctor.py:9–40 | 32 | 12 | C · high | 3 | 1 | 4 |
doctor_sessionsfunction | src/sbx/doctor.py:43–61 | 19 | 10 | B · moderate | 3 | 1 | 0 |
doctor_tunnelsfunction | src/sbx/doctor.py:64–83 | 20 | 10 | B · moderate | 4 | 1 | 0 |
doctor_error_vmsfunction | src/sbx/doctor.py:86–94 | 9 | 4 | A · low | 2 | 1 | 0 |
run_doctor_checksfunction | src/sbx/doctor.py:97–102 | 6 | 1 | A · low | 0 | 1 | 1 |
validate_vm_namefunction | src/sbx/guest_setup.py:29–35 | 7 | 2 | A · low | 1 | 1 | 1 |
validate_run_userfunction | src/sbx/guest_setup.py:38–41 | 4 | 2 | A · low | 1 | 1 | 1 |
validate_env_namesfunction | src/sbx/guest_setup.py:44–48 | 5 | 4 | A · low | 1 | 1 | 1 |
sanitize_forwarded_envfunction | src/sbx/guest_setup.py:51–56 | 6 | 3 | A · low | 2 | 2 | 1 |
credential_free_envfunction | src/sbx/guest_setup.py:59–78 | 20 | 1 | A · low | 0 | 2 | 1 |
host_git_configfunction | src/sbx/guest_setup.py:81–117 | 37 | 13 | C · high | 3 | 1 | 3 |
parse_managed_env_scriptfunction | src/sbx/guest_setup.py:120–128 | 9 | 5 | A · low | 3 | 1 | 1 |
sync_forwarded_env_direct_sshfunction | src/sbx/guest_setup.py:131–170 | 40 | 10 | B · moderate | 1 | 5 | 0 |
sync_forwarded_envfunction | src/sbx/guest_setup.py:173–201 | 29 | 11 | C · high | 2 | 4 | 2 |
host_timezonefunction | src/sbx/guest_setup.py:204–215 | 12 | 4 | A · low | 1 | 0 | 3 |
sync_guest_clockfunction | src/sbx/guest_setup.py:218–244 | 27 | 6 | B · moderate | 1 | 3 | 0 |
set_hostnamefunction | src/sbx/guest_setup.py:247–275 | 29 | 6 | B · moderate | 1 | 3 | 0 |
install_git_configfunction | src/sbx/guest_setup.py:278–313 | 36 | 8 | B · moderate | 1 | 5 | 1 |
prepare_run_userfunction | src/sbx/guest_setup.py:316–352 | 37 | 6 | B · moderate | 1 | 4 | 0 |
attachfunction | src/sbx/guest_setup.py:355–379 | 25 | 5 | A · low | 1 | 6 | 1 |
_packaged_resourcesfunction | src/sbx/image/build_debian.py:46–48 | 3 | 1 | A · low | 1 | 0 | 0 |
_default_public_keyfunction | src/sbx/image/build_debian.py:51–57 | 7 | 3 | A · low | 2 | 0 | 2 |
_compose_containerfilesfunction | src/sbx/image/build_debian.py:60–82 | 23 | 5 | A · low | 2 | 4 | 0 |
SbxDockerImageBuilder._default_init_scriptmethod | src/sbx/image/build_debian.py:86–95 | 10 | 1 | A · low | 0 | 1 | 1 |
_downloadfunction | src/sbx/image/build_debian.py:98–100 | 3 | 1 | A · low | 1 | 2 | 0 |
_build_kernel_builder_imagefunction | src/sbx/image/build_debian.py:103–120 | 18 | 2 | A · low | 1 | 2 | 1 |
_docker_run_kernel_builderfunction | src/sbx/image/build_debian.py:123–139 | 17 | 1 | A · low | 0 | 4 | 0 |
_build_docker_kernelfunction | src/sbx/image/build_debian.py:142–199 | 58 | 4 | A · low | 2 | 3 | 2 |
_build_containerfile_base_imagefunction | src/sbx/image/build_debian.py:202–239 | 38 | 3 | A · low | 1 | 3 | 1 |
add_argumentsfunction | src/sbx/image/build_debian.py:242–309 | 68 | 1 | A · low | 0 | 1 | 0 |
main_from_argsfunction | src/sbx/image/build_debian.py:312–435 | 124 | 21 | D · very high | 4 | 1 | 5 |
mainfunction | src/sbx/image/build_debian.py:438–441 | 4 | 1 | A · low | 0 | 1 | 1 |
_image_cache_dirfunction | src/sbx/image/ls.py:7–8 | 2 | 1 | A · low | 0 | 0 | 1 |
_manifestfunction | src/sbx/image/ls.py:11–20 | 10 | 5 | A · low | 1 | 1 | 4 |
_featuresfunction | src/sbx/image/ls.py:23–26 | 4 | 4 | A · low | 1 | 1 | 2 |
_image_rowfunction | src/sbx/image/ls.py:29–43 | 15 | 5 | A · low | 1 | 1 | 2 |
_imagesfunction | src/sbx/image/ls.py:46–51 | 6 | 7 | B · moderate | 1 | 1 | 2 |
_print_tablefunction | src/sbx/image/ls.py:54–72 | 19 | 8 | B · moderate | 1 | 1 | 0 |
add_argumentsfunction | src/sbx/image/ls.py:75–76 | 2 | 1 | A · low | 0 | 1 | 0 |
main_from_argsfunction | src/sbx/image/ls.py:79–85 | 7 | 2 | A · low | 1 | 1 | 1 |
cfgfunction | src/sbx/lifecycle_warnings.py:14–18 | 5 | 2 | A · low | 1 | 4 | 2 |
int_or_nonefunction | src/sbx/lifecycle_warnings.py:21–27 | 7 | 3 | A · low | 1 | 1 | 3 |
ceil_mibfunction | src/sbx/lifecycle_warnings.py:30–31 | 2 | 1 | A · low | 0 | 1 | 1 |
qcow2_virtual_size_mibfunction | src/sbx/lifecycle_warnings.py:34–51 | 18 | 4 | A · low | 1 | 1 | 4 |
rootfs_size_mibfunction | src/sbx/lifecycle_warnings.py:54–60 | 7 | 3 | A · low | 1 | 1 | 3 |
path_from_configfunction | src/sbx/lifecycle_warnings.py:63–66 | 4 | 2 | A · low | 1 | 1 | 2 |
local_image_manifestfunction | src/sbx/lifecycle_warnings.py:69–81 | 13 | 5 | A · low | 1 | 1 | 1 |
manifest_pathfunction | src/sbx/lifecycle_warnings.py:84–91 | 8 | 3 | A · low | 1 | 3 | 1 |
local_image_rootfs_size_mibfunction | src/sbx/lifecycle_warnings.py:94–103 | 10 | 3 | A · low | 2 | 1 | 3 |
local_image_disk_size_errorfunction | src/sbx/lifecycle_warnings.py:106–114 | 9 | 1 | A · low | 0 | 2 | 1 |
local_image_config_warningsfunction | src/sbx/lifecycle_warnings.py:117–124 | 8 | 4 | A · low | 1 | 1 | 3 |
existing_vm_config_mismatchesfunction | src/sbx/lifecycle_warnings.py:127–151 | 25 | 6 | B · moderate | 2 | 3 | 2 |
doctor_config_statefunction | src/sbx/lifecycle_warnings.py:154–181 | 28 | 10 | B · moderate | 3 | 2 | 2 |
_validate_portfunction | src/sbx/network.py:28–35 | 8 | 3 | A · low | 1 | 2 | 1 |
parse_port_forwardfunction | src/sbx/network.py:38–52 | 15 | 6 | B · moderate | 2 | 1 | 2 |
port_forwards_from_specsfunction | src/sbx/network.py:55–59 | 5 | 3 | A · low | 0 | 1 | 1 |
_load_tunnelsfunction | src/sbx/network.py:62–63 | 2 | 1 | A · low | 0 | 0 | 1 |
_save_tunnelsfunction | src/sbx/network.py:66–67 | 2 | 1 | A · low | 0 | 1 | 0 |
_tracked_auth_tunnelfunction | src/sbx/network.py:70–77 | 8 | 4 | A · low | 1 | 1 | 3 |
_tracked_auth_tunnel_for_host_portfunction | src/sbx/network.py:80–90 | 11 | 7 | B · moderate | 2 | 1 | 2 |
_record_auth_tunnelfunction | src/sbx/network.py:93–100 | 8 | 1 | A · low | 0 | 4 | 0 |
_remove_auth_tunnel_recordfunction | src/sbx/network.py:103–110 | 8 | 3 | A · low | 2 | 1 | 0 |
_localhost_port_is_listeningfunction | src/sbx/network.py:113–116 | 4 | 1 | A · low | 1 | 1 | 1 |
_close_tracked_auth_tunnelfunction | src/sbx/network.py:119–135 | 17 | 5 | A · low | 2 | 1 | 2 |
expose_auth_portfunction | src/sbx/network.py:138–216 | 79 | 14 | C · high | 3 | 4 | 8 |
_foreground_port_forwardfunction | src/sbx/network.py:219–229 | 11 | 3 | A · low | 1 | 2 | 1 |
cmd_forwardfunction | src/sbx/network.py:232–251 | 20 | 7 | B · moderate | 2 | 1 | 3 |
cmd_auth_portfunction | src/sbx/network.py:254–260 | 7 | 2 | A · low | 1 | 1 | 2 |
cmd_close_auth_portfunction | src/sbx/network.py:263–273 | 11 | 3 | A · low | 1 | 1 | 3 |
_port_forward_detailfunction | src/sbx/network.py:276–288 | 13 | 5 | A · low | 1 | 1 | 3 |
_vm_port_forward_detailsfunction | src/sbx/network.py:291–297 | 7 | 6 | B · moderate | 1 | 1 | 2 |
cmd_statusfunction | src/sbx/network.py:300–338 | 39 | 9 | B · moderate | 2 | 1 | 4 |
vm_name_from_arg_or_configfunction | src/sbx/runtime.py:20–30 | 11 | 5 | A · low | 1 | 3 | 2 |
debugfunction | src/sbx/runtime.py:33–35 | 3 | 2 | A · low | 1 | 1 | 0 |
debug_commandfunction | src/sbx/runtime.py:38–47 | 10 | 5 | A · low | 0 | 2 | 0 |
runfunction | src/sbx/runtime.py:50–61 | 12 | 4 | A · low | 1 | 3 | 3 |
run_capturefunction | src/sbx/runtime.py:64–84 | 21 | 5 | A · low | 2 | 2 | 2 |
smolvm_argvfunction | src/sbx/runtime.py:87–93 | 7 | 1 | A · low | 0 | 1 | 1 |
env_booleanfunction | src/sbx/runtime.py:96–97 | 2 | 2 | A · low | 0 | 1 | 1 |
smolvm_envfunction | src/sbx/runtime.py:100–104 | 5 | 3 | A · low | 1 | 1 | 1 |
run_smolvmfunction | src/sbx/runtime.py:107–109 | 3 | 1 | A · low | 0 | 1 | 1 |
run_smolvm_capturefunction | src/sbx/runtime.py:112–116 | 5 | 1 | A · low | 0 | 1 | 1 |
missing_vm_messagefunction | src/sbx/runtime.py:119–123 | 5 | 1 | A · low | 0 | 1 | 1 |
ssh_commandfunction | src/sbx/runtime.py:126–137 | 12 | 2 | A · low | 1 | 1 | 1 |
read_json_objectfunction | src/sbx/runtime.py:140–149 | 10 | 5 | A · low | 2 | 2 | 3 |
write_json_objectfunction | src/sbx/runtime.py:152–154 | 3 | 1 | A · low | 0 | 3 | 0 |
pid_is_alivefunction | src/sbx/runtime.py:157–166 | 10 | 4 | A · low | 1 | 1 | 4 |
load_sessionsfunction | src/sbx/session_state.py:9–10 | 2 | 1 | A · low | 0 | 0 | 1 |
save_sessionsfunction | src/sbx/session_state.py:13–14 | 2 | 1 | A · low | 0 | 1 | 0 |
live_sessionsfunction | src/sbx/session_state.py:17–27 | 11 | 7 | B · moderate | 0 | 1 | 1 |
active_sessionsfunction | src/sbx/session_state.py:30–41 | 12 | 5 | A · low | 2 | 1 | 1 |
register_sessionfunction | src/sbx/session_state.py:44–49 | 6 | 1 | A · low | 0 | 2 | 0 |
unregister_sessionfunction | src/sbx/session_state.py:52–68 | 17 | 7 | B · moderate | 1 | 1 | 1 |
_environmentfunction | src/sbx/smolvm_preset.py:18–26 | 9 | 1 | A · low | 1 | 1 | 0 |
create_presetfunction | src/sbx/smolvm_preset.py:29–80 | 52 | 7 | B · moderate | 3 | 12 | 1 |
load_vm_metadatafunction | src/sbx/vm_metadata.py:7–16 | 10 | 6 | B · moderate | 3 | 0 | 1 |
save_vm_metadatafunction | src/sbx/vm_metadata.py:19–20 | 2 | 1 | A · low | 0 | 1 | 0 |
record_vm_projectfunction | src/sbx/vm_metadata.py:23–26 | 4 | 1 | A · low | 0 | 2 | 0 |
validate_vm_projectfunction | src/sbx/vm_metadata.py:29–36 | 8 | 3 | A · low | 1 | 2 | 0 |
smolvm_vmsfunction | src/sbx/vm_state.py:8–13 | 6 | 2 | A · low | 0 | 1 | 1 |
existing_vm_start_configfunction | src/sbx/vm_state.py:16–25 | 10 | 3 | A · low | 1 | 1 | 3 |
mark_error_vm_stopped_for_restartfunction | src/sbx/vm_state.py:28–40 | 13 | 2 | A · low | 1 | 1 | 1 |
Cyclomatic complexity (CC) starts at 1 and adds paths for branches, loops, exception handlers, boolean branches, assertions, comprehensions, ternaries, and match cases. Ratings follow common McCabe bands:
LOC spans the AST definition from first to last source line. SLOC excludes blank and comment-only lines. Max nesting counts nested control structures. Parameters include positional and keyword-only arguments; returns count explicit return statements.
Most callables are easy to reason about, but the maximum CC of 56 in cmd_start makes change risk uneven. Review high-complexity routines before adding more paths.
186 test functions across 10 test modules and 4,490 test LOC (1.14× production LOC). This is a useful safety net, but runtime coverage was not re-measured for this static report, so no coverage percentage is claimed.
| Module | LOC | SLOC | Functions | Classes | Total CC | Mean CC | Max CC | Max rank |
|---|---|---|---|---|---|---|---|---|
src/sbx/cli.py | 1,482 | 1,314 | 53 | 0 | 320 | 6.0 | 56 | F · critical |
src/sbx/image/build_debian.py | 491 | 430 | 12 | 1 | 43 | 3.3 | 14 | C · high |
src/sbx/network.py | 344 | 299 | 19 | 0 | 83 | 4.4 | 14 | C · high |
src/sbx/completion.py | 390 | 367 | 7 | 0 | 24 | 3.4 | 13 | C · high |
src/sbx/guest_setup.py | 379 | 336 | 15 | 0 | 86 | 5.7 | 13 | C · high |
src/sbx/doctor.py | 102 | 90 | 5 | 0 | 37 | 7.4 | 12 | C · high |
src/sbx/lifecycle_warnings.py | 181 | 150 | 13 | 0 | 47 | 3.6 | 10 | B · moderate |
src/sbx/image/ls.py | 85 | 69 | 8 | 0 | 33 | 4.1 | 8 | B · moderate |
src/sbx/smolvm_preset.py | 80 | 70 | 2 | 0 | 8 | 4.0 | 7 | B · moderate |
src/sbx/session_state.py | 68 | 55 | 6 | 0 | 22 | 3.7 | 7 | B · moderate |
src/sbx/vm_metadata.py | 36 | 27 | 4 | 0 | 11 | 2.8 | 6 | B · moderate |
src/sbx/runtime.py | 166 | 132 | 15 | 1 | 42 | 2.8 | 5 | A · low |
src/sbx/vm_state.py | 40 | 32 | 3 | 0 | 7 | 2.3 | 3 | A · low |
src/sbx/image/kernel_inputs.py | 84 | 74 | 3 | 0 | 4 | 1.3 | 2 | A · low |
src/sbx/constants.py | 10 | 9 | 0 | 0 | 0 | 0.0 | 0 | — |
src/sbx/__init__.py | 3 | 2 | 0 | 0 | 0 | 0.0 | 0 | — |
src/sbx/image/__init__.py | 0 | 0 | 0 | 0 | 0 | 0.0 | 0 | — |
src/sbx/image/resources/__init__.py | 0 | 0 | 0 | 0 | 0 | 0.0 | 0 | — |
Every callable at CC ≥ 11 is listed. These are the routines most likely to require extra review and focused tests when changed.
| Callable | Source lines | LOC | CC | Rank | Max nesting | Parameters | Returns |
|---|---|---|---|---|---|---|---|
cmd_startfunction | src/sbx/cli.py:787–1042 | 256 | 56 | F · critical | 5 | 1 | 15 |
_start_local_imagefunction | src/sbx/cli.py:628–763 | 136 | 26 | D · very high | 2 | 17 | 2 |
cmd_shellfunction | src/sbx/cli.py:1055–1147 | 93 | 26 | D · very high | 3 | 1 | 9 |
main_from_argsfunction | src/sbx/image/build_debian.py:375–481 | 107 | 14 | C · high | 4 | 1 | 3 |
expose_auth_portfunction | src/sbx/network.py:138–216 | 79 | 14 | C · high | 3 | 4 | 8 |
_start_existing_vm_if_neededfunction | src/sbx/cli.py:369–410 | 42 | 14 | C · high | 3 | 4 | 5 |
_maybe_write_project_configfunction | src/sbx/cli.py:564–603 | 40 | 14 | C · high | 3 | 5 | 4 |
_insert_missing_sbx_valuesfunction | src/sbx/cli.py:519–543 | 25 | 14 | C · high | 2 | 2 | 3 |
fish_completionfunction | src/sbx/completion.py:334–390 | 57 | 13 | C · high | 2 | 0 | 1 |
host_git_configfunction | src/sbx/guest_setup.py:81–117 | 37 | 13 | C · high | 3 | 1 | 3 |
_delete_vmfunction | src/sbx/cli.py:1168–1199 | 32 | 12 | C · high | 3 | 3 | 4 |
doctor_metadatafunction | src/sbx/doctor.py:9–40 | 32 | 12 | C · high | 3 | 1 | 4 |
cmd_statusfunction | src/sbx/network.py:291–344 | 54 | 11 | C · high | 2 | 1 | 4 |
sync_forwarded_envfunction | src/sbx/guest_setup.py:173–201 | 29 | 11 | C · high | 2 | 4 | 2 |
Long routines are shown separately because generated strings and parser declarations can be large while having few branches.
| Callable | Source lines | LOC | CC | Rank |
|---|---|---|---|---|
cmd_start | src/sbx/cli.py:787–1042 | 256 | 56 | F · critical |
build_parser | src/sbx/cli.py:1298–1453 | 156 | 4 | A · low |
_start_local_image | src/sbx/cli.py:628–763 | 136 | 26 | D · very high |
bash_completion | src/sbx/completion.py:86–212 | 127 | 1 | A · low |
zsh_completion | src/sbx/completion.py:215–325 | 111 | 1 | A · low |
main_from_args | src/sbx/image/build_debian.py:375–481 | 107 | 14 | C · high |
cmd_shell | src/sbx/cli.py:1055–1147 | 93 | 26 | D · very high |
expose_auth_port | src/sbx/network.py:138–216 | 79 | 14 | C · high |
| Class | Source lines | LOC | Methods | Method CC total | Max method CC | Rank |
|---|---|---|---|---|---|---|
SbxImageBuilder | src/sbx/image/build_debian.py:67–77 | 11 | 1 | 1 | 1 | A · low |
ConfigError | src/sbx/runtime.py:16–17 | 2 | 0 | 1 | 0 | A · low |
cmd_start — CC 56, 256 LOC at src/sbx/cli.py:787. Reduce branches along its existing execution paths before introducing new abstractions._start_local_image — CC 26, 136 LOC at src/sbx/cli.py:628. Reduce branches along its existing execution paths before introducing new abstractions.cmd_shell — CC 26, 93 LOC at src/sbx/cli.py:1055. Reduce branches along its existing execution paths before introducing new abstractions.main_from_args — CC 14, 107 LOC at src/sbx/image/build_debian.py:375. Reduce branches along its existing execution paths before introducing new abstractions.build_parser: 156 LOC but CC 4; size alone does not justify refactoring.bash_completion: 127 LOC but CC 1; size alone does not justify refactoring.zsh_completion: 111 LOC but CC 1; size alone does not justify refactoring.| Callable | Source lines | LOC | CC | Rank | Max nesting | Parameters | Returns |
|---|---|---|---|---|---|---|---|
_deep_mergefunction | src/sbx/cli.py:43–50 | 8 | 4 | A · low | 2 | 2 | 1 |
_read_tomlfunction | src/sbx/cli.py:53–63 | 11 | 4 | A · low | 2 | 1 | 1 |
load_configfunction | src/sbx/cli.py:66–88 | 23 | 5 | A · low | 2 | 1 | 1 |
_sectionfunction | src/sbx/cli.py:91–97 | 7 | 3 | A · low | 1 | 2 | 2 |
_cfgfunction | src/sbx/cli.py:100–101 | 2 | 1 | A · low | 0 | 4 | 1 |
_sbx_configfunction | src/sbx/cli.py:104–105 | 2 | 1 | A · low | 0 | 1 | 1 |
_cfg_agentfunction | src/sbx/cli.py:108–112 | 5 | 2 | A · low | 1 | 1 | 1 |
_list_valuefunction | src/sbx/cli.py:115–122 | 8 | 6 | B · moderate | 1 | 2 | 3 |
_resolve_project_pathfunction | src/sbx/cli.py:125–129 | 5 | 2 | A · low | 1 | 1 | 1 |
_project_identityfunction | src/sbx/cli.py:132–151 | 20 | 4 | A · low | 3 | 2 | 1 |
_same_path_mountfunction | src/sbx/cli.py:154–156 | 3 | 1 | A · low | 0 | 1 | 1 |
_workspace_mounts_from_specsfunction | src/sbx/cli.py:159–180 | 22 | 7 | B · moderate | 2 | 2 | 1 |
_warn_running_mount_driftfunction | src/sbx/cli.py:183–201 | 19 | 5 | A · low | 1 | 3 | 2 |
_sync_existing_vm_start_configfunction | src/sbx/cli.py:204–239 | 36 | 9 | B · moderate | 2 | 5 | 2 |
_project_guest_cwdfunction | src/sbx/cli.py:242–245 | 4 | 2 | A · low | 1 | 1 | 2 |
_sync_forwarded_env_or_errorfunction | src/sbx/cli.py:248–254 | 7 | 2 | A · low | 1 | 2 | 2 |
_validate_cpusfunction | src/sbx/cli.py:257–261 | 5 | 2 | A · low | 1 | 1 | 1 |
_validate_boot_timeoutfunction | src/sbx/cli.py:264–268 | 5 | 2 | A · low | 1 | 1 | 1 |
_smolvm_info_vmfunction | src/sbx/cli.py:271–280 | 10 | 5 | A · low | 1 | 1 | 3 |
_get_existing_vm_statusfunction | src/sbx/cli.py:283–288 | 6 | 3 | A · low | 1 | 1 | 2 |
_print_tablefunction | src/sbx/cli.py:291–301 | 11 | 7 | B · moderate | 1 | 2 | 0 |
cmd_listfunction | src/sbx/cli.py:304–339 | 36 | 10 | B · moderate | 1 | 1 | 1 |
_print_boot_timeout_running_hintfunction | src/sbx/cli.py:342–357 | 16 | 1 | A · low | 0 | 2 | 0 |
_maybe_print_boot_timeout_running_hintfunction | src/sbx/cli.py:360–366 | 7 | 3 | A · low | 1 | 2 | 3 |
_start_existing_vm_if_neededfunction | src/sbx/cli.py:369–410 | 42 | 14 | C · high | 3 | 4 | 5 |
_stop_vm_if_last_sessionfunction | src/sbx/cli.py:413–421 | 9 | 3 | A · low | 1 | 2 | 2 |
_post_start_actionsfunction | src/sbx/cli.py:424–456 | 33 | 5 | A · low | 2 | 11 | 3 |
_arg_or_configfunction | src/sbx/cli.py:459–470 | 12 | 3 | A · low | 1 | 6 | 2 |
_manifest_sbxfunction | src/sbx/cli.py:473–477 | 5 | 2 | A · low | 1 | 1 | 1 |
_manifest_run_userfunction | src/sbx/cli.py:480–486 | 7 | 3 | A · low | 1 | 1 | 2 |
_project_config_pathfunction | src/sbx/cli.py:489–490 | 2 | 1 | A · low | 0 | 0 | 1 |
_toml_valuefunction | src/sbx/cli.py:493–501 | 9 | 6 | B · moderate | 1 | 1 | 4 |
_project_config_valuesfunction | src/sbx/cli.py:504–516 | 13 | 5 | A · low | 2 | 4 | 1 |
_insert_missing_sbx_valuesfunction | src/sbx/cli.py:519–543 | 25 | 14 | C · high | 2 | 2 | 3 |
_write_project_config_valuesfunction | src/sbx/cli.py:546–561 | 16 | 4 | A · low | 2 | 2 | 2 |
_maybe_write_project_configfunction | src/sbx/cli.py:564–603 | 40 | 14 | C · high | 3 | 5 | 4 |
_print_createdfunction | src/sbx/cli.py:606–625 | 20 | 4 | A · low | 2 | 5 | 0 |
_start_local_imagefunction | src/sbx/cli.py:628–763 | 136 | 26 | D · very high | 2 | 17 | 2 |
cmd_doctorfunction | src/sbx/cli.py:766–771 | 6 | 2 | A · low | 0 | 1 | 1 |
cmd_completionfunction | src/sbx/cli.py:774–776 | 3 | 1 | A · low | 0 | 1 | 1 |
cmd_image_buildfunction | src/sbx/cli.py:779–780 | 2 | 1 | A · low | 0 | 1 | 1 |
cmd_image_lsfunction | src/sbx/cli.py:783–784 | 2 | 1 | A · low | 0 | 1 | 1 |
cmd_startfunction | src/sbx/cli.py:787–1042 | 256 | 56 | F · critical | 5 | 1 | 15 |
_confirm_destructive_actionfunction | src/sbx/cli.py:1045–1052 | 8 | 3 | A · low | 1 | 2 | 3 |
cmd_shellfunction | src/sbx/cli.py:1055–1147 | 93 | 26 | D · very high | 3 | 1 | 9 |
cmd_stopfunction | src/sbx/cli.py:1150–1155 | 6 | 2 | A · low | 1 | 1 | 2 |
cmd_removefunction | src/sbx/cli.py:1158–1165 | 8 | 3 | A · low | 1 | 1 | 3 |
_delete_vmfunction | src/sbx/cli.py:1168–1199 | 32 | 12 | C · high | 3 | 3 | 4 |
cmd_createfunction | src/sbx/cli.py:1202–1205 | 4 | 1 | A · low | 0 | 1 | 1 |
cmd_recreatefunction | src/sbx/cli.py:1208–1226 | 19 | 6 | B · moderate | 1 | 1 | 4 |
_add_start_optionsfunction | src/sbx/cli.py:1229–1295 | 67 | 1 | A · low | 0 | 1 | 0 |
build_parserfunction | src/sbx/cli.py:1298–1453 | 156 | 4 | A · low | 1 | 0 | 1 |
mainfunction | src/sbx/cli.py:1456–1478 | 23 | 6 | B · moderate | 2 | 1 | 4 |
_wordsfunction | src/sbx/completion.py:68–69 | 2 | 1 | A · low | 0 | 1 | 1 |
_zsh_wordsfunction | src/sbx/completion.py:72–73 | 2 | 2 | A · low | 0 | 1 | 1 |
completion_scriptfunction | src/sbx/completion.py:76–83 | 8 | 4 | A · low | 1 | 1 | 3 |
bash_completionfunction | src/sbx/completion.py:86–212 | 127 | 1 | A · low | 0 | 0 | 1 |
zsh_completionfunction | src/sbx/completion.py:215–325 | 111 | 1 | A · low | 0 | 0 | 1 |
_fish_flagfunction | src/sbx/completion.py:328–331 | 4 | 2 | A · low | 1 | 1 | 2 |
fish_completionfunction | src/sbx/completion.py:334–390 | 57 | 13 | C · high | 2 | 0 | 1 |
doctor_metadatafunction | src/sbx/doctor.py:9–40 | 32 | 12 | C · high | 3 | 1 | 4 |
doctor_sessionsfunction | src/sbx/doctor.py:43–61 | 19 | 10 | B · moderate | 3 | 1 | 0 |
doctor_tunnelsfunction | src/sbx/doctor.py:64–83 | 20 | 10 | B · moderate | 4 | 1 | 0 |
doctor_error_vmsfunction | src/sbx/doctor.py:86–94 | 9 | 4 | A · low | 2 | 1 | 0 |
run_doctor_checksfunction | src/sbx/doctor.py:97–102 | 6 | 1 | A · low | 0 | 1 | 1 |
validate_vm_namefunction | src/sbx/guest_setup.py:29–35 | 7 | 2 | A · low | 1 | 1 | 1 |
validate_run_userfunction | src/sbx/guest_setup.py:38–41 | 4 | 2 | A · low | 1 | 1 | 1 |
validate_env_namesfunction | src/sbx/guest_setup.py:44–48 | 5 | 4 | A · low | 1 | 1 | 1 |
sanitize_forwarded_envfunction | src/sbx/guest_setup.py:51–56 | 6 | 3 | A · low | 2 | 2 | 1 |
credential_free_envfunction | src/sbx/guest_setup.py:59–78 | 20 | 1 | A · low | 0 | 2 | 1 |
host_git_configfunction | src/sbx/guest_setup.py:81–117 | 37 | 13 | C · high | 3 | 1 | 3 |
parse_managed_env_scriptfunction | src/sbx/guest_setup.py:120–128 | 9 | 5 | A · low | 3 | 1 | 1 |
sync_forwarded_env_direct_sshfunction | src/sbx/guest_setup.py:131–170 | 40 | 10 | B · moderate | 1 | 5 | 0 |
sync_forwarded_envfunction | src/sbx/guest_setup.py:173–201 | 29 | 11 | C · high | 2 | 4 | 2 |
host_timezonefunction | src/sbx/guest_setup.py:204–215 | 12 | 4 | A · low | 1 | 0 | 3 |
sync_guest_clockfunction | src/sbx/guest_setup.py:218–244 | 27 | 6 | B · moderate | 1 | 3 | 0 |
set_hostnamefunction | src/sbx/guest_setup.py:247–275 | 29 | 6 | B · moderate | 1 | 3 | 0 |
install_git_configfunction | src/sbx/guest_setup.py:278–313 | 36 | 8 | B · moderate | 1 | 5 | 1 |
prepare_run_userfunction | src/sbx/guest_setup.py:316–352 | 37 | 6 | B · moderate | 1 | 4 | 0 |
attachfunction | src/sbx/guest_setup.py:355–379 | 25 | 5 | A · low | 1 | 6 | 1 |
_packaged_resourcesfunction | src/sbx/image/build_debian.py:37–39 | 3 | 1 | A · low | 1 | 0 | 0 |
_compose_containerfilesfunction | src/sbx/image/build_debian.py:42–64 | 23 | 4 | A · low | 1 | 4 | 0 |
SbxImageBuilder._default_init_scriptmethod | src/sbx/image/build_debian.py:68–77 | 10 | 1 | A · low | 0 | 1 | 1 |
_ssh_rootfs_dockerfilefunction | src/sbx/image/build_debian.py:80–103 | 24 | 1 | A · low | 0 | 1 | 1 |
_build_rootfsfunction | src/sbx/image/build_debian.py:106–158 | 53 | 5 | A · low | 1 | 5 | 2 |
_build_kernel_builder_imagefunction | src/sbx/image/build_debian.py:161–178 | 18 | 2 | A · low | 1 | 2 | 1 |
_docker_run_kernel_builderfunction | src/sbx/image/build_debian.py:181–197 | 17 | 1 | A · low | 0 | 4 | 0 |
_raise_if_linux_digest_mismatchfunction | src/sbx/image/build_debian.py:200–214 | 15 | 3 | A · low | 1 | 1 | 1 |
_build_docker_kernelfunction | src/sbx/image/build_debian.py:217–278 | 62 | 6 | B · moderate | 3 | 3 | 2 |
_build_containerfile_base_imagefunction | src/sbx/image/build_debian.py:281–318 | 38 | 3 | A · low | 1 | 3 | 1 |
add_argumentsfunction | src/sbx/image/build_debian.py:321–372 | 52 | 1 | A · low | 0 | 1 | 0 |
main_from_argsfunction | src/sbx/image/build_debian.py:375–481 | 107 | 14 | C · high | 4 | 1 | 3 |
mainfunction | src/sbx/image/build_debian.py:484–487 | 4 | 1 | A · low | 0 | 1 | 1 |
raw_urlfunction | src/sbx/image/kernel_inputs.py:58–59 | 2 | 1 | A · low | 0 | 3 | 1 |
fetchfunction | src/sbx/image/kernel_inputs.py:62–64 | 3 | 1 | A · low | 1 | 1 | 1 |
download_verifiedfunction | src/sbx/image/kernel_inputs.py:67–84 | 18 | 2 | A · low | 1 | 3 | 0 |
_image_cache_dirfunction | src/sbx/image/ls.py:7–8 | 2 | 1 | A · low | 0 | 0 | 1 |
_manifestfunction | src/sbx/image/ls.py:11–20 | 10 | 5 | A · low | 1 | 1 | 4 |
_featuresfunction | src/sbx/image/ls.py:23–26 | 4 | 4 | A · low | 1 | 1 | 2 |
_image_rowfunction | src/sbx/image/ls.py:29–43 | 15 | 5 | A · low | 1 | 1 | 2 |
_imagesfunction | src/sbx/image/ls.py:46–51 | 6 | 7 | B · moderate | 1 | 1 | 2 |
_print_tablefunction | src/sbx/image/ls.py:54–72 | 19 | 8 | B · moderate | 1 | 1 | 0 |
add_argumentsfunction | src/sbx/image/ls.py:75–76 | 2 | 1 | A · low | 0 | 1 | 0 |
main_from_argsfunction | src/sbx/image/ls.py:79–85 | 7 | 2 | A · low | 1 | 1 | 1 |
cfgfunction | src/sbx/lifecycle_warnings.py:14–18 | 5 | 2 | A · low | 1 | 4 | 2 |
int_or_nonefunction | src/sbx/lifecycle_warnings.py:21–27 | 7 | 3 | A · low | 1 | 1 | 3 |
ceil_mibfunction | src/sbx/lifecycle_warnings.py:30–31 | 2 | 1 | A · low | 0 | 1 | 1 |
qcow2_virtual_size_mibfunction | src/sbx/lifecycle_warnings.py:34–51 | 18 | 4 | A · low | 1 | 1 | 4 |
rootfs_size_mibfunction | src/sbx/lifecycle_warnings.py:54–60 | 7 | 3 | A · low | 1 | 1 | 3 |
path_from_configfunction | src/sbx/lifecycle_warnings.py:63–66 | 4 | 2 | A · low | 1 | 1 | 2 |
local_image_manifestfunction | src/sbx/lifecycle_warnings.py:69–81 | 13 | 5 | A · low | 1 | 1 | 1 |
manifest_pathfunction | src/sbx/lifecycle_warnings.py:84–91 | 8 | 3 | A · low | 1 | 3 | 1 |
local_image_rootfs_size_mibfunction | src/sbx/lifecycle_warnings.py:94–103 | 10 | 3 | A · low | 2 | 1 | 3 |
local_image_disk_size_errorfunction | src/sbx/lifecycle_warnings.py:106–114 | 9 | 1 | A · low | 0 | 2 | 1 |
local_image_config_warningsfunction | src/sbx/lifecycle_warnings.py:117–124 | 8 | 4 | A · low | 1 | 1 | 3 |
existing_vm_config_mismatchesfunction | src/sbx/lifecycle_warnings.py:127–151 | 25 | 6 | B · moderate | 2 | 3 | 2 |
doctor_config_statefunction | src/sbx/lifecycle_warnings.py:154–181 | 28 | 10 | B · moderate | 3 | 2 | 2 |
_validate_portfunction | src/sbx/network.py:28–35 | 8 | 3 | A · low | 1 | 2 | 1 |
parse_port_forwardfunction | src/sbx/network.py:38–52 | 15 | 6 | B · moderate | 2 | 1 | 2 |
port_forwards_from_specsfunction | src/sbx/network.py:55–59 | 5 | 3 | A · low | 0 | 1 | 1 |
_load_tunnelsfunction | src/sbx/network.py:62–63 | 2 | 1 | A · low | 0 | 0 | 1 |
_save_tunnelsfunction | src/sbx/network.py:66–67 | 2 | 1 | A · low | 0 | 1 | 0 |
_tracked_auth_tunnelfunction | src/sbx/network.py:70–77 | 8 | 4 | A · low | 1 | 1 | 3 |
_tracked_auth_tunnel_for_host_portfunction | src/sbx/network.py:80–90 | 11 | 7 | B · moderate | 2 | 1 | 2 |
_record_auth_tunnelfunction | src/sbx/network.py:93–100 | 8 | 1 | A · low | 0 | 4 | 0 |
_remove_auth_tunnel_recordfunction | src/sbx/network.py:103–110 | 8 | 3 | A · low | 2 | 1 | 0 |
_localhost_port_is_listeningfunction | src/sbx/network.py:113–116 | 4 | 1 | A · low | 1 | 1 | 1 |
_close_tracked_auth_tunnelfunction | src/sbx/network.py:119–135 | 17 | 5 | A · low | 2 | 1 | 2 |
expose_auth_portfunction | src/sbx/network.py:138–216 | 79 | 14 | C · high | 3 | 4 | 8 |
_foreground_port_forwardfunction | src/sbx/network.py:219–229 | 11 | 3 | A · low | 1 | 2 | 1 |
cmd_forwardfunction | src/sbx/network.py:232–242 | 11 | 4 | A · low | 1 | 1 | 3 |
cmd_auth_portfunction | src/sbx/network.py:245–251 | 7 | 2 | A · low | 1 | 1 | 2 |
cmd_close_auth_portfunction | src/sbx/network.py:254–264 | 11 | 3 | A · low | 1 | 1 | 3 |
_port_forward_detailfunction | src/sbx/network.py:267–279 | 13 | 5 | A · low | 1 | 1 | 3 |
_vm_port_forward_detailsfunction | src/sbx/network.py:282–288 | 7 | 6 | B · moderate | 1 | 1 | 2 |
cmd_statusfunction | src/sbx/network.py:291–344 | 54 | 11 | C · high | 2 | 1 | 4 |
vm_name_from_arg_or_configfunction | src/sbx/runtime.py:20–30 | 11 | 5 | A · low | 1 | 3 | 2 |
debugfunction | src/sbx/runtime.py:33–35 | 3 | 2 | A · low | 1 | 1 | 0 |
debug_commandfunction | src/sbx/runtime.py:38–47 | 10 | 5 | A · low | 0 | 2 | 0 |
runfunction | src/sbx/runtime.py:50–61 | 12 | 4 | A · low | 1 | 3 | 3 |
run_capturefunction | src/sbx/runtime.py:64–84 | 21 | 5 | A · low | 2 | 2 | 2 |
smolvm_argvfunction | src/sbx/runtime.py:87–93 | 7 | 1 | A · low | 0 | 1 | 1 |
env_booleanfunction | src/sbx/runtime.py:96–97 | 2 | 2 | A · low | 0 | 1 | 1 |
smolvm_envfunction | src/sbx/runtime.py:100–104 | 5 | 3 | A · low | 1 | 1 | 1 |
run_smolvmfunction | src/sbx/runtime.py:107–109 | 3 | 1 | A · low | 0 | 1 | 1 |
run_smolvm_capturefunction | src/sbx/runtime.py:112–116 | 5 | 1 | A · low | 0 | 1 | 1 |
missing_vm_messagefunction | src/sbx/runtime.py:119–123 | 5 | 1 | A · low | 0 | 1 | 1 |
ssh_commandfunction | src/sbx/runtime.py:126–137 | 12 | 2 | A · low | 1 | 1 | 1 |
read_json_objectfunction | src/sbx/runtime.py:140–149 | 10 | 5 | A · low | 2 | 2 | 3 |
write_json_objectfunction | src/sbx/runtime.py:152–154 | 3 | 1 | A · low | 0 | 3 | 0 |
pid_is_alivefunction | src/sbx/runtime.py:157–166 | 10 | 4 | A · low | 1 | 1 | 4 |
load_sessionsfunction | src/sbx/session_state.py:9–10 | 2 | 1 | A · low | 0 | 0 | 1 |
save_sessionsfunction | src/sbx/session_state.py:13–14 | 2 | 1 | A · low | 0 | 1 | 0 |
live_sessionsfunction | src/sbx/session_state.py:17–27 | 11 | 7 | B · moderate | 0 | 1 | 1 |
active_sessionsfunction | src/sbx/session_state.py:30–41 | 12 | 5 | A · low | 2 | 1 | 1 |
register_sessionfunction | src/sbx/session_state.py:44–49 | 6 | 1 | A · low | 0 | 2 | 0 |
unregister_sessionfunction | src/sbx/session_state.py:52–68 | 17 | 7 | B · moderate | 1 | 1 | 1 |
_environmentfunction | src/sbx/smolvm_preset.py:18–26 | 9 | 1 | A · low | 1 | 1 | 0 |
create_presetfunction | src/sbx/smolvm_preset.py:29–80 | 52 | 7 | B · moderate | 3 | 12 | 1 |
load_vm_metadatafunction | src/sbx/vm_metadata.py:7–16 | 10 | 6 | B · moderate | 3 | 0 | 1 |
save_vm_metadatafunction | src/sbx/vm_metadata.py:19–20 | 2 | 1 | A · low | 0 | 1 | 0 |
record_vm_projectfunction | src/sbx/vm_metadata.py:23–26 | 4 | 1 | A · low | 0 | 2 | 0 |
validate_vm_projectfunction | src/sbx/vm_metadata.py:29–36 | 8 | 3 | A · low | 1 | 2 | 0 |
smolvm_vmsfunction | src/sbx/vm_state.py:8–13 | 6 | 2 | A · low | 0 | 1 | 1 |
existing_vm_start_configfunction | src/sbx/vm_state.py:16–25 | 10 | 3 | A · low | 1 | 1 | 3 |
mark_error_vm_stopped_for_restartfunction | src/sbx/vm_state.py:28–40 | 13 | 2 | A · low | 1 | 1 | 1 |
Cyclomatic complexity (CC) starts at 1 and adds paths for branches, loops, exception handlers, boolean branches, assertions, comprehensions, ternaries, and match cases. Ratings follow common McCabe bands:
LOC spans the AST definition from first to last source line. SLOC excludes blank and comment-only lines. Max nesting counts nested control structures. Parameters include positional and keyword-only arguments; returns count explicit return statements.