Open-source telemetry dashboard. Supports UART, BLE, MQTT, Modbus, CAN Bus and more.
This report presents the forensic synthetic code analysis of Serial-Studio/Serial-Studio, a C++ project with 7,041 GitHub stars. SynthScan v2.0 examined 933,291 lines of code across 2244 source files, recording 2987 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 5.9 places this repository in the Low AI signal 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 2987 distinct pattern matches across 21 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⚡ | CMakeLists.txt | 217 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 226 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 228 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 315 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 317 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 327 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 331 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 333 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 351 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 360 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 362 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 403 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 405 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 411 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 417 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 419 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 429 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 438 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 440 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 446 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 451 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 453 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 473 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 478 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | CMakeLists.txt | 480 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 23 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 25 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 36 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 49 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 51 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 77 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 97 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 99 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 122 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 134 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 136 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 166 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 199 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 201 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 253 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 377 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | CMakeLists.txt | 500 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 34 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 39 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 41 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 57 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 65 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 67 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1051 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1056 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1058 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1183 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1185 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1192 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1197 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1199 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1417 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1419 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | app/CMakeLists.txt | 1424 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | app/CMakeLists.txt | 21 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| 912 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/rcc/ai/build_search_index.py | 222 | def harvest_templates_manifest(): | CODE |
| LOW⚡ | app/translations/translate_welcome_messages.py | 80 | def translate_welcome_message(source_text, target_language, context, lang_code): | CODE |
| LOW⚡ | app/translations/translate_welcome_messages.py | 160 | def translate_welcome_files_in_subdir(subdir, languages): | CODE |
| LOW | app/translations/llm_translate.py | 812 | def harvest_translation_memory(ts_root) -> list[tuple[str, str]]: | CODE |
| LOW | app/translations/llm_translate.py | 1038 | def _call_provider_with_retry( | CODE |
| LOW | app/translations/llm_translate.py | 1129 | def parse_numbered_translations( | CODE |
| LOW | app/translations/llm_translate.py | 1512 | def apply_capitalization_pattern( | CODE |
| LOW | app/translations/llm_translate.py | 1612 | def verify_capitalization_batch(entries, lang_code): | CODE |
| LOW | app/translations/llm_translate.py | 1946 | def verify_capitalization_ts_file(filename): | CODE |
| LOW | tests/conftest.py | 122 | def pytest_collection_modifyitems(config, items): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 63 | def test_manifest_has_exactly_the_expected_keys(updates): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 67 | def test_every_entry_has_the_required_fields(updates): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 73 | def test_all_entries_advertise_the_same_version(updates): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 79 | def test_download_urls_match_package_type_and_arch(updates): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 88 | def test_open_url_keys_have_no_direct_download(updates): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 94 | def test_direct_download_keys_do_not_shadow_with_open_url(updates): | CODE |
| LOW⚡ | tests/unit/test_updates_manifest.py | 101 | def test_changelog_present_everywhere(updates): | CODE |
| LOW⚡ | tests/security/test_access_control.py | 386 | def test_information_disclosure(tester): | CODE |
| LOW | tests/security/test_access_control.py | 178 | def test_command_authorization(tester): | CODE |
| LOW | tests/security/test_access_control.py | 267 | def test_configuration_tampering(tester): | CODE |
| LOW | tests/security/test_access_control.py | 329 | def test_project_manipulation(tester): | CODE |
| LOW | tests/security/test_access_control.py | 453 | def test_cross_client_interference(tester): | CODE |
| LOW | tests/security/conftest.py | 238 | def pytest_collection_modifyitems(config, items): | CODE |
| LOW | tests/security/test_exploit_techniques.py | 468 | def test_deserialization_attacks(exploiter): | CODE |
| LOW⚡ | tests/security/test_denial_of_service.py | 530 | def test_recursive_operations(tester): | CODE |
| LOW | tests/security/test_denial_of_service.py | 360 | def test_bandwidth_exhaustion(tester): | CODE |
| LOW | tests/security/test_denial_of_service.py | 453 | def test_fork_bomb_simulation(tester): | CODE |
| LOW | tests/security/test_denial_of_service.py | 490 | def test_amplification_attack(tester): | CODE |
| LOW | tests/security/test_api_security.py | 78 | def test_oversized_json_payload(self, security_client, vuln_tracker): | CODE |
| LOW | tests/security/test_api_security.py | 118 | def test_json_with_control_characters(self, security_client, vuln_tracker): | CODE |
| LOW | tests/security/test_api_security.py | 263 | def test_buffer_without_newline(self, check_server_alive, vuln_tracker): | CODE |
| LOW | tests/security/test_api_vulnerabilities.py | 78 | def test_json_parsing_exploits(tester): | CODE |
| LOW | tests/security/test_api_vulnerabilities.py | 364 | def test_connection_exhaustion(tester): | CODE |
| LOW | tests/security/test_api_vulnerabilities.py | 470 | def test_parameter_validation(tester, check_server_alive): | CODE |
| LOW⚡ | tests/security/test_api_vulnerabilities.py | 535 | def test_information_disclosure(tester): | CODE |
| LOW | tests/security/test_protocol_fuzzing.py | 432 | def test_protocol_violations_fuzz(fuzzer): | CODE |
| LOW | tests/security/test_protocol_fuzzing.py | 444 | def test_raw_message_type_fuzz(fuzzer): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 305 | def test_prototype_pollution_via_command(self, security_client, payload): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 326 | def test_prototype_pollution_in_raw_json(self, check_server_alive): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 478 | def test_null_byte_in_frame_delimiters(self, security_client, check_server_alive): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 867 | def test_rapid_checksum_algorithm_switching( | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 1217 | def test_integer_truncation_in_time_range( | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 1262 | def test_negative_port_numbers(self, security_client, check_server_alive): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 1495 | def test_error_message_analysis(self, security_client): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 2184 | def test_reflected_payload_in_title(self, security_client, payload): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 220 | def test_js_code_via_project_json(self, security_client, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 442 | def test_null_byte_path_truncation(self, security_client): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 461 | def test_null_byte_in_command_name(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 517 | def test_partial_json_then_valid(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 550 | def test_interleaved_binary_and_json(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 579 | def test_newline_injection_in_json_value(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 601 | def test_message_boundary_confusion(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 673 | def test_quadratic_blowup_duplicate_keys(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 715 | def test_sabotage_via_config_change(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 804 | def test_inject_json_command_as_frame(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 829 | def test_delimiter_injection_in_data(self, security_client, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 895 | def test_checksum_length_mismatch(self, security_client, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 945 | def test_rapid_framereader_recreation(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 988 | def test_project_reload_during_data_flow(self, check_server_alive): | CODE |
| LOW | tests/security/test_zero_day_adversarial.py | 1113 | def test_ansi_escape_via_raw_data(self, payload, check_server_alive): | CODE |
| 810 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | CMakeLists.txt | 1 | # | COMMENT |
| LOW | CMakeLists.txt | 21 | cmake_minimum_required(VERSION 3.20) | COMMENT |
| LOW | CMakeLists.txt | 41 | COMMENT | |
| LOW | CMakeLists.txt | 61 | # ENABLE_PGO=OFF (default) - Profile-Guided Optimization | COMMENT |
| LOW | CMakeLists.txt | 101 | # Commercial builds require valid API keys and license credentials: | COMMENT |
| LOW | CMakeLists.txt | 141 | # - PROJECT_VERSION_MAJOR: Major version (breaking changes) | COMMENT |
| LOW | CMakeLists.txt | 201 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| LOW | CMakeLists.txt | 221 | add_definitions(-DPROJECT_VERSION="${PROJECT_VERSION}") | COMMENT |
| LOW | CMakeLists.txt | 241 | # - Build fails if license is invalid, expired, or not activated | COMMENT |
| LOW | CMakeLists.txt | 321 | # - aarch64: 64-bit ARM processors (Apple Silicon, Raspberry Pi 4+) | COMMENT |
| LOW | CMakeLists.txt | 341 | # | COMMENT |
| LOW | CMakeLists.txt | 361 | # Compiler warnings configuration | COMMENT |
| LOW | CMakeLists.txt | 401 | endif() | COMMENT |
| LOW | CMakeLists.txt | 421 | # MSVC's debug STL ships with _ITERATOR_DEBUG_LEVEL=2 by default, which wraps every iterator | COMMENT |
| LOW | CMakeLists.txt | 441 | # | COMMENT |
| LOW | CMakeLists.txt | 461 | # - mdflib: MDF4/MF4 file format parser | COMMENT |
| LOW | CMakeLists.txt | 481 | # | COMMENT |
| LOW | app/CMakeLists.txt | 1 | # | COMMENT |
| LOW | app/CMakeLists.txt | 21 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| LOW | app/CMakeLists.txt | 41 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| LOW | app/CMakeLists.txt | 61 | set(CMAKE_AUTORCC ON) | COMMENT |
| LOW | app/CMakeLists.txt | 81 | # Qt6::Bluetooth - Bluetooth LE device discovery and communication | COMMENT |
| LOW | app/CMakeLists.txt | 161 | qt_policy(SET QTP0002 NEW) | COMMENT |
| LOW | app/CMakeLists.txt | 181 | # - MDF4/: MDF4 file playback (Pro feature) | COMMENT |
| LOW | app/CMakeLists.txt | 861 | #--------------------------------------------------------------------------------------------------- | COMMENT |
| LOW | app/CMakeLists.txt | 941 | # Platform-specific source files and resources | COMMENT |
| LOW | app/CMakeLists.txt | 1021 | set(HEADERS | COMMENT |
| LOW | app/CMakeLists.txt | 1041 | # - Languages: English, Spanish, Chinese, German, French, etc. | COMMENT |
| LOW | app/CMakeLists.txt | 1061 | # | COMMENT |
| LOW | app/CMakeLists.txt | 1141 | endif() | COMMENT |
| LOW | app/CMakeLists.txt | 1161 | # Why Linux only? | COMMENT |
| LOW | app/CMakeLists.txt | 1181 | endif() | COMMENT |
| LOW | app/CMakeLists.txt | 1201 | # Compiles QML files into a Qt Quick module with ahead-of-time compilation: | COMMENT |
| LOW | app/CMakeLists.txt | 1241 | # MiniAudio audio input library configuration (Pro only) | COMMENT |
| LOW | app/CMakeLists.txt | 1261 | # Windows: Uses WASAPI (built-in, no extra libs needed) | COMMENT |
| LOW | app/CMakeLists.txt | 1341 | else() | COMMENT |
| LOW | app/CMakeLists.txt | 1361 | # - MACOSX_BUNDLE=TRUE: Creates .app bundle (required for macOS apps) | COMMENT |
| LOW | app/CMakeLists.txt | 1441 | ) | COMMENT |
| LOW | app/CMakeLists.txt | 1461 | # BUNDLE: macOS .app bundles → install to top-level directory | COMMENT |
| LOW | app/CMakeLists.txt | 1481 | # Linux: | COMMENT |
| LOW | app/CMakeLists.txt | 1541 | OUTPUT_SCRIPT deploy_script | COMMENT |
| LOW | app/CMakeLists.txt | 1561 | # CPACK_PACKAGE_DESCRIPTION - README.md content | COMMENT |
| LOW | app/CMakeLists.txt | 1581 | # - No installer wizard (simple drag-and-drop) | COMMENT |
| LOW | app/rcc/scripts/painter/default_template.js | 1 | // Default painter template. | COMMENT |
| LOW | app/rcc/scripts/parser/js/batched_sensor_data.js | 61 | // Modify this based on your data format (JSON, CSV, binary, etc.) | COMMENT |
| LOW | app/rcc/scripts/transforms/js/logarithmic_db.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/ema.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/schmitt_trigger.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/moving_average.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/running_max.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/fahrenheit_to_celsius.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/rolling_rms.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/unwrap_angle.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/kalman_1d.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/map_range.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/thermistor_steinhart.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/degrees_to_radians.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/polynomial_2nd.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/round_decimals.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| LOW | app/rcc/scripts/transforms/js/adc_to_voltage.js | 1 | // 'value' is the live numeric reading for this dataset, | COMMENT |
| 526 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/security/test_protocol_fuzzing.py | 97 | b'{"type":"command","id":null,"command":"test"}\n', | CODE |
| HIGH | tests/security/test_zero_day_adversarial.py | 150 | "function parse(f){var a=[];while(true)a.push(new Array(1e6));" | CODE |
| HIGH | tests/security/test_zero_day_adversarial.py | 2065 | b'{"type":"batch","id":"x","commands":[null,null]}\n', | CODE |
| HIGH | tests/security/test_zero_day_adversarial.py | 2073 | b'{"type":"batch","id":"x","commands":[{"command":"api.getCommands"},42,"str",null,true]}\n', | CODE |
| HIGH | tests/security/test_zero_day_adversarial.py | 2121 | b'{"type":null,"id":"x","command":"api.getCommands"}\n', | CODE |
| HIGH⚡ | tests/integration/test_dataset_transforms.py | 265 | "var ema = null;\n" | CODE |
| HIGH⚡ | tests/integration/test_dataset_transforms.py | 267 | " ema = (ema === null) ? v : alpha * v + (1 - alpha) * ema;\n" | CODE |
| HIGH | tests/integration/test_session_export.py | 272 | # non-null) instead of QString(). | COMMENT |
| HIGH | tests/integration/test_image_view.py | 686 | # Payload is not a valid image — QImage::fromData will return null, | COMMENT |
| HIGH | tests/integration/test_image_view.py | 672 | (it is passed to QImage::fromData which returns null) without crashing.""" | STRING |
| HIGH | tests/integration/test_device_write.py | 195 | " if (typeof r !== 'object' || r === null) throw 'deviceWrite must return an object';\n" | CODE |
| HIGH | tests/integration/test_device_write.py | 426 | " if (info && typeof info.timestampMs === 'number') {\n" | CODE |
| HIGH | tests/integration/test_frame_parsing.py | 428 | values.push(data.groups[i].datasets[j].value); | CODE |
| HIGH | tests/integration/test_frame_parsing.py | 893 | values.push(data.groups[i].datasets[j].value); | CODE |
| HIGH | tests/integration/test_frame_parsing.py | 968 | values.push(data.groups[i].datasets[j].value); | CODE |
| HIGH | tests/integration/test_frame_parsing.py | 1047 | values.push(data.groups[i].datasets[j].value); | CODE |
| HIGH | tests/integration/test_frame_parsing.py | 1140 | values.push(data.groups[i].datasets[j].value); | CODE |
| HIGH⚡ | tests/integration/test_table_handles.py | 90 | var H = null; | CODE |
| HIGH⚡ | tests/integration/test_table_handles.py | 92 | if (H === null) H = tableHandleMany("DAQ", ["ch1","ch2","ch3","ch4"]); | CODE |
| HIGH⚡ | tests/utils/data_generator.py | 478 | '{"null": null}{"extra":"object"}', | STRING |
| HIGH⚡ | tests/utils/data_generator.py | 487 | '{"undefined": undefined}', | STRING |
| HIGH | tests/scripts/conftest.py | 100 | if (gen !== GEN || idx >= ORDER.length) return -1; | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 113 | if (def !== undefined) write(rec, def); | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 115 | ORDER.push(k); | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 120 | return rec ? read(rec) : undefined; | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 123 | if (v === undefined || v === null) return; | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 123 | if (v === undefined || v === null) return; | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 125 | if (rec && rec.computed) write(rec, v); | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 133 | for (var i = 0; i < regs.length; i++) out.push(tableHandle(t, regs[i])); | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 141 | if (v === undefined || v === null) return; | CODE |
| HIGH⚡ | tests/scripts/conftest.py | 141 | if (v === undefined || v === null) return; | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 68 | assert "writtenData.chop(writtenData.length() - boundedBytes);" in text | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 147 | assert "if (!data || data->data.isEmpty())" in frame_reader | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 188 | "if (widgetIdx < 0 || widgetIdx >= keys.size())", | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 189 | "if (eolIdx < 0 || eolIdx >= eolKeys.size())", | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 190 | "if (checksumId < 0 || checksumId >= checksums.size())", | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 191 | "if (idx < 0 || idx >= m_frameDetectionMethodsValues.size())", | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 192 | "if (widgetIdx < 0 || widgetIdx >= datasetWidgetKeys.size())", | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 193 | "if (plotIdx < 0 || plotIdx >= plotOptionKeys.size())", | CODE |
| HIGH⚡ | tests/scripts/test_cpp_regressions.py | 194 | "if (sampleIdx < 0 || sampleIdx >= m_fftSamples.size())", | CODE |
| HIGH | tests/scripts/test_cpp_regressions.py | 625 | r"if \(modified && m_groups\.empty\(\)[\s\S]*?" | CODE |
| HIGH | tests/scripts/test_cpp_regressions.py | 866 | "if (spec.operationMode == SerialStudio::QuickPlot && spec.finishSequences.isEmpty())" | CODE |
| HIGH | tests/scripts/test_table_handles.py | 188 | a.push(tableGet('A', CH[i])); | CODE |
| HIGH | tests/scripts/test_table_handles.py | 189 | b.push(tableGet('B', CH[i])); | CODE |
| HIGH | scripts/generate-sdk.py | 117 | lines.append(" bytes.push(parseInt(hex.substr(i, 2), 16));") | CODE |
| HIGH | scripts/generate-sdk.py | 123 | lines.append(" out.push(s.charCodeAt(j) & 0xff);") | CODE |
| HIGH | scripts/code-verify.py | 2146 | `for (int i = 0; i < kMaxIterations && cond; ++i)` so the bound is | CODE |
| HIGH | scripts/code_verify_rules.py | 2775 | # `start < line.length()`. The bare-identifier form covers member fields | COMMENT |
| HIGH | scripts/code_verify_rules.py | 1556 | "prefer `for (int i = 0; i < kMax && cond; ++i)` " | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/rcc/ai/build_search_index.py | 258 | except Exception: | CODE |
| LOW⚡ | app/translations/translate_welcome_messages.py | 207 | except Exception as e: | CODE |
| MEDIUM | app/translations/translate_welcome_messages.py | 238 | print(f"Error: unknown language code '{args.lang}'. Available: {available}") | CODE |
| MEDIUM | app/translations/translation_manager.py | 218 | print(f"Error: {ts_dir} directory does not exist.") | CODE |
| LOW | app/translations/llm_translate.py | 1058 | except Exception as exc: | CODE |
| LOW | app/translations/llm_translate.py | 1082 | except Exception: | CODE |
| LOW | app/translations/llm_translate.py | 1818 | except Exception as e: | CODE |
| LOW | app/translations/llm_translate.py | 2634 | except Exception as e: | CODE |
| LOW | app/translations/llm_translate.py | 2651 | except Exception as e: | CODE |
| LOW | tests/conftest.py | 57 | except Exception: | CODE |
| LOW | tests/conftest.py | 83 | except Exception: | CODE |
| LOW | tests/conftest.py | 85 | except Exception: | CODE |
| LOW⚡ | tests/security/test_access_control.py | 382 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 96 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 135 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 174 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 258 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 302 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 325 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 358 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 416 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 443 | except Exception as e: | CODE |
| LOW | tests/security/test_access_control.py | 490 | except Exception as e: | CODE |
| LOW | tests/security/conftest.py | 116 | except Exception: | CODE |
| LOW | tests/security/test_exploit_techniques.py | 387 | except Exception as e: | CODE |
| LOW | tests/security/test_exploit_techniques.py | 502 | except Exception as e: | CODE |
| LOW | tests/security/test_exploit_techniques.py | 559 | except Exception as e: | CODE |
| LOW | tests/security/test_exploit_techniques.py | 574 | except Exception as e: | CODE |
| LOW | tests/security/test_exploit_techniques.py | 607 | except Exception as e: | CODE |
| LOW | tests/security/test_exploit_techniques.py | 677 | except Exception as e: | CODE |
| MEDIUM | tests/security/test_denial_of_service.py | 166 | def flood_thread(): | CODE |
| LOW⚡ | tests/security/test_denial_of_service.py | 522 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 120 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 242 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 268 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 401 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 445 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 482 | except Exception as e: | CODE |
| LOW | tests/security/test_denial_of_service.py | 554 | except Exception as e: | CODE |
| LOW | tests/security/test_api_security.py | 186 | except Exception as e: | CODE |
| LOW | tests/security/test_api_security.py | 253 | except Exception: | CODE |
| LOW | tests/security/test_api_security.py | 456 | except Exception as e: | CODE |
| LOW | tests/security/test_api_security.py | 597 | except Exception: | CODE |
| LOW | tests/security/test_api_security.py | 638 | except Exception as e: | CODE |
| LOW | tests/security/test_protocol_fuzzing.py | 74 | except Exception as e: | CODE |
| LOW | tests/security/test_protocol_fuzzing.py | 199 | except Exception as e: | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 952 | def reconfigure_rapidly(thread_id): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 995 | def send_data(): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 1018 | def reload_project(): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 1833 | def config_changer(): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 1852 | def data_sender(): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 1875 | def status_querier(): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 1897 | def project_loader(): | CODE |
| MEDIUM | tests/security/test_zero_day_adversarial.py | 1933 | def export_toggler(): | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 263 | except Exception: | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 314 | except Exception: | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 323 | except Exception: | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 488 | except Exception: | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 497 | except Exception: | CODE |
| LOW⚡ | tests/security/test_zero_day_adversarial.py | 627 | except Exception: | CODE |
| 151 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/integration/test_frame_parsing.py | 116 | # Step 1: Set delimiters and checksum | COMMENT |
| LOW⚡ | tests/integration/test_frame_parsing.py | 125 | # Step 2: Set frame detection mode | COMMENT |
| LOW⚡ | tests/integration/test_frame_parsing.py | 212 | # Step 1: Set delimiters and checksum | COMMENT |
| LOW⚡ | tests/integration/test_frame_parsing.py | 221 | # Step 2: Set frame detection mode | COMMENT |
| LOW⚡ | examples/CAN Bus Example/README.md | 32 | ### Step 1: Connect to CAN Bus | COMMENT |
| LOW⚡ | examples/CAN Bus Example/README.md | 35 | ### Step 2: Import DBC Database | COMMENT |
| LOW⚡ | examples/CAN Bus Example/README.md | 41 | ### Step 3: Review the Preview | COMMENT |
| LOW⚡ | examples/CAN Bus Example/README.md | 50 | ### Step 4: Save the Project | COMMENT |
| LOW⚡ | examples/CAN Bus Example/README.md | 60 | ### Step 5: View the Dashboard | COMMENT |
| LOW⚡ | examples/CAN Bus Example/README.md | 70 | ### Step 6: Customize (Optional) | COMMENT |
| LOW | examples/System Monitor/README.md | 56 | ### Step 1: install dependencies | COMMENT |
| LOW | examples/System Monitor/README.md | 67 | ### Step 2: configure Serial Studio | COMMENT |
| LOW | examples/MCP Client/README.md | 212 | #### Step 1: Enable Serial Studio API Server | COMMENT |
| LOW | examples/MCP Client/README.md | 219 | #### Step 2: Locate the Bridge Script | COMMENT |
| LOW | examples/MCP Client/README.md | 244 | #### Step 3: Configure Claude Desktop | COMMENT |
| LOW | examples/MCP Client/README.md | 313 | #### Step 4: Restart Claude Desktop | COMMENT |
| LOW | examples/MCP Client/README.md | 320 | #### Step 5: Verify Integration | COMMENT |
| LOW | examples/MCP Client/README.md | 334 | #### Step 6: Use It! | COMMENT |
| LOW | examples/Camera Telemetry/README.md | 49 | ### Step 1: install dependencies | COMMENT |
| LOW | examples/Camera Telemetry/README.md | 55 | ### Step 2: start the script | COMMENT |
| LOW | examples/Camera Telemetry/README.md | 78 | ### Step 3: configure Serial Studio | COMMENT |
| LOW | doc/help/Project-Editor.md | 145 | ### Step 1: create a new project | COMMENT |
| LOW | doc/help/Project-Editor.md | 152 | ### Step 2: configure frame parsing | COMMENT |
| LOW | doc/help/Project-Editor.md | 184 | ### Step 3: add groups | COMMENT |
| LOW | doc/help/Project-Editor.md | 206 | ### Step 4: add datasets | COMMENT |
| LOW | doc/help/Project-Editor.md | 252 | ### Step 5: add actions (optional) | COMMENT |
| LOW | doc/help/Project-Editor.md | 280 | ### Step 6: add sources (multi-device projects) | COMMENT |
| LOW | doc/help/Project-Editor.md | 294 | ### Step 7: write a frame parser script (optional) | COMMENT |
| LOW | doc/help/Getting-Started.md | 143 | ### Step 1: prepare your device | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 168 | ### Step 2: configure Serial Studio | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 176 | ### Step 3: connect | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 186 | ### Step 4: explore the dashboard | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 196 | ### Step 1: open the Project Editor | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 200 | ### Step 2: create a project | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 208 | ### Step 3: add groups and datasets | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 215 | ### Step 4: save and load | COMMENT |
| LOW⚡ | doc/help/Getting-Started.md | 221 | ### Step 5: connect | COMMENT |
| LOW⚡ | doc/help/API-Reference.md | 458 | # Step 1: Connect to Arduino | COMMENT |
| LOW⚡ | doc/help/API-Reference.md | 465 | # Step 2: Enable CSV logging | COMMENT |
| LOW⚡ | doc/help/API-Reference.md | 470 | # Step 3: Stop recording | COMMENT |
| LOW⚡ | doc/help/Use-Cases.md | 634 | ### Step 1: Identify Your Data Sources | COMMENT |
| LOW⚡ | doc/help/Use-Cases.md | 639 | ### Step 2: Choose Your Hardware | COMMENT |
| LOW⚡ | doc/help/Use-Cases.md | 645 | ### Step 3: Select Serial Studio Mode | COMMENT |
| LOW⚡ | doc/help/Use-Cases.md | 652 | ### Step 4: Prototype and Test | COMMENT |
| LOW⚡ | doc/help/Use-Cases.md | 658 | ### Step 5: Deploy and Monitor | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/translations/translation_manager.py | 155 | CODE | |
| LOW | app/translations/llm_translate.py | 1038 | CODE | |
| LOW | app/translations/llm_translate.py | 1465 | CODE | |
| LOW | app/translations/llm_translate.py | 1897 | CODE | |
| LOW | app/translations/llm_translate.py | 1946 | CODE | |
| LOW | app/translations/llm_translate.py | 2472 | CODE | |
| LOW | tests/conftest.py | 64 | CODE | |
| LOW | tests/conftest.py | 73 | CODE | |
| LOW | tests/security/test_access_control.py | 47 | CODE | |
| LOW | tests/security/test_access_control.py | 329 | CODE | |
| LOW | tests/security/test_access_control.py | 386 | CODE | |
| LOW | tests/security/test_exploit_techniques.py | 58 | CODE | |
| LOW | tests/security/test_exploit_techniques.py | 67 | CODE | |
| LOW | tests/security/test_denial_of_service.py | 155 | CODE | |
| LOW | tests/security/test_denial_of_service.py | 453 | CODE | |
| LOW | tests/security/test_denial_of_service.py | 530 | CODE | |
| LOW | tests/security/test_denial_of_service.py | 166 | CODE | |
| LOW | tests/security/test_api_security.py | 263 | CODE | |
| LOW | tests/security/test_api_security.py | 489 | CODE | |
| LOW | tests/security/test_api_vulnerabilities.py | 78 | CODE | |
| LOW | tests/security/test_api_vulnerabilities.py | 178 | CODE | |
| LOW | tests/security/test_api_vulnerabilities.py | 318 | CODE | |
| LOW | tests/security/test_api_vulnerabilities.py | 424 | CODE | |
| LOW | tests/security/test_api_vulnerabilities.py | 535 | CODE | |
| LOW | tests/security/test_api_vulnerabilities.py | 594 | CODE | |
| LOW | tests/security/test_protocol_fuzzing.py | 42 | CODE | |
| LOW | tests/security/test_protocol_fuzzing.py | 83 | CODE | |
| LOW | tests/security/test_zero_day_adversarial.py | 61 | CODE | |
| LOW | tests/security/test_zero_day_adversarial.py | 1294 | CODE | |
| LOW | tests/security/test_zero_day_adversarial.py | 1344 | CODE | |
| LOW | tests/security/weaponized_exploits.py | 41 | CODE | |
| LOW | tests/security/weaponized_exploits.py | 170 | CODE | |
| LOW | tests/security/weaponized_exploits.py | 331 | CODE | |
| LOW | tests/security/weaponized_exploits.py | 179 | CODE | |
| LOW | tests/integration/conftest.py | 74 | CODE | |
| LOW | tests/integration/conftest.py | 90 | CODE | |
| LOW | tests/integration/test_driver_api_comprehensive.py | 24 | CODE | |
| LOW | tests/integration/test_driver_api_comprehensive.py | 278 | CODE | |
| LOW | tests/integration/test_driver_api_comprehensive.py | 368 | CODE | |
| LOW | tests/integration/test_driver_api_comprehensive.py | 599 | CODE | |
| LOW | tests/utils/device_simulator.py | 92 | CODE | |
| LOW | tests/utils/device_simulator.py | 112 | CODE | |
| LOW | tests/utils/device_simulator.py | 116 | CODE | |
| LOW | tests/utils/data_generator.py | 89 | CODE | |
| LOW | tests/utils/data_generator.py | 255 | CODE | |
| LOW | tests/manual/api_enrichment_check.py | 32 | CODE | |
| LOW | tests/benchmarks/big_db_test/big_db_test.py | 257 | CODE | |
| LOW | examples/Protobuf Example/sensor_simulator.py | 165 | CODE | |
| LOW | examples/CAN Bus Example/ecu_simulator.py | 1103 | CODE | |
| LOW | examples/CAN Bus Example/ecu_simulator.py | 1174 | CODE | |
| LOW | examples/CAN Bus Example/ecu_simulator.py | 815 | CODE | |
| LOW | examples/CAN Bus Example/ecu_simulator.py | 1007 | CODE | |
| LOW | examples/RC Plane Simulator/rc_plane_simulator.py | 577 | CODE | |
| LOW | examples/RC Plane Simulator/rc_plane_simulator.py | 176 | CODE | |
| LOW | examples/Vibration Test Rig/vibration_test_rig.py | 56 | CODE | |
| LOW | examples/API Test/test_api.py | 771 | CODE | |
| LOW | examples/API Test/test_api.py | 1088 | CODE | |
| LOW | examples/API Test/test_api.py | 1270 | CODE | |
| LOW | examples/API Test/test_api.py | 277 | CODE | |
| LOW | examples/API Test/test_api.py | 311 | CODE | |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/rcc/ai/build_search_index.py | 24 | CODE | |
| LOW | tests/security/conftest.py | 18 | CODE | |
| LOW | tests/security/test_exploit_techniques.py | 28 | CODE | |
| LOW | tests/security/test_exploit_techniques.py | 30 | CODE | |
| LOW | tests/security/test_denial_of_service.py | 28 | CODE | |
| LOW | tests/security/test_protocol_fuzzing.py | 22 | CODE | |
| LOW | tests/security/test_protocol_fuzzing.py | 25 | CODE | |
| LOW | tests/security/test_protocol_fuzzing.py | 25 | CODE | |
| LOW | tests/security/test_zero_day_adversarial.py | 40 | CODE | |
| LOW | tests/security/test_zero_day_adversarial.py | 45 | CODE | |
| LOW | tests/security/test_zero_day_adversarial.py | 46 | CODE | |
| LOW | tests/security/weaponized_exploits.py | 24 | CODE | |
| LOW | tests/integration/test_licensing_tiers.py | 17 | CODE | |
| LOW | tests/integration/test_licensing_tiers.py | 18 | CODE | |
| LOW | tests/integration/test_licensing.py | 20 | CODE | |
| LOW | tests/integration/test_data_tables.py | 12 | CODE | |
| LOW | tests/integration/test_data_tables.py | 14 | CODE | |
| LOW | tests/integration/test_script_api_call.py | 19 | CODE | |
| LOW | tests/integration/test_source_configure.py | 25 | CODE | |
| LOW | tests/integration/conftest.py | 10 | CODE | |
| LOW | tests/integration/conftest.py | 11 | CODE | |
| LOW | tests/integration/test_csv_parsing_verified.py | 13 | CODE | |
| LOW | tests/integration/test_csv_parsing_verified.py | 16 | CODE | |
| LOW | tests/integration/test_painter_widget.py | 16 | CODE | |
| LOW | tests/integration/test_app_state.py | 21 | CODE | |
| LOW | tests/integration/test_csv_export.py | 11 | CODE | |
| LOW | tests/integration/test_csv_export.py | 16 | CODE | |
| LOW | tests/integration/test_batch_api.py | 14 | CODE | |
| LOW | tests/integration/test_dataset_transforms.py | 22 | CODE | |
| LOW | tests/integration/test_fuzzy.py | 13 | CODE | |
| LOW | tests/integration/test_image_view.py | 29 | CODE | |
| LOW | tests/integration/test_image_view.py | 29 | CODE | |
| LOW | tests/integration/test_device_write.py | 30 | CODE | |
| LOW | tests/integration/test_output_widgets.py | 22 | CODE | |
| LOW | tests/integration/test_project_configuration.py | 10 | CODE | |
| LOW | tests/integration/test_multi_source.py | 16 | CODE | |
| LOW | tests/integration/test_mcp.py | 18 | CODE | |
| LOW | tests/utils/validators.py | 13 | CODE | |
| LOW | tests/utils/validators.py | 14 | CODE | |
| LOW | tests/utils/__init__.py | 10 | CODE | |
| LOW | tests/utils/__init__.py | 10 | CODE | |
| LOW | tests/utils/__init__.py | 11 | CODE | |
| LOW | tests/utils/__init__.py | 12 | CODE | |
| LOW | tests/utils/__init__.py | 12 | CODE | |
| LOW | tests/utils/__init__.py | 13 | CODE | |
| LOW | tests/utils/__init__.py | 13 | CODE | |
| LOW | tests/utils/__init__.py | 14 | CODE | |
| LOW | tests/utils/__init__.py | 14 | CODE | |
| LOW | tests/utils/__init__.py | 14 | CODE | |
| LOW | tests/utils/__init__.py | 15 | CODE | |
| LOW | tests/utils/__init__.py | 15 | CODE | |
| LOW | tests/utils/__init__.py | 15 | CODE | |
| LOW | tests/utils/__init__.py | 15 | CODE | |
| LOW | tests/utils/virtual_serial.py | 12 | CODE | |
| LOW | tests/utils/data_generator.py | 15 | CODE | |
| LOW | tests/utils/api_client.py | 14 | CODE | |
| LOW | tests/manual/api_enrichment_check.py | 13 | CODE | |
| LOW | tests/benchmarks/big_db_test/big_db_test.py | 58 | CODE | |
| LOW | tests/scripts/test_csv2wav.py | 19 | CODE | |
| LOW | tests/scripts/test_table_handles.py | 12 | CODE | |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/utils/validators.py | 20 | Validate frame has correct structure. Args: frame: Frame dict from Serial Studio expected_grou | STRING |
| HIGH | tests/utils/validators.py | 62 | Validate CSV export file. Args: csv_path: Path to CSV file min_rows: Minimum expected rows (ex | STRING |
| HIGH | tests/utils/validators.py | 115 | Validate project JSON file. Args: project_path: Path to .json project file Returns: True | STRING |
| HIGH | tests/utils/validators.py | 146 | Validate checksum matches data. Args: data: Payload bytes checksum_value: Expected checksum va | STRING |
| HIGH | tests/utils/validators.py | 179 | Validate export file can be opened and read. Args: export_path: Path to export file file_type: | STRING |
| HIGH | tests/utils/data_generator.py | 263 | Wrap payload with delimiters and optional binary checksum. IMPORTANT: Both DeviceSendsJSON and Project | STRING |
| HIGH | tests/utils/api_client.py | 127 | Send a command and return the result. Args: command: Command name (e.g., "io.getStatus") | STRING |
| HIGH | tests/utils/api_client.py | 172 | Send batch of commands. Args: commands: List of dicts with "command" and optional "params" | STRING |
| HIGH | tests/scripts/conftest.py | 21 | Execute a parser script's parse() function via Node.js. The frame_input is serialised as JSON and injected dir | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/security/test_access_control.py | 378 | # Check if it's properly sanitized | COMMENT |
| LOW | tests/security/test_access_control.py | 428 | # Check if error reveals internal details | COMMENT |
| LOW | tests/security/test_exploit_techniques.py | 91 | # Check if server crashed | COMMENT |
| LOW | tests/security/test_exploit_techniques.py | 295 | # Check if server is confused | COMMENT |
| LOW | tests/security/test_exploit_techniques.py | 390 | # Check if server still accepts new connections | COMMENT |
| LOW | tests/security/test_exploit_techniques.py | 428 | # Check if server is still responsive | COMMENT |
| LOW | tests/security/test_exploit_techniques.py | 637 | # Check if server returned error response | COMMENT |
| LOW | tests/security/test_denial_of_service.py | 333 | # Check if server times out slow connections | COMMENT |
| LOW | tests/security/test_denial_of_service.py | 393 | # Check if server is still responsive | COMMENT |
| LOW | tests/security/test_api_security.py | 368 | # Check if rate limiting is working | COMMENT |
| LOW | tests/security/test_api_security.py | 407 | # Check if server returned an error response | COMMENT |
| LOW | tests/security/test_api_vulnerabilities.py | 235 | # Check if response leaks memory addresses | COMMENT |
| LOW | tests/security/test_api_vulnerabilities.py | 267 | # Check if server is still responsive | COMMENT |
| LOW | tests/security/test_api_vulnerabilities.py | 332 | # Check if server rejected the batch (error dict returned) | COMMENT |
| LOW⚡ | tests/security/test_api_vulnerabilities.py | 529 | # Check if extra params are silently ignored or cause issues | COMMENT |
| LOW⚡ | tests/security/test_api_vulnerabilities.py | 545 | # Check if error reveals internal paths, versions, etc. | COMMENT |
| LOW | tests/security/test_api_vulnerabilities.py | 655 | # Check if server is running | COMMENT |
| LOW | tests/security/run_all_security_tests.sh | 24 | # Check if Serial Studio is running | COMMENT |
| LOW | tests/security/test_zero_day_adversarial.py | 376 | # Check if path traversal succeeded | COMMENT |
| LOW | tests/security/weaponized_exploits.py | 230 | # Check if server crashed | COMMENT |
| LOW | tests/security/weaponized_exploits.py | 364 | # Check if injection executed (unlikely but worth checking) | COMMENT |
| LOW | examples/Modbus PLC Simulator/plc_simulator.py | 682 | # Check if shutdown complete | COMMENT |
| LOW | lib/KissFFT/test/kissfft-testsuite.sh | 236 | # Return result | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/security/test_exploit_techniques.py | 589 | # Create a message with extreme redundancy | COMMENT |
| MEDIUM⚡ | tests/security/test_denial_of_service.py | 539 | # Create a project that references itself | COMMENT |
| MEDIUM | tests/integration/test_project_configuration.py | 297 | # Define a simple JavaScript parser | STRING |
| MEDIUM⚡ | examples/CAN Bus Example/ecu_simulator.py | 684 | # Create a realistic driving pattern: accelerate, cruise, brake, repeat | COMMENT |
| MEDIUM | .github/workflows/ci.yml | 7 | # This file is dual-licensed: | COMMENT |
| MEDIUM | lib/KissFFT/test/testkiss.py | 3 | # This file is part of KISS FFT - https://github.com/mborgerding/kissfft | COMMENT |
| MEDIUM | lib/KissFFT/test/kissfft-testsuite.sh | 7 | # This file is part of KISS FFT - https://github.com/mborgerding/kissfft | COMMENT |
| MEDIUM | lib/QSimpleUpdater/sanitize-commit.sh | 34 | # Create a temp file with the list of tracked files | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | lib/mdflib/docs/manual/html/jquery.js | 67 | set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value | CODE |
| CRITICAL | lib/mdflib/docs/manual/html/jquery.js | 107 | )&&(t.left+=l+i+h):0<r&&(0<(o=t.left-e.collisionPosition.marginLeft+l+i+h-o)||D(o)<r)&&(t.left+=l+i+h)},top:function(t,e | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/rcc/ai/skills/tool_discovery.md | 60 | ## Semantic doc search (RAG) | COMMENT |
| MEDIUM⚡ | app/translations/llm_translate.py | 120 | # paraphrase. gpt-5 hallucinates terminology in our experience. | COMMENT |
| MEDIUM | app/translations/llm_translate.py | 50 | # from the same .ts file are injected as few-shot examples per batch. | COMMENT |
| MEDIUM | app/translations/llm_translate.py | 799 | # entries from the same target .ts file and inject them as few-shot examples. | COMMENT |
| MEDIUM | app/translations/llm_translate.py | 801 | # context window. MAX_TM_SOURCE_LEN keeps a single huge paragraph from | COMMENT |
| MEDIUM | app/translations/llm_translate.py | 1187 | # include them as few-shot examples — anchors terminology choices. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/rcc/scripts/transforms/js/median_filter.js | 10 | // robust than moving average at rejecting outlier spikes (salt and | COMMENT |
| MEDIUM | app/translations/llm_translate.py | 1180 | # Build the domain-context block first — it's the highest-leverage section. | COMMENT |
| LOW | tests/integration/test_workspaces.py | 748 | # is overkill -- just add another group, which is enough to fire the merge). | COMMENT |
| MEDIUM⚡ | tests/integration/test_table_handles.py | 88 | # the table store is built, so it is robust regardless of script-vs-store load order. | COMMENT |
| MEDIUM⚡ | tests/scripts/conftest.py | 80 | # Data-table handle API contract harness | COMMENT |
| LOW | lib/hidapi/testgui/copy_to_bundle.sh | 84 | # necessary. If ../libtool not available, just use cp to do the copy, but | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/integration/test_dual_serial.py | 0 | return true when connected to a commercial build of serial studio. | STRING |
| HIGH | tests/integration/test_app_state.py | 0 | return true when connected to a commercial build of serial studio. | STRING |
| HIGH | tests/integration/test_multi_source.py | 0 | return true when connected to a commercial build of serial studio. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/integration/test_frame_parsing.py | 116 | # Step 1: Set delimiters and checksum | COMMENT |
| LOW⚡ | tests/integration/test_frame_parsing.py | 125 | # Step 2: Set frame detection mode | COMMENT |
| LOW⚡ | tests/integration/test_frame_parsing.py | 212 | # Step 1: Set delimiters and checksum | COMMENT |
| LOW⚡ | tests/integration/test_frame_parsing.py | 221 | # Step 2: Set frame detection mode | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration/test_lua_script_engine.py | 90 | def _setup_lua_project(api_client, lua_code: str, dataset_titles=None) -> None: | CODE |
| LOW | tests/integration/test_dataset_transforms.py | 72 | def _set_transform(api_client, group_id: int, dataset_id: int, code: str) -> None: | CODE |
| LOW | tests/integration/test_device_write.py | 129 | def _set_transform(api_client, group_id: int, dataset_id: int, code: str) -> None: | CODE |
| LOW | tests/utils/__init__.py | 22 | __all__ = [ | CODE |
| LOW | tests/utils/api_client.py | 229 | def set_bus_type(self, bus_type: str) -> None: | CODE |
| LOW | tests/utils/api_client.py | 329 | def set_dashboard_fps(self, fps: int) -> None: | CODE |
| LOW | tests/utils/api_client.py | 340 | def set_dashboard_time_range(self, seconds: float) -> None: | CODE |
| LOW | tests/utils/api_client.py | 369 | def set_operation_mode(self, mode: str) -> None: | CODE |
| LOW | tests/utils/api_client.py | 746 | def set_dataset_options(self, group_id: int, dataset_id: int, options: int) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/code-verify.py | 1076 | # AI-narration patterns — phrases and shapes that ship in AI-generated code | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/integration/test_output_widgets.py | 55 | CODE | |
| LOW | examples/LTE modem/lte_serial.py | 34 | CODE | |
| LOW | examples/LTE modem/lte_udp.py | 34 | CODE | |
| LOW | examples/LTE modem/lte_mqtt.py | 35 | CODE | |
| LOW | examples/MCP Client/client.py | 70 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/integration/test_licensing.py | 199 | dummy_key = "00000000-0000-0000-0000-000000000000" | CODE |
| LOW⚡ | tests/integration/test_licensing.py | 200 | api_client.command("licensing.setLicense", {"licenseKey": dummy_key}) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/QSimpleUpdater/sanitize-commit.sh | 18 | # Usage: | COMMENT |