The world's most popular open source digital signage project.
This report summarizes scanner evidence for Screenly/Anthias, a Python project with 3,689 GitHub stars. SynthScan examined 119,973 lines of code across 444 source files, recording 2621 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 27.6 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2056 finding(s).
Are imports declared and package/API names verified? 77 finding(s).
Are wrappers, guards, and repeated structures necessary? 2094 finding(s).
Which changes need focused human review? 2621 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 2621 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 311 | def pytest_collection_modifyitems( | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 134 | def test_get_latest_tag_honours_release_tag_env( | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 176 | def test_get_board_from_url_returns_none_for_non_image(url: str) -> None: | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 185 | def test_get_asset_list_filters_to_supported_boards( | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 211 | def test_get_asset_list_excludes_non_xz( | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 224 | def test_retrieve_and_patch_json_patches_url( | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 303 | def test_every_supported_board_has_device_tags() -> None: | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 317 | def test_build_imager_json_emits_one_entry_per_supported_board( | CODE |
| LOW⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 327 | def test_build_imager_json_round_trips_through_json( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 160 | def test_get_board_from_url_extracts_board( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 235 | def test_retrieve_and_patch_json_converts_sizes_to_int( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 250 | def test_retrieve_and_patch_json_marks_maintenance_boards( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 264 | def test_retrieve_and_patch_json_skips_maintenance_for_modern_boards( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 277 | def test_retrieve_and_patch_json_has_all_required_fields( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 292 | def test_retrieve_and_patch_json_adds_device_tags( | CODE |
| LOW | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 341 | def test_build_imager_json_tags_every_entry_for_its_board( | CODE |
| LOW | bin/balena_unpin_devices.py | 499 | def latest_supervisor_release( | CODE |
| LOW | tests/test_recheck_endpoint.py | 71 | def test_enqueues_task_when_no_lock_held() -> None: | CODE |
| LOW | tests/test_recheck_endpoint.py | 86 | def test_skips_enqueue_when_queue_debounce_held() -> None: | CODE |
| LOW | tests/test_recheck_endpoint.py | 108 | def test_back_to_back_calls_only_enqueue_once() -> None: | CODE |
| LOW | tests/test_recheck_endpoint.py | 130 | def test_missing_internal_auth_is_forbidden() -> None: | CODE |
| LOW | tests/test_recheck_endpoint.py | 141 | def test_internal_auth_works_without_basic_auth() -> None: | CODE |
| LOW | tests/test_csrf.py | 44 | def test_same_host_http_origin_passes() -> None: | CODE |
| LOW | tests/test_csrf.py | 57 | def test_same_host_https_origin_on_http_passes() -> None: | CODE |
| LOW | tests/test_csrf.py | 74 | def test_host_with_port_origin_without_port_passes() -> None: | CODE |
| LOW | tests/test_csrf.py | 93 | def test_same_host_distinct_non_default_ports_rejected() -> None: | CODE |
| LOW | tests/test_csrf.py | 110 | def test_default_port_origin_vs_non_default_host_port_rejected() -> None: | CODE |
| LOW | tests/test_csrf.py | 128 | def test_cross_host_origin_still_rejected() -> None: | CODE |
| LOW | tests/test_csrf.py | 141 | def test_missing_token_still_rejected() -> None: | CODE |
| LOW | tests/test_csrf.py | 156 | def test_bad_token_still_rejected() -> None: | CODE |
| LOW | tests/test_csrf.py | 169 | def test_no_origin_header_still_works() -> None: | CODE |
| LOW⚡ | tests/test_csrf.py | 196 | def test_iis_rewrite_host_proxy_without_trusted_origin_rejected() -> None: | CODE |
| LOW | tests/test_csrf.py | 213 | def test_iis_rewrite_host_proxy_with_trusted_origin_passes( | CODE |
| LOW | tests/test_csrf.py | 233 | def test_trusted_origin_does_not_open_other_hosts( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 72 | def test_returns_none_without_the_driver( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 82 | def test_returns_none_when_hwmon_is_absent( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 89 | def test_ignores_rpi_volt_without_the_attribute( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 114 | def test_unsupported_reads_none_not_false( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 124 | def test_unreadable_attribute_is_unknown(self, tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/test_undervoltage.py | 131 | def test_first_alarm_sets_the_latch(self, fake_redis: MagicMock) -> None: | CODE |
| LOW⚡ | tests/test_undervoltage.py | 227 | def test_same_boot_survives_a_reread(self, fake_redis: MagicMock) -> None: | CODE |
| LOW⚡ | tests/test_undervoltage.py | 235 | def test_corrupt_latch_is_discarded(self, fake_redis: MagicMock) -> None: | CODE |
| LOW⚡ | tests/test_undervoltage.py | 244 | def test_boot_id_is_persisted(self, fake_redis: MagicMock) -> None: | CODE |
| LOW⚡ | tests/test_undervoltage.py | 254 | def test_redis_failure_still_returns_the_reading( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 508 | def test_healthy_device_never_creates_the_key( | CODE |
| LOW⚡ | tests/test_undervoltage.py | 518 | def test_a_real_change_still_writes(self, fake_redis: MagicMock) -> None: | CODE |
| LOW⚡ | tests/test_undervoltage.py | 526 | def test_unreadable_redis_does_not_erase_history( | CODE |
| LOW | tests/test_undervoltage.py | 53 | def test_finds_rpi_volt_among_other_sensors( | CODE |
| LOW | tests/test_undervoltage.py | 102 | def test_reads_the_boolean_attribute( | CODE |
| LOW | tests/test_undervoltage.py | 142 | def test_recovery_clears_active_but_not_history( | CODE |
| LOW | tests/test_undervoltage.py | 156 | def test_distinct_brown_outs_accumulate( | CODE |
| LOW | tests/test_undervoltage.py | 170 | def test_sustained_brown_out_counts_once( | CODE |
| LOW | tests/test_undervoltage.py | 186 | def test_worker_restart_does_not_inflate_the_count( | CODE |
| LOW | tests/test_undervoltage.py | 199 | def test_corrupt_count_does_not_raise(self, fake_redis: MagicMock) -> None: | CODE |
| LOW | tests/test_undervoltage.py | 214 | def test_reboot_resets_the_latch(self, fake_redis: MagicMock) -> None: | CODE |
| LOW | tests/test_undervoltage.py | 280 | def test_healthy_board_does_not_warn( | CODE |
| LOW | tests/test_undervoltage.py | 295 | def test_live_alarm_warns_without_a_latch( | CODE |
| LOW | tests/test_undervoltage.py | 312 | def test_history_warns_after_recovery( | CODE |
| LOW | tests/test_undervoltage.py | 329 | def test_live_alarm_is_written_back_to_the_latch( | CODE |
| LOW | tests/test_undervoltage.py | 349 | def test_warning_survives_recovery_after_a_render_only_sighting( | CODE |
| 1545 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | conftest.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | conftest.py | 55 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | conftest.py | 85 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | conftest.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | conftest.py | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | conftest.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | conftest.py | 140 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | conftest.py | 142 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 144 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 146 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 180 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 182 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 219 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 312 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …raspberry_pi_imager/tests/test_build_pi_imager_json.py | 314 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 199 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 201 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 230 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 232 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 345 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 347 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 475 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 477 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 565 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/balena_unpin_devices.py | 567 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | bin/collect_debug.sh | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | bin/collect_debug.sh | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 92 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 139 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 226 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 228 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 482 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 484 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 517 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 519 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 561 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 563 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 635 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 637 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 692 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 694 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 795 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 797 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 809 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | bin/collect_debug.sh | 811 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_csrf.py | 183 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_csrf.py | 190 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_diagnostics.py | 149 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_diagnostics.py | 157 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utils.py | 379 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_utils.py | 435 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_utils.py | 522 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_processing.py | 740 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_processing.py | 742 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_processing.py | 1791 | # --------------------------------------------------------------------------- | COMMENT |
| 272 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 61 | # job runs with ``-p no:django`` in a *minimal* venv that has neither | COMMENT |
| LOW | pyproject.toml | 61 | # libheif1 system package is supplied by the base image (see | COMMENT |
| LOW | pyproject.toml | 161 | COMMENT | |
| LOW | docker-compose.test.yml | 1 | # vim: ft=yaml.docker-compose | COMMENT |
| LOW | tools/image_builder/utils.py | 101 | builder_extra_apt = [ | COMMENT |
| LOW | tools/image_builder/utils.py | 161 | COMMENT | |
| LOW | tools/image_builder/utils.py | 181 | qt5_toolchain_url = f'{releases_url}/WebView-v2026.07.1' | COMMENT |
| LOW | tools/image_builder/utils.py | 201 | # * Pi2 / Pi3 (32-bit, Qt5): Qt linuxfb + a custom -no-xcb | COMMENT |
| LOW | tools/image_builder/utils.py | 281 | # ``VideoOutput`` hosted in a QQuickWidget (issue #2967: | COMMENT |
| LOW | tools/image_builder/utils.py | 301 | # gstreamer plugin set needed. VLC is deliberately not | COMMENT |
| LOW | tools/image_builder/utils.py | 341 | # | COMMENT |
| LOW | tools/image_builder/utils.py | 361 | # enough to issue the ioctl; see anthias_common/smart.py. | COMMENT |
| LOW | tools/image_builder/utils.py | 381 | # via V4L2 M2M / request API, not VAAPI; mesa-va-drivers | COMMENT |
| LOW | tools/image_builder/utils.py | 401 | # plays pi1/pi2/pi3 video by shelling out to ``gst-launch-1.0 | COMMENT |
| LOW | tools/image_builder/__main__.py | 61 | f'Warning: Failed to create cache directory: {e}', | COMMENT |
| LOW | tools/image_builder/__main__.py | 81 | 'ffmpeg', | COMMENT |
| LOW | tools/image_builder/__main__.py | 181 | # | COMMENT |
| LOW | tools/image_builder/__main__.py | 201 | # Hardcode the GHCR-primary namespace so the cache lives next to | COMMENT |
| LOW | tools/image_builder/__main__.py | 361 | COMMENT | |
| LOW | tools/raspberry_pi_imager/build_pi_imager_json.py | 21 | # one. `pi2` stays because the Pi 2 has no 64-bit option. | COMMENT |
| LOW | bin/balena_unpin_devices.py | 121 | KEEP_PINNED_TAG = 'anthias_keep_pinned' | COMMENT |
| LOW | bin/balena_unpin_devices.py | 141 | # balenaOS 5.1.x, whose devices run supervisor 15.x; pushing 17.x there | COMMENT |
| LOW | bin/enable_ssl.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | bin/enable_ssl.sh | 21 | # A compose override (docker-compose.ssl.override.yml) is generated to: | COMMENT |
| LOW | bin/enable_ssl.sh | 161 | } | COMMENT |
| LOW | bin/collect_debug.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/collect_debug.sh | 21 | # | COMMENT |
| LOW | bin/collect_debug.sh | 241 | section "Mounts" "$SYS" mount | COMMENT |
| LOW | bin/collect_debug.sh | 281 | echo "a kernel built without CONFIG_SENSORS_RASPBERRYPI_HWMON." | COMMENT |
| LOW | bin/collect_debug.sh | 701 | section "Listening sockets" "$NET" sh -c 'ss -tlnp 2>/dev/null || netstat -tlnp 2>/dev/null' | COMMENT |
| LOW | bin/collect_debug.sh | 721 | # should land as more of them move into the UI: adding a field to the | COMMENT |
| LOW | bin/migrate_legacy_paths.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/migrate_legacy_paths.sh | 21 | # parallel reimplementation. | COMMENT |
| LOW | bin/generate_board_enablement_testbed.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/install.sh | 381 | [ "$(uv --version 2>/dev/null | awk '{print $2}')" != "${UV_PIN_VERSION}" ]; then | COMMENT |
| LOW | bin/install.sh | 461 | # so `uname -m` reports aarch64 while Docker/apt are armhf. | COMMENT |
| LOW | bin/install.sh | 501 | cd "${ANTHIAS_REPO_DIR}/ansible" | COMMENT |
| LOW | bin/install.sh | 561 | # Free the RAM held by the previous-version stack (server, viewer, | COMMENT |
| LOW | bin/rebuild_qt5_toolchain.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/rebuild_qt5_toolchain.sh | 21 | # (a) two parallel builds will OOM most hosts and (b) the Linaro | COMMENT |
| LOW | bin/rebuild_qt5_toolchain.sh | 61 | COMMENT | |
| LOW | bin/start_viewer.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/start_viewer.sh | 41 | # the system interpreter, which has no Anthias deps installed. | COMMENT |
| LOW | bin/build_favicons.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/upgrade_containers.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | bin/upgrade_containers.sh | 21 | # against a decompression-bomb fixture or runaway ffprobe, not | COMMENT |
| LOW | bin/upgrade_containers.sh | 61 | # Detect Raspberry Pi version. Pi 4 is always treated as pi4-64 (the | COMMENT |
| LOW | bin/upgrade_containers.sh | 101 | # @TODO: Rename later | COMMENT |
| LOW | bin/upgrade_containers.sh | 161 | # No CEC device passthrough is needed, on any board. | COMMENT |
| LOW | bin/upgrade_containers.sh | 181 | SSL_OVERRIDE=/home/${USER}/anthias/docker-compose.ssl.override.yml | COMMENT |
| LOW | bin/upgrade_containers.sh | 221 | # instances left over from earlier `docker compose run` invocations). | COMMENT |
| LOW | bin/migrate_in_container_paths.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/purge_stale_images.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/purge_stale_images.sh | 21 | # *tagged* images is restricted to the Anthias repositories, and only | COMMENT |
| LOW | bin/render_balena_yml.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/balena_ota_deploy.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/test_webview_cpp.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/lib/viewer/common.sh | 1 | # shellcheck shell=bash | COMMENT |
| LOW | bin/lib/viewer/common.sh | 21 | # from upstream mpv (RK3399 / Rock Pi 4 today; future Rockchip / | COMMENT |
| LOW | bin/lib/viewer/common.sh | 41 | # Rockchip / Allwinner / Amlogic stateless decoders. The | COMMENT |
| 321 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bin/balena_fleet_maintenance.py | 183 | except FileNotFoundError: | CODE |
| HIGH | tests/test_viewer.py | 2091 | except OSError: | CODE |
| HIGH | tests/test_app.py | 102 | except FileNotFoundError: | CODE |
| HIGH | tests/test_app.py | 884 | except FileNotFoundError: | CODE |
| HIGH | src/anthias_viewer/media_player.py | 716 | except OSError: | CODE |
| HIGH | src/anthias_viewer/media_player.py | 723 | except (OSError, ValueError): | CODE |
| HIGH | src/anthias_viewer/media_player.py | 729 | except (OSError, ValueError): | CODE |
| HIGH | src/anthias_viewer/media_player.py | 876 | except (ProcessLookupError, OSError): | CODE |
| HIGH | src/anthias_viewer/media_player.py | 870 | except ( | CODE |
| HIGH | src/anthias_viewer/__init__.py | 2332 | except OSError: | CODE |
| HIGH | src/anthias_viewer/__init__.py | 2339 | except (OSError, IndexError): | CODE |
| HIGH | src/anthias_viewer/__init__.py | 2356 | except (OSError, ValueError, TypeError): | CODE |
| HIGH | src/anthias_viewer/messaging.py | 77 | except redis.ConnectionError: | CODE |
| HIGH | src/anthias_viewer/messaging.py | 89 | except redis.ConnectionError: | CODE |
| HIGH | src/anthias_common/storage_health.py | 767 | except OSError: | CODE |
| HIGH | src/anthias_common/storage_health.py | 751 | except (AttributeError, OSError): | CODE |
| HIGH | src/anthias_common/utils.py | 422 | except OSError: | CODE |
| HIGH | src/anthias_common/utils.py | 700 | except requests.exceptions.RequestException: | CODE |
| HIGH | src/anthias_common/device_helper.py | 132 | except OSError: | CODE |
| HIGH | src/anthias_webview/pyshim/imp.py | 147 | except Exception: | CODE |
| HIGH | src/anthias_server/processing.py | 852 | except OSError: | CODE |
| HIGH | src/anthias_server/processing.py | 975 | except OSError: | CODE |
| HIGH | src/anthias_server/celery_tasks.py | 1319 | except OSError: | CODE |
| HIGH | src/anthias_server/app/views.py | 1737 | except _json.JSONDecodeError: | CODE |
| HIGH | src/anthias_server/lib/cec.py | 728 | except OSError: | CODE |
| HIGH | src/anthias_server/lib/cec.py | 356 | except OSError: | CODE |
| HIGH | src/anthias_server/lib/integrations/ingest.py | 160 | except OSError: | CODE |
| HIGH | src/anthias_server/api/helpers.py | 142 | except ValueError: | CODE |
| HIGH | src/anthias_server/api/views/v2.py | 274 | except redis.RedisError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/image_builder/__main__.py | 59 | except Exception as e: | CODE |
| LOW | bin/migrate_legacy_paths.sh | 177 | except Exception: | CODE |
| MEDIUM | bin/migrate_legacy_paths.sh | 173 | def asset_count(path): | CODE |
| LOW | tests/test_processing.py | 69 | except Exception: | CODE |
| LOW | src/anthias_viewer/media_player.py | 655 | except Exception: | CODE |
| LOW | src/anthias_viewer/media_player.py | 670 | except Exception: | CODE |
| LOW | src/anthias_viewer/media_player.py | 943 | except Exception as exc: | CODE |
| LOW | src/anthias_viewer/__init__.py | 986 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 1005 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 1042 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 1752 | except Exception as exc: | CODE |
| LOW | src/anthias_viewer/__init__.py | 1805 | except Exception as exc: | CODE |
| LOW | src/anthias_viewer/__init__.py | 1810 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 1888 | except Exception as exc: | CODE |
| LOW | src/anthias_viewer/__init__.py | 2008 | except Exception as exc: | CODE |
| LOW | src/anthias_viewer/__init__.py | 2118 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 2669 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 2949 | except Exception as exc: | CODE |
| LOW | src/anthias_viewer/__init__.py | 3037 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 3099 | except Exception: | CODE |
| LOW | src/anthias_viewer/__init__.py | 3127 | except Exception: | CODE |
| LOW | src/anthias_viewer/__main__.py | 10 | except Exception: | CODE |
| LOW | src/anthias_common/board.py | 62 | except Exception: | CODE |
| LOW | src/anthias_common/storage_health.py | 821 | except Exception: | CODE |
| LOW | src/anthias_common/storage_health.py | 886 | except Exception: | CODE |
| LOW | src/anthias_common/storage_health.py | 899 | except Exception: | CODE |
| LOW | src/anthias_common/version.py | 45 | except Exception: | CODE |
| LOW | src/anthias_common/version.py | 66 | except Exception: | CODE |
| LOW | src/anthias_common/smart.py | 350 | except Exception: | CODE |
| LOW | src/anthias_common/smart.py | 364 | except Exception: | CODE |
| LOW | src/anthias_common/utils.py | 480 | except Exception: | CODE |
| LOW | src/anthias_common/utils.py | 536 | except Exception: | CODE |
| LOW | src/anthias_common/undervoltage.py | 263 | except Exception: | CODE |
| LOW | src/anthias_common/undervoltage.py | 375 | except Exception: | CODE |
| MEDIUM | src/anthias_common/undervoltage.py | 124 | def _scan_for_alarm_path() -> str | None: | CODE |
| LOW | src/anthias_webview/pyshim/imp.py | 147 | except Exception: | CODE |
| LOW⚡ | src/anthias_server/processing.py | 522 | except Exception: | CODE |
| LOW⚡ | src/anthias_server/processing.py | 529 | except Exception: | CODE |
| LOW | src/anthias_server/processing.py | 554 | except Exception: # pragma: no cover - graceful no-op on hosts w/o libheif | CODE |
| LOW | src/anthias_server/processing.py | 628 | except Exception: | CODE |
| LOW | src/anthias_server/processing.py | 990 | except Exception: | CODE |
| MEDIUM | src/anthias_server/celery_tasks.py | 568 | def send_telemetry_task() -> None: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 389 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 410 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 537 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 697 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 754 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 822 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 1537 | except Exception: | CODE |
| LOW | src/anthias_server/celery_tasks.py | 1848 | except Exception: | CODE |
| LOW | src/anthias_server/app/consumers.py | 190 | except Exception: | CODE |
| LOW | src/anthias_server/app/page_context.py | 93 | except Exception: | CODE |
| LOW | src/anthias_server/app/page_context.py | 129 | except Exception: | CODE |
| LOW | src/anthias_server/app/page_context.py | 161 | except Exception: | CODE |
| MEDIUM | src/anthias_server/app/page_context.py | 158 | def _storage_state() -> dict[str, Any]: | CODE |
| LOW | src/anthias_server/app/views.py | 1994 | except Exception as exc: | CODE |
| LOW | src/anthias_server/lib/storage_watcher.py | 141 | except Exception: | CODE |
| LOW | src/anthias_server/lib/telemetry.py | 70 | except Exception as exc: | CODE |
| MEDIUM | src/anthias_server/lib/telemetry.py | 56 | def _get_asset_counts() -> dict[str, int]: | CODE |
| LOW | src/anthias_server/lib/backup_helper.py | 212 | except Exception: | CODE |
| 14 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conftest.py | 73 | CODE | |
| LOW | bin/balena_unpin_devices.py | 81 | CODE | |
| LOW | bin/shoot_pages.py | 17 | CODE | |
| LOW | bin/balena_fleet_maintenance.py | 41 | CODE | |
| LOW | emails/render_logo.py | 22 | CODE | |
| LOW | tests/test_csrf.py | 10 | CODE | |
| LOW | tests/test_processing.py | 31 | CODE | |
| LOW | tests/test_template_state_reset.py | 40 | CODE | |
| LOW | tests/test_auth.py | 20 | CODE | |
| LOW | tests/test_login_view.py | 10 | CODE | |
| LOW | tests/test_design_system_page.py | 18 | CODE | |
| LOW | tests/test_sentry.py | 392 | CODE | |
| LOW | tests/test_sentry.py | 415 | CODE | |
| LOW | tests/test_firmware_string_sanitizing.py | 16 | CODE | |
| LOW | tests/test_email_tokens.py | 22 | CODE | |
| LOW | tests/test_migrate_to_screenly.py | 15 | CODE | |
| LOW | tests/test_error_pages.py | 11 | CODE | |
| LOW | tests/test_design_tokens.py | 16 | CODE | |
| LOW | tests/_seed_data.py | 24 | CODE | |
| LOW | tests/test_remote_video.py | 13 | CODE | |
| LOW | tests/test_storage_watcher.py | 3 | CODE | |
| LOW | tests/test_host_agent_device_model.py | 22 | CODE | |
| LOW | tests/test_host_agent_board_subtype.py | 20 | CODE | |
| LOW | tests/test_host_agent_ifaddrs.py | 11 | CODE | |
| LOW | tests/test_smart.py | 8 | CODE | |
| LOW | tests/test_app.py | 30 | CODE | |
| LOW | tests/test_template_views.py | 11 | CODE | |
| LOW | tests/test_storage_health.py | 10 | CODE | |
| LOW | src/anthias_common/board.py | 35 | CODE | |
| LOW | src/anthias_common/storage_health.py | 75 | CODE | |
| LOW | src/anthias_common/version.py | 11 | CODE | |
| LOW | src/anthias_common/youtube.py | 12 | CODE | |
| LOW | src/anthias_common/remote_video.py | 17 | CODE | |
| LOW | src/anthias_common/smart.py | 44 | CODE | |
| LOW | src/anthias_common/http.py | 13 | CODE | |
| LOW | src/anthias_common/undervoltage.py | 49 | CODE | |
| LOW | src/anthias_host_agent/ifaddrs.py | 18 | CODE | |
| LOW | src/anthias_webview/pyshim/pipes.py | 6 | CODE | |
| LOW | src/anthias_server/processing.py | 57 | CODE | |
| LOW | src/anthias_server/app/design_system.py | 21 | CODE | |
| LOW | …thias_server/app/management/commands/import_content.py | 11 | CODE | |
| LOW | src/anthias_server/lib/auth.py | 66 | CODE | |
| LOW | src/anthias_server/lib/csrf.py | 37 | CODE | |
| LOW | src/anthias_server/lib/storage_watcher.py | 35 | CODE | |
| LOW | src/anthias_server/lib/screenly_migration.py | 14 | CODE | |
| LOW | src/anthias_server/lib/undervoltage_watcher.py | 26 | CODE | |
| LOW | src/anthias_server/lib/timezone.py | 17 | CODE | |
| LOW | src/anthias_server/lib/integrations/screencloud.py | 25 | CODE | |
| LOW | src/anthias_server/lib/integrations/ingest.py | 20 | CODE | |
| LOW | src/anthias_server/lib/integrations/graphql.py | 10 | CODE | |
| LOW | src/anthias_server/lib/integrations/registry.py | 9 | CODE | |
| LOW | src/anthias_server/lib/integrations/xibo.py | 25 | CODE | |
| LOW | src/anthias_server/lib/integrations/pisignage.py | 22 | CODE | |
| LOW | src/anthias_server/lib/integrations/http.py | 14 | CODE | |
| LOW | src/anthias_server/lib/integrations/base.py | 19 | CODE | |
| LOW | src/anthias_server/lib/integrations/yodeck.py | 20 | CODE | |
| LOW | src/anthias_server/api/admin.py | 1 | CODE | |
| LOW | src/anthias_server/api/tests/test_pisignage_import.py | 9 | CODE | |
| LOW | src/anthias_server/api/tests/test_xibo_import.py | 9 | CODE | |
| LOW | src/anthias_server/api/tests/test_yodeck_import.py | 14 | CODE | |
| 3 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_app.py | 334 | ' return el && typeof window.Alpine?.$data(el)?.openAdd === "function";' | CODE |
| HIGH | tests/test_app.py | 1028 | _alpine_state(page, 'state.editAsset && state.editAsset.asset_id') | CODE |
| HIGH | tests/test_app.py | 1227 | 'state.previewAsset && state.previewAsset.asset_id', | CODE |
| HIGH | tests/test_app.py | 1252 | 'state.previewAsset && state.previewAsset.asset_id', | CODE |
| HIGH | tests/test_app.py | 1288 | 'state.previewAsset && state.previewAsset.asset_id', | CODE |
| HIGH | tests/test_app.py | 2005 | if (l && l.textContent.trim() === label) { | CODE |
| HIGH | tests/test_app.py | 2009 | return null; | CODE |
| HIGH | tests/test_app.py | 2059 | if (memLegend[i] !== undefined) row.textContent = memLegend[i]; | CODE |
| HIGH | tests/test_app.py | 2076 | if (diskLegend[i] !== undefined) row.textContent = diskLegend[i]; | CODE |
| HIGH | tests/test_app.py | 2089 | : null; | CODE |
| HIGH | tests/test_app.py | 113 | if (!el) return null; | STRING |
| HIGH | tests/test_app.py | 550 | return Boolean(el && el.closest('.modal-card')); | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/shoot_pages.py | 87 | def _setup_django(seed: bool) -> None: | CODE |
| LOW | tests/test_celery_tasks.py | 35 | def _set_mtime(file_path: str, age_seconds: int) -> None: | CODE |
| LOW | tests/test_app.py | 1862 | def _set_clock_toggle(page: Page, use_24h: bool) -> None: | CODE |
| LOW | tests/test_app.py | 1926 | def _set_date_format(page: Page, value: str) -> None: | CODE |
| LOW | tests/test_app.py | 1982 | def _set_name(value: str) -> None: | CODE |
| LOW | src/anthias_viewer/media_player.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_viewer/media_player.py | 38 | def set_browser_bus(bus: Any) -> None: | CODE |
| LOW | src/anthias_viewer/media_player.py | 55 | def set_send_to_webview(fn: Any) -> None: | CODE |
| LOW | src/anthias_viewer/media_player.py | 521 | def set_asset(self, uri: str, duration: int | str) -> None: | CODE |
| LOW | src/anthias_viewer/media_player.py | 625 | def set_asset(self, uri: str, duration: int | str) -> None: | CODE |
| LOW | src/anthias_viewer/media_player.py | 797 | def set_asset(self, uri: str, duration: int | str) -> None: | CODE |
| LOW | src/anthias_viewer/__init__.py | 87 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_viewer/utils.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_viewer/scheduling.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_viewer/scheduling.py | 201 | def update_playlist(self, *, allow_reshuffle: bool = False) -> None: | CODE |
| LOW | src/anthias_viewer/gst_fbdev_player.py | 63 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_viewer/__main__.py | 5 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_viewer/messaging.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_common/storage_health.py | 88 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_common/smart.py | 53 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_common/utils.py | 31 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_common/undervoltage.py | 79 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_host_agent/__main__.py | 38 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_host_agent/__main__.py | 97 | def set_ip_addresses() -> None: | CODE |
| LOW | src/anthias_host_agent/__main__.py | 212 | def set_total_mem_kb(rdb: 'redis.Redis') -> None: | CODE |
| LOW | src/anthias_host_agent/__main__.py | 233 | def set_board_subtype(rdb: 'redis.Redis') -> None: | CODE |
| LOW | src/anthias_host_agent/__main__.py | 260 | def set_device_model(rdb: 'redis.Redis') -> None: | CODE |
| LOW | src/anthias_server/settings.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/processing.py | 78 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/celery_tasks.py | 63 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/app/consumers.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/app/helpers.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/app/page_context.py | 39 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/app/views.py | 65 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/app/views.py | 1745 | def _set_toast_header(response: HttpResponse, kind: str, message: str) -> None: | CODE |
| LOW | src/anthias_server/lib/auth.py | 110 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | src/anthias_server/lib/cec.py | 56 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/display_power.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/storage_watcher.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/diagnostics.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/telemetry.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/backup_helper.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/whitenoise.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/whitenoise.py | 40 | def update_files_dictionary(self, root: str, prefix: str) -> None: | CODE |
| LOW | src/anthias_server/lib/cec_client.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/undervoltage_watcher.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/github.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/github.py | 50 | def _set_github_error_backoff(action: str) -> None: | CODE |
| LOW | src/anthias_server/lib/integrations/screencloud.py | 43 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/lib/integrations/yodeck.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/api/helpers.py | 21 | def update_asset(asset: dict[str, Any], data: dict[str, Any]) -> None: | CODE |
| LOW | src/anthias_server/api/views/mixins.py | 48 | logger = logging.getLogger(__name__) | CODE |
| LOW | src/anthias_server/api/views/v2.py | 95 | logger = logging.getLogger(__name__) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/shoot_pages.py | 153 | CODE | |
| LOW | bin/balena_fleet_maintenance.py | 173 | CODE | |
| LOW | tests/test_viewer_import_closure.py | 117 | CODE | |
| LOW | tests/test_viewer_import_closure.py | 144 | CODE | |
| LOW | tests/test_template_state_reset.py | 87 | CODE | |
| LOW | tests/test_template_state_reset.py | 128 | CODE | |
| LOW | tests/fake_docker.py | 77 | CODE | |
| LOW | tests/test_design_tokens.py | 275 | CODE | |
| LOW | tests/test_design_tokens.py | 300 | CODE | |
| LOW | tests/test_design_tokens.py | 355 | CODE | |
| LOW | tests/test_design_tokens.py | 474 | CODE | |
| LOW | tests/test_template_views.py | 3869 | CODE | |
| LOW | tests/test_template_views.py | 4020 | CODE | |
| LOW | src/anthias_viewer/media_player.py | 97 | CODE | |
| LOW | src/anthias_viewer/media_player.py | 339 | CODE | |
| LOW | src/anthias_viewer/__init__.py | 1104 | CODE | |
| LOW | src/anthias_viewer/__init__.py | 2289 | CODE | |
| LOW | src/anthias_viewer/__init__.py | 2318 | CODE | |
| LOW | src/anthias_viewer/__init__.py | 2398 | CODE | |
| LOW | src/anthias_viewer/__init__.py | 2765 | CODE | |
| LOW | src/anthias_viewer/messaging.py | 46 | CODE | |
| LOW | src/anthias_common/storage_health.py | 687 | CODE | |
| LOW | src/anthias_common/utils.py | 219 | CODE | |
| LOW | src/anthias_common/utils.py | 409 | CODE | |
| LOW | src/anthias_common/utils.py | 460 | CODE | |
| LOW | src/anthias_common/undervoltage.py | 124 | CODE | |
| LOW | src/anthias_common/device_helper.py | 105 | CODE | |
| LOW | src/anthias_common/device_helper.py | 303 | CODE | |
| LOW | src/anthias_host_agent/__main__.py | 135 | CODE | |
| LOW | src/anthias_host_agent/__main__.py | 176 | CODE | |
| LOW | src/anthias_server/celery_tasks.py | 1184 | CODE | |
| LOW | src/anthias_server/celery_tasks.py | 1603 | CODE | |
| LOW | src/anthias_server/app/views.py | 393 | CODE | |
| LOW | src/anthias_server/app/views.py | 659 | CODE | |
| LOW | src/anthias_server/app/templatetags/asset_filters.py | 330 | CODE | |
| LOW | src/anthias_server/lib/cec.py | 548 | CODE | |
| LOW | src/anthias_server/lib/cec.py | 331 | CODE | |
| LOW | src/anthias_server/lib/storage_watcher.py | 60 | CODE | |
| LOW | src/anthias_server/lib/whitenoise.py | 70 | CODE | |
| LOW | src/anthias_server/lib/undervoltage_watcher.py | 77 | CODE | |
| LOW | src/anthias_server/lib/integrations/ingest.py | 200 | CODE | |
| LOW | src/anthias_server/api/serializers/mixins.py | 61 | CODE | |
| LOW | src/anthias_server/api/views/mixins.py | 471 | CODE | |
| LOW | src/anthias_server/api/views/v2.py | 629 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/install.sh | 503 | # If the user can't elevate without a password, Ansible needs | COMMENT |
| MEDIUM | bin/install.sh | 537 | # host + runtime layers. An explicit -e is robust against sudo stripping | COMMENT |
| LOW | bin/start_viewer.sh | 43 | # we just set; -E alone is subject to env_check / env_delete and is not | COMMENT |
| MEDIUM | ansible/site.yml | 6 | # install.sh passes -e anthias_user explicitly (robust under sudo). | COMMENT |
| MEDIUM | src/anthias_webview/src/view.cpp | 296 | // an in-place navigation), so transitions are seamless with at most | COMMENT |
| MEDIUM | src/anthias_server/app/static/sass/_styles.scss | 3340 | // 16rem parent is robust to whichever `position` wins. | COMMENT |
| MEDIUM | src/anthias_server/app/static/src/apps/location-map.ts | 133 | // whenever the canvas actually gets its size — robust to the modal | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/generate_board_enablement_testbed.sh | 67 | # Step 2: cut H.264 sources to CUT_SECONDS via -c copy. Avoids a | COMMENT |
| LOW | bin/generate_board_enablement_testbed.sh | 92 | # Step 3: HEVC re-encode each H.264 cut. ``-tag:v hvc1`` writes | COMMENT |
| LOW | bin/generate_board_enablement_testbed.sh | 120 | # Step 4: report. | COMMENT |
| LOW⚡ | website/content/docs/x86-installation.md | 27 | ## Step 1: Download Debian | COMMENT |
| LOW⚡ | website/content/docs/x86-installation.md | 35 | ## Step 2: Write the installer to a USB drive | COMMENT |
| LOW⚡ | website/content/docs/x86-installation.md | 42 | ## Step 3: Install Debian | COMMENT |
| LOW⚡ | website/content/docs/x86-installation.md | 52 | ## Step 4: Prepare the system for Anthias | COMMENT |
| LOW | website/content/docs/x86-installation.md | 90 | ## Step 5: Run the Anthias installer | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | src/anthias_server/lib/auth.py | 540 | from django.core.exceptions import ValidationError | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/start_server.sh | 21 | # The following block ensures that the migration is transactional and that the | COMMENT |
| MEDIUM | tests/test_processing.py | 794 | # Create a minimal placeholder — ffprobe is mocked below so the | COMMENT |
| MEDIUM | tests/test_processing.py | 1116 | # Create an empty placeholder file so the FileNotFoundError check | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/generate_board_enablement_testbed.sh | 67 | # Step 2: cut H.264 sources to CUT_SECONDS via -c copy. Avoids a | COMMENT |
| LOW | bin/generate_board_enablement_testbed.sh | 92 | # Step 3: HEVC re-encode each H.264 cut. ``-tag:v hvc1`` writes | COMMENT |
| LOW | bin/generate_board_enablement_testbed.sh | 120 | # Step 4: report. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | bin/collect_debug.sh | 31 | # Usage: | COMMENT |
| LOW | bin/generate_board_enablement_testbed.sh | 14 | # Usage: | COMMENT |
| LOW | bin/rebuild_qt5_toolchain.sh | 25 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | bin/start_viewer.sh | 3 | # start_viewer.sh — orchestrates the viewer boot. Shared setup runs on | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | emails/README.md | 156 | announcement, kept real rather than filled with lorem ipsum so the | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_storage_health.py | 73 | CODE |