Fully transparent SSH, HTTPS, Kubernetes, MySQL and Postgres bastion/PAM that doesn't need additional client-side software
This report presents the forensic synthetic code analysis of warp-tech/warpgate, a Rust project with 7,353 GitHub stars. SynthScan v2.0 examined 107,631 lines of code across 678 source files, recording 214 pattern matches distributed across 11 syntactic categories. The overall adjusted score of 3.1 places this repository in the Likely human-written band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 214 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 11 | # ── colour helpers ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 20 | # ── helpers ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 29 | # ── check if already seeded ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 44 | # ── create role ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 49 | # ── create user ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 54 | # ── add password credential ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 58 | # ── assign user to role ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/seed.sh | 62 | # ── create SSH target ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker/local-testing/login-protection/seed.sh | 79 | # ── assign target to role ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/start.sh | 17 | # ── colours ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/start.sh | 24 | # ── preflight ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/start.sh | 29 | # ── kill any previous instance ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/start.sh | 40 | # ── pull + start Docker targets ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/start.sh | 47 | # ── wait for SSH target to accept connections ───────────────────────────────── | COMMENT |
| MEDIUM⚡ | docker/local-testing/login-protection/start.sh | 56 | # ── prepare data directory ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker/local-testing/login-protection/start.sh | 69 | # ── unattended-setup (only if not already initialised) ─────────────────────── | COMMENT |
| MEDIUM | docker/local-testing/login-protection/start.sh | 94 | # ── start warpgate ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker/local-testing/login-protection/start.sh | 104 | # ── wait for warpgate HTTP ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | docker/local-testing/login-protection/start.sh | 116 | # ── seed users / targets / roles ───────────────────────────────────────────── | COMMENT |
| MEDIUM | docker/local-testing/login-protection/start.sh | 120 | # ── done ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_login_protection.py | 88 | # ── test class ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_login_protection.py | 94 | # ── endpoint smoke tests ──────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_login_protection.py | 124 | # ── failure recording ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_login_protection.py | 12 | # ── shared helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_login_protection.py | 160 | # ── IP blocking ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_login_protection.py | 192 | # ── user lockout ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_login_protection.py | 245 | # ── hot-reload ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_login_protection.py | 340 | # ── SSH protocol ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_login_protection.py | 497 | # ── admin exemption ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_http_user_auth_oidc.py | 223 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_http_user_auth_oidc.py | 225 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_http_user_auth_oidc.py | 986 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_http_user_auth_oidc.py | 990 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_kubernetes_integration.py | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_kubernetes_integration.py | 33 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_rdp_user_auth_otp.py | 58 | def test_otp_required_not_authorized_without_second_factor( | CODE |
| LOW | tests/test_role_expiry.py | 98 | def test_grant_role_with_future_expiry_allows_access( | CODE |
| LOW | tests/test_role_expiry.py | 126 | def test_expired_role_denies_access( | CODE |
| LOW | tests/test_role_expiry.py | 159 | def test_reenable_expired_role_restores_access( | CODE |
| LOW | tests/test_role_expiry.py | 209 | def test_remove_expiry_makes_permanent( | CODE |
| LOW | tests/test_role_expiry.py | 250 | def test_revoked_role_denies_access( | CODE |
| LOW | tests/test_role_expiry.py | 276 | def test_reactivate_revoked_role_via_update_expiry( | CODE |
| LOW | tests/test_role_expiry.py | 311 | def test_reactivate_revoked_role_via_remove_expiry( | CODE |
| LOW | tests/test_role_expiry.py | 342 | def test_get_user_roles_returns_all_states( | CODE |
| LOW | tests/conftest.py | 982 | def wait_rdp_session_authorized(api, username, timeout): | STRING |
| LOW | tests/test_ssh_proto.py | 186 | def test_agent_forwarding_parallel( | CODE |
| LOW⚡ | tests/test_login_protection.py | 96 | def test_security_status_endpoint( | CODE |
| LOW⚡ | tests/test_login_protection.py | 110 | def test_list_blocked_ips_endpoint( | CODE |
| LOW⚡ | tests/test_login_protection.py | 117 | def test_list_locked_users_endpoint( | CODE |
| LOW⚡ | tests/test_login_protection.py | 126 | def test_failed_attempts_recorded( | CODE |
| LOW⚡ | tests/test_login_protection.py | 297 | def test_config_hot_reload_raising_threshold( | CODE |
| LOW | tests/test_login_protection.py | 140 | def test_successful_login_after_failed_attempts( | CODE |
| LOW | tests/test_login_protection.py | 162 | def test_ip_blocking_triggers_and_blocks_correct_password( | CODE |
| LOW | tests/test_login_protection.py | 194 | def test_user_lockout_triggers_and_blocks_correct_password( | CODE |
| LOW | tests/test_login_protection.py | 224 | def test_user_lockout_auto_unlock( | CODE |
| LOW | tests/test_login_protection.py | 247 | def test_config_hot_reload_without_restart( | CODE |
| LOW | tests/test_login_protection.py | 342 | def test_ip_blocking_over_ssh( | CODE |
| LOW | tests/test_login_protection.py | 425 | def test_ip_blocking_over_ssh_unknown_username( | CODE |
| LOW | tests/test_login_protection.py | 499 | def test_admin_exempt_from_lockout( | CODE |
| LOW | tests/test_http_user_auth_ticket.py | 10 | def test_auth_password_success( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 21 | def _resolve_hosts_to_localhost(*hosts): | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 37 | def _make_sso_provider_config( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 205 | def _follow_oidc_login_redirects( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 254 | def test_oidc_cross_domain_cookie_and_return_url_domain( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 370 | def test_oidc_cookie_domain_flows( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 512 | def test_oidc_auth_rejects_invalid_state( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 560 | def test_oidc_auth_wrong_credentials( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 599 | def test_oidc_auto_create_user( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 639 | def test_oidc_auto_create_user_disabled( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 661 | def test_oidc_group_sync_with_role_mappings( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 754 | def test_oidc_group_sync_without_mappings( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 833 | def test_oidc_group_sync_removes_stale_roles( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1088 | def test_combined_access_and_admin( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1101 | def test_group_name_with_spaces( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1112 | def test_duplicate_group_names_dedup( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1124 | def test_multiple_groups_some_unmapped( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1137 | def test_mapping_by_group_id_object( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1149 | def test_mapping_by_id_and_name_mixed( | CODE |
| LOW | tests/test_http_user_auth_oidc.py | 1167 | def test_complex_objects_cross_dedup_and_spaces( | CODE |
| LOW | tests/test_ticket_requests.py | 69 | def test_self_service_disabled_by_default( | CODE |
| LOW | tests/test_ticket_requests.py | 89 | def test_self_service_auto_approve( | CODE |
| LOW | tests/test_ticket_requests.py | 145 | def test_self_service_pending_approval( | CODE |
| LOW | tests/test_ticket_requests.py | 203 | def test_activate_double_rejected( | CODE |
| LOW | tests/test_ticket_requests.py | 246 | def test_activate_pending_rejected( | CODE |
| LOW | tests/test_ticket_requests.py | 280 | def test_activate_target_gone( | CODE |
| LOW | tests/test_ticket_requests.py | 364 | def test_description_required( | CODE |
| LOW | tests/test_ticket_requests.py | 420 | def test_revoke_self_service_ticket( | CODE |
| LOW | tests/test_ticket_requests.py | 470 | def test_negative_duration_rejected( | CODE |
| LOW | tests/test_ticket_requests.py | 522 | def test_unsupported_uses_field_is_ignored( | CODE |
| LOW | tests/test_http_websocket.py | 69 | def test_logout_closes_connection( | CODE |
| LOW | tests/test_http_user_auth_password.py | 10 | def test_auth_password_success( | CODE |
| LOW | tests/test_api.py | 38 | def make_limited_admin_role_payload(**overrides): | CODE |
| LOW | tests/test_api.py | 851 | def _verify_all_openapi_ops_are_covered(): | CODE |
| LOW | tests/test_api.py | 1038 | def test_admin_api_permission_enforcement( | CODE |
| LOW | tests/test_vnc_user_auth_otp.py | 84 | def test_too_many_otp_disconnects( | CODE |
| 35 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deny.toml | 1 | # This template contains all of the possible sections and their default values | COMMENT |
| LOW | deny.toml | 21 | # `target_family = "unix"` configuration, that only having windows targets in | COMMENT |
| LOW | deny.toml | 41 | # is recommended to pass `--all-features` on the cmd line instead | COMMENT |
| LOW | deny.toml | 81 | # If this is true, then cargo deny will use the git executable to fetch advisory database. | COMMENT |
| LOW | deny.toml | 101 | # * all - Both lowest-version and simplest-path are used | COMMENT |
| LOW | deny.toml | 121 | # Wrapper crates can optionally be specified to allow the crate when it | COMMENT |
| LOW | deny.toml | 141 | # "rustls-tls-webpki-roots", | COMMENT |
| LOW | deny.toml | 161 | # ] | COMMENT |
| LOW | warpgate-rdp-ipc/src/lib.rs | 1 | //! Stdio IPC message types shared between Warpgate (`warpgate-protocol-rdp`) and its | COMMENT |
| LOW | warpgate-db-entities/src/Parameters.rs | 21 | pub enum PasswordLoginMode { | COMMENT |
| LOW | warpgate-database-protocols/src/error.rs | 21 | #[error("unexpected null; try decoding as an `Option`")] | COMMENT |
| LOW | warpgate-database-protocols/src/error.rs | 41 | #[error("error occurred while attempting to establish a TLS connection: {0}")] | COMMENT |
| LOW | warpgate-database-protocols/src/error.rs | 81 | /// because another task encountered too many errors while trying to open a new connection. | COMMENT |
| LOW | warpgate-database-protocols/src/lib.rs | 1 | #![allow(clippy::pedantic)] | COMMENT |
| LOW | warpgate-protocol-vnc/src/server/rfb.rs | 1 | //! Low-level RFB (VNC) and VeNCrypt handshake helpers. | COMMENT |
| LOW | warpgate-protocol-rdp/src/server/mod.rs | 1 | //! Native RDP server endpoint. | COMMENT |
| LOW | tests/test_mysql_user_auth_password.py | 1 | # import subprocess | COMMENT |
| LOW | tests/test_mysql_user_auth_password.py | 21 | # timeout, | COMMENT |
| LOW | tests/test_mysql_user_auth_password.py | 41 | # api_add_role_to_user(url, session, user["id"], role["id"]) | COMMENT |
| LOW | tests/test_mysql_user_auth_password.py | 61 | COMMENT | |
| LOW | tests/test_mysql_user_auth_password.py | 81 | # stdin=subprocess.PIPE, | COMMENT |
| LOW | tests/test_mysql_user_auth_password.py | 101 | # stdin=subprocess.PIPE, | COMMENT |
| LOW | tests/api_sdk/pyproject.toml | 61 | COMMENT | |
| LOW | warpgate-core/src/recordings/desktop.rs | 141 | /// it never grows per-event in the recorder's RAM. The full input events (and all pixels) | COMMENT |
| LOW | warpgate-core/src/rate_limiting/mod.rs | 1 | //! ## Hierarchy | COMMENT |
| LOW | .github/workflows/cargo-deny.yml | 21 | # The RDP helper has its own lockfile outside of cargo workspace | COMMENT |
| LOW | .github/workflows/codeql.yml | 1 | # For most projects, this workflow file will not need changing; you simply need | COMMENT |
| LOW | .github/workflows/scorecard.yml | 41 | - name: "Run analysis" | COMMENT |
| LOW | warpgate-rdp-helper/src/client.rs | 1 | //! Standalone RDP client helper for Warpgate. | COMMENT |
| LOW | warpgate-rdp-helper/src/server.rs | 1 | //! Standalone RDP **server** (viewer-facing) helper for Warpgate. | COMMENT |
| LOW | warpgate-rdp-helper/src/main.rs | 1 | //! Warpgate's standalone RDP helper — a single binary with two subcommands: | COMMENT |
| LOW | warpgate-protocol-http/src/lib.rs | 121 | // Set cookie domain to base host (e.g., ".warp.tavahealth.com") so it works for | COMMENT |
| LOW | warpgate-protocol-http/src/middleware/cookie_host.rs | 61 | // `Some(None)` → remove Domain attribute (localhost / IP) | COMMENT |
| LOW | helm/warpgate/Chart.yaml | 1 | apiVersion: v2 | COMMENT |
| LOW | helm/warpgate/Chart.yaml | 21 | # This is the version number of the application being deployed. This version number should be | COMMENT |
| LOW | helm/warpgate/values.yaml | 21 | fullnameOverride: "" | COMMENT |
| LOW | helm/warpgate/values.yaml | 161 | # kind: ServersTransport | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_role_expiry.py | 352 | # Create a second role | COMMENT |
| MEDIUM | tests/test_web_ssh.py | 66 | # Create a web SSH session | COMMENT |
| MEDIUM | tests/test_ticket_requests.py | 437 | # Create a ticket | COMMENT |
| MEDIUM | tests/test_json_logs.py | 28 | # Create a temporary file to capture log output | COMMENT |
| MEDIUM | tests/test_json_logs.py | 120 | # Create a temporary file to capture log output | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_login_protection.py | 269 | # Step 1: 3 failures below initial threshold of 5 → no lockout | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 278 | # Step 2: lower threshold to 2 via admin API (no restart) | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 282 | # Step 3: attempt N — total=4 in window, new threshold=2. | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 288 | # Step 4: attempt N+1 — check_user_locked now finds the lockout. | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 315 | # Step 1: 2 failures | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 320 | # Step 2: raise threshold to 10 | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 324 | # Step 3: 2 more failures (total 4 in window, threshold now 10) — must NOT lock | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/test_login_protection.py | 269 | # Step 1: 3 failures below initial threshold of 5 → no lockout | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 278 | # Step 2: lower threshold to 2 via admin API (no restart) | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 282 | # Step 3: attempt N — total=4 in window, new threshold=2. | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 288 | # Step 4: attempt N+1 — check_user_locked now finds the lockout. | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 315 | # Step 1: 2 failures | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 320 | # Step 2: raise threshold to 10 | COMMENT |
| LOW⚡ | tests/test_login_protection.py | 324 | # Step 3: 2 more failures (total 4 in window, threshold now 10) — must NOT lock | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_role_expiry.py | 18 | CODE | |
| LOW | tests/conftest.py | 29 | CODE | |
| LOW | tests/test_http_proto.py | 6 | CODE | |
| LOW | tests/test_http_user_auth_otp.py | 8 | CODE | |
| LOW | tests/test_http_basic.py | 8 | CODE | |
| LOW | tests/test_login_protection.py | 9 | CODE | |
| LOW | tests/test_http_user_auth_ticket.py | 6 | CODE | |
| LOW | tests/test_http_user_auth_logout.py | 6 | CODE | |
| LOW | tests/test_http_user_auth_oidc.py | 13 | CODE | |
| LOW | tests/test_ticket_requests.py | 6 | CODE | |
| LOW | tests/test_http_websocket.py | 14 | CODE | |
| LOW | tests/test_http_user_auth_password.py | 6 | CODE | |
| LOW | tests/test_api.py | 19 | CODE | |
| LOW | tests/test_http_redirects.py | 6 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | helm/warpgate/values.yaml | 71 | # If you are using config_overrides, ca, ssh keyds form secrets and external databse you can use emptyDir | COMMENT |
| MEDIUM | helm/warpgate/values.yaml | 168 | # Alternatively, you can use strings, which lets you use additional templating features: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | warpgate/src/listener_supervisor.rs | 267 | /// Watch the parent directories of the desired cert/key files (robust to | COMMENT |
| MEDIUM | warpgate/src/listener_supervisor.rs | 306 | /// Matched by file name to be robust across absolute/relative/symlinked paths | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 121 | CODE | |
| LOW | tests/test_rdp_web.py | 21 | CODE | |
| LOW | tests/util.py | 34 | CODE | |
| LOW | tests/util.py | 37 | CODE | |
| LOW | tests/test_web_ssh.py | 17 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/conftest.py | 675 | except Exception: | STRING |
| LOW | tests/test_vnc_user_auth_in_browser.py | 75 | except Exception as error: # noqa: BLE001 | CODE |
| LOW | tests/test_login_protection.py | 149 | except Exception: | CODE |
| LOW | tests/test_vnc_user_auth_otp_and_web.py | 88 | except Exception as error: # noqa: BLE001 | CODE |
| LOW | tests/test_json_logs.py | 72 | except Exception: | CODE |