An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
This report summarizes scanner evidence for rustdesk/rustdesk, a Rust project with 127,651 GitHub stars. SynthScan examined 310,854 lines of code across 773 source files, recording 450 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 2.1 (Low 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.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 323 finding(s).
Are imports declared and package/API names verified? 17 finding(s).
Are wrappers, guards, and repeated structures necessary? 145 finding(s).
Which changes need focused human review? 450 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 450 distinct pattern matches across 16 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 |
|---|---|---|---|---|
| MEDIUM | res/audits.py | 153 | print(f"Error: HTTP {response.status_code} - {response.text}") | CODE |
| MEDIUM | res/audits.py | 159 | print(f"Error: {response_json['error']}") | CODE |
| MEDIUM⚡ | res/ab.py | 570 | print("Error: --ab-name is required for add-ab command") | CODE |
| MEDIUM⚡ | res/ab.py | 579 | print("Error: --ab-name or --ab-guid is required for this command") | CODE |
| MEDIUM⚡ | res/ab.py | 583 | print("Error: Cannot specify both --ab-name and --ab-guid") | CODE |
| MEDIUM⚡ | res/ab.py | 593 | print(f"Error: Address book '{args.ab_name}' not found") | CODE |
| MEDIUM⚡ | res/ab.py | 608 | print("Error: --ab-name or --ab-guid is required for this command") | CODE |
| MEDIUM⚡ | res/ab.py | 612 | print("Error: Cannot specify both --ab-name and --ab-guid") | CODE |
| MEDIUM⚡ | res/ab.py | 622 | print(f"Error: Address book '{args.ab_name}' not found") | CODE |
| MEDIUM⚡ | res/ab.py | 704 | print("Error: --tag-name is required for add-tag command") | CODE |
| MEDIUM⚡ | res/ab.py | 712 | print("Error: --tag-name is required for update-tag command") | CODE |
| MEDIUM⚡ | res/ab.py | 720 | print("Error: --tag-name is required for delete-tag command") | CODE |
| MEDIUM⚡ | res/ab.py | 732 | print("Error: --rule-permission is required for add-rule command") | CODE |
| MEDIUM⚡ | res/ab.py | 738 | print("Error: Cannot specify both --rule-user and --rule-group") | CODE |
| MEDIUM⚡ | res/ab.py | 745 | print("Error: Must specify --rule-type=everyone, --rule-user, or --rule-group") | CODE |
| MEDIUM⚡ | res/ab.py | 752 | print("Error: --rule-user is required when rule-type=user") | CODE |
| MEDIUM⚡ | res/ab.py | 755 | print("Error: --rule-group is required when rule-type=group") | CODE |
| MEDIUM⚡ | res/ab.py | 758 | print("Error: Cannot specify --rule-group when rule-type=user") | CODE |
| MEDIUM⚡ | res/ab.py | 761 | print("Error: Cannot specify --rule-user when rule-type=group") | CODE |
| MEDIUM⚡ | res/ab.py | 764 | print("Error: Cannot specify --rule-user or --rule-group when rule-type=everyone") | CODE |
| MEDIUM⚡ | res/ab.py | 772 | print("Error: --rule-guid is required for update-rule command") | CODE |
| MEDIUM⚡ | res/ab.py | 775 | print("Error: --rule-permission is required for update-rule command") | CODE |
| MEDIUM⚡ | res/ab.py | 783 | print("Error: --rule-guid is required for delete-rule command") | CODE |
| MEDIUM | res/ab.py | 44 | print(f"Error: HTTP {response.status_code} - {response.text}") | CODE |
| MEDIUM | res/ab.py | 49 | print(f"Error: {response_json['error']}") | CODE |
| MEDIUM | res/ab.py | 96 | print(f"Error: HTTP {response.status_code} - {response.text}") | CODE |
| MEDIUM | res/ab.py | 101 | print(f"Error: {response_json['error']}") | CODE |
| MEDIUM | res/ab.py | 135 | print(f"Error: HTTP {response.status_code} - {response.text}") | CODE |
| MEDIUM | res/ab.py | 141 | print(f"Error: {response_json['error']}") | CODE |
| MEDIUM | res/ab.py | 413 | print(f"Error: HTTP {response.status_code} - {response.text}") | CODE |
| MEDIUM | res/ab.py | 418 | print(f"Error: {response_json['error']}") | CODE |
| MEDIUM | res/ab.py | 634 | print("Error: --peer-id is required for add-peer command") | CODE |
| MEDIUM | res/ab.py | 663 | print("Error: --peer-id is required for update-peer command") | CODE |
| MEDIUM | res/ab.py | 692 | print("Error: --peer-id is required for delete-peer command") | CODE |
| MEDIUM | res/device-groups.py | 17 | print(f"Error: HTTP {response.status_code}: {response.text}") | CODE |
| MEDIUM | res/device-groups.py | 25 | print(f"Error: {json_data['error']}") | CODE |
| MEDIUM | res/device-groups.py | 51 | print(f"Error: HTTP {r.status_code} - {r.text}") | CODE |
| MEDIUM | res/device-groups.py | 55 | print(f"Error: {res['error']}") | CODE |
| MEDIUM | res/device-groups.py | 88 | print(f"Error: Group '{name}' not found") | CODE |
| MEDIUM | res/device-groups.py | 110 | print(f"Error: Group '{n}' not found") | CODE |
| LOW | res/device-groups.py | 191 | except Exception: | CODE |
| MEDIUM⚡ | res/device-groups.py | 231 | print("Error: --name is required") | CODE |
| MEDIUM⚡ | res/device-groups.py | 239 | print("Error: --name is required") | CODE |
| MEDIUM⚡ | res/device-groups.py | 247 | print("Error: --name is required (supports comma separated)") | CODE |
| MEDIUM | res/device-groups.py | 264 | print("Error: --name and --ids are required for add/remove devices") | CODE |
| MEDIUM | res/control-roles.py | 17 | print(f"Error: HTTP {response.status_code}: {response.text}") | CODE |
| MEDIUM | res/control-roles.py | 26 | print(f"Error: {data['error']}") | CODE |
| MEDIUM | res/control-roles.py | 59 | print("Error: Unexpected response while listing control roles") | CODE |
| MEDIUM | res/control-roles.py | 93 | print(f"Error: Control role '{target}' not found") | CODE |
| MEDIUM | res/control-roles.py | 119 | print(f"Error: User '{user}' not found") | CODE |
| MEDIUM | res/control-roles.py | 195 | print("Error: Unexpected response while listing users") | CODE |
| MEDIUM⚡ | res/strategies.py | 156 | print(f"Error: Strategy '{strategy_name}' not found") | CODE |
| MEDIUM⚡ | res/strategies.py | 171 | print(f"Error: Device '{peer}' not found") | CODE |
| MEDIUM⚡ | res/strategies.py | 186 | print(f"Error: User '{user}' not found") | CODE |
| MEDIUM⚡ | res/strategies.py | 201 | print(f"Error: Device group '{dg}' not found") | CODE |
| MEDIUM⚡ | res/strategies.py | 248 | print(f"Error: Strategy '{args.name}' not found") | CODE |
| MEDIUM⚡ | res/strategies.py | 255 | print("Error: --name or --guid is required for view command") | CODE |
| MEDIUM⚡ | res/strategies.py | 260 | print("Error: --name is required") | CODE |
| MEDIUM⚡ | res/strategies.py | 266 | print("Error: --name is required") | CODE |
| MEDIUM⚡ | res/strategies.py | 272 | print("Error: --name is required") | CODE |
| 45 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | build.py | 381 | COMMENT | |
| LOW | build.py | 481 | # DRMTAP_PREBUILT_DIR (must contain the real libdrmtap.so.0.* object). | COMMENT |
| LOW | build.py | 521 | shutil.rmtree(src, ignore_errors=True) | COMMENT |
| LOW | build.py | 581 | # unprivileged side EGL-detiling the scanout it receives. The result is a build where DRM capture | COMMENT |
| LOW | build.py | 881 | # The variant must be decided by the EXPLICIT --drm request, not merely by what happens to be | COMMENT |
| LOW | Cargo.toml | 221 | # This allows building and running on systems without libxdo installed (e.g., Wayland-only) | COMMENT |
| LOW | Cargo.toml | 241 | # IPv6; and its AIMD pins a lossy long-haul link to MSS/(RTT*sqrt(p)), so a switch sends without | COMMENT |
| LOW | res/msi/preprocess.py | 101 | COMMENT | |
| LOW | res/msi/CustomActions/CustomActions.cpp | 1 | // CustomAction.cpp : Defines the entry point for the custom action. | COMMENT |
| LOW | res/msi/CustomActions/CustomActions.cpp | 161 | WcaLog(LOGMSG_STANDARD, "Runtime cleanup deleting '%ls'.", fullPath); | COMMENT |
| LOW | res/msi/CustomActions/RemotePrinter.cpp | 1 | #include "pch.h" | COMMENT |
| LOW | res/msi/CustomActions/pch.h | 1 | // pch.h: This is a precompiled header file. | COMMENT |
| LOW | res/msi/CustomActions/framework.h | 1 | #pragma once | COMMENT |
| LOW | libs/enigo/appveyor.yml | 1 | # AppVeyor configuration template for Rust using rustup for Rust installation | COMMENT |
| LOW | libs/enigo/appveyor.yml | 21 | # ARCH-pc-windows-TOOLCHAIN | COMMENT |
| LOW | libs/enigo/appveyor.yml | 81 | target: i686-pc-windows-gnu | COMMENT |
| LOW | libs/enigo/src/lib.rs | 1 | //! Enigo lets you simulate mouse and keyboard input-events as if they were | COMMENT |
| LOW | libs/enigo/src/lib.rs | 21 | //! Possible use cases could be for testing user interfaces on different | COMMENT |
| LOW | libs/enigo/src/lib.rs | 41 | //! enigo.key_click(Key::Layout('v')); | COMMENT |
| LOW | libs/enigo/src/lib.rs | 81 | /// DSL parser module | COMMENT |
| LOW | libs/enigo/src/lib.rs | 121 | ScrollRight, | COMMENT |
| LOW | libs/enigo/src/lib.rs | 141 | /// | COMMENT |
| LOW | libs/enigo/src/lib.rs | 161 | /// | COMMENT |
| LOW | libs/enigo/src/lib.rs | 181 | /// # Example | COMMENT |
| LOW | libs/enigo/src/lib.rs | 201 | /// | COMMENT |
| LOW | libs/enigo/src/lib.rs | 221 | /// let mut enigo = Enigo::new(); | COMMENT |
| LOW | libs/enigo/src/lib.rs | 241 | fn mouse_scroll_x(&mut self, length: i32); | COMMENT |
| LOW | libs/enigo/src/lib.rs | 261 | /// A key on the keyboard. | COMMENT |
| LOW | libs/enigo/src/lib.rs | 321 | PageUp, | COMMENT |
| LOW | libs/enigo/src/lib.rs | 461 | fn key_sequence_parse_try(&mut self, sequence: &str) -> Result<(), dsl::ParseError> | COMMENT |
| LOW | libs/enigo/src/lib.rs | 501 | #[cfg(any(target_os = "android", target_os = "ios"))] | COMMENT |
| LOW | libs/enigo/src/dsl.rs | 1 | use crate::{Key, KeyboardControllable}; | COMMENT |
| LOW | libs/enigo/src/macos/macos_impl.rs | 141 | }; | COMMENT |
| LOW | libs/scrap/src/common/hwcodec.rs | 501 | #[cfg(feature = "vram")] | COMMENT |
| LOW | libs/scrap/src/common/drm_reader.rs | 41 | pub y: i32, | COMMENT |
| LOW | libs/scrap/src/common/drm_reader.rs | 121 | /// When it answered, that is the answer, full stop - including `Some(true)` on a `(0, 0)` hotspot, | COMMENT |
| LOW | libs/scrap/src/common/drm_reader.rs | 141 | /// Guess the click point of a cursor bitmap, for the drivers that publish no hotspot. | COMMENT |
| LOW | libs/scrap/src/bindings/yuv_ffi.h | 1 | #include <libyuv/convert.h> | COMMENT |
| LOW | libs/scrap/src/bindings/vpx_ffi.h | 1 | #include <vpx/vp8.h> | COMMENT |
| LOW | libs/scrap/src/bindings/aom_ffi.h | 1 | #include <aom/aom.h> | COMMENT |
| LOW | libs/scrap/src/dxgi/hdr.rs | 1 | //! HDR desktop -> SDR normalization for Desktop Duplication frames. | COMMENT |
| LOW | libs/base/src/fs.rs | 1181 | COMMENT | |
| LOW | libs/base/src/platform/linux.rs | 341 | // Read before connecting: `connect_to_env` consumes `WAYLAND_SOCKET`. Only the probe fallback | COMMENT |
| LOW | libs/base/src/platform/linux.rs | 461 | Ok(display_infos) | COMMENT |
| LOW | libs/base/src/platform/linux/wayland_probe.rs | 201 | kill_probe_group(); | COMMENT |
| LOW | libs/clipboard/src/platform/unix/local_file.rs | 181 | // 32 bytes reserved | COMMENT |
| LOW | libs/clipboard/src/platform/unix/serv_files.rs | 21 | // Our clients request at most this much per range: macOS 4 MiB, FUSE less, and Windows | COMMENT |
| LOW | libs/clipboard/src/platform/unix/fuse/cs.rs | 1 | //! fuse server implement | COMMENT |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 21 | * See the License for the specific language governing permissions and | COMMENT |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 241 | #define CB_FORMAT_PNG 0xD011 | COMMENT |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 261 | /* CLIPRDR_HEADER.msgFlags */ | COMMENT |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 301 | UINT32 connID; | COMMENT |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 321 | #define CHANNEL_RC_NOT_OPEN 10 | COMMENT |
| LOW | libs/clipboard/src/windows/wf_cliprdr.c | 3701 | goto exit; | COMMENT |
| LOW | flutter/build_fdroid.sh | 1 | #!/bin/bash | COMMENT |
| LOW | flutter/pubspec.yaml | 1 | name: flutter_hbb | COMMENT |
| LOW | flutter/pubspec.yaml | 181 | # An image asset can refer to one or more resolution-specific "variants", see | COMMENT |
| LOW | flutter/pubspec.yaml | 201 | # - asset: fonts/TrajanPro_Bold.ttf | COMMENT |
| LOW | flutter/linux/wayland_shortcuts_inhibit.h | 1 | // Wayland keyboard shortcuts inhibit support | COMMENT |
| LOW | …n/kotlin/com/carriez/flutter_hbb/RdClipboardManager.kt | 21 | private val supportedMimeTypes = arrayOf( | COMMENT |
| 174 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | res/job.py | 229 | # Create a parser for the "sign_one_file" command | COMMENT |
| MEDIUM | res/job.py | 235 | # Create a parser for the "sign_files" command | COMMENT |
| MEDIUM⚡ | res/job.py | 246 | # Create a parser for the "fetch" command | COMMENT |
| MEDIUM⚡ | res/job.py | 249 | # Create a parser for the "update_status" command | COMMENT |
| MEDIUM⚡ | res/job.py | 256 | # Create a parser for the "delete_task" command | COMMENT |
| MEDIUM⚡ | res/job.py | 260 | # Create a parser for the "create" command | COMMENT |
| MEDIUM⚡ | res/job.py | 270 | # Create a parser for the "upload_file" command | COMMENT |
| MEDIUM⚡ | res/job.py | 279 | # Create a parser for the "get_status" command | COMMENT |
| MEDIUM⚡ | res/job.py | 287 | # Create a parser for the "download_files" command | COMMENT |
| MEDIUM | flutter/pubspec.yaml | 150 | # The following section is specific to Flutter. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | build.py | 183 | def generate_build_script_for_docker(): | CODE |
| LOW | build.py | 218 | def download_extract_features(features, res_dir): | STRING |
| LOW | build.py | 377 | def ffi_bindgen_function_refactor(): | STRING |
| LOW | build.py | 407 | def _prebuilt_dir_is_the_pinned_checkout(prebuilt_dir): | STRING |
| LOW | build.py | 610 | def assert_so_satisfies_the_runtime_abi_gate(so_path): | STRING |
| LOW | build.py | 706 | def retarget_control_to_drm_variant(): | STRING |
| LOW | build.py | 817 | def assert_staged_binary_is_drm(): | STRING |
| LOW | build.py | 958 | def build_flutter_arch_manjaro(version, features): | STRING |
| LOW | res/audits.py | 21 | def parse_local_time_to_utc_string(time_str): | CODE |
| LOW | res/audits.py | 65 | def get_console_operation_name(operation_code): | CODE |
| LOW | res/strategies.py | 123 | def get_device_group_guid_by_name(url, token, name): | CODE |
| LOW | res/users.py | 154 | def disable_email_verification(url, token, user_guids): | CODE |
| LOW | res/update/generate_update_metadata.py | 144 | def verify_metadata_signature(metadata_bytes, signature): | CODE |
| LOW | res/update/update_metadata_policy.py | 49 | def validate_artifact_file_name(file_name): | CODE |
| LOW | res/update/update_metadata_policy.py | 70 | def validate_release_base_url(value): | CODE |
| LOW | res/update/test_macos_update_scripts.py | 32 | def test_daemon_update_rejects_stale_ipc_sockets(self): | CODE |
| LOW | res/update/test_macos_update_scripts.py | 61 | def test_manual_update_requires_matching_bundle_identity(self): | CODE |
| LOW | res/update/test_update_metadata_cli.py | 13 | def test_sign_and_verify_require_update_identity_policy(self): | CODE |
| LOW | res/update/test_update_metadata_cli.py | 45 | def test_sign_rejects_empty_artifact(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 137 | def test_signs_and_verifies_release_artifacts(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 151 | def test_verification_rejects_tampering(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 163 | def test_verification_rejects_wrong_public_key(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 177 | def test_sign_rejects_invalid_release_inputs(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 187 | def test_signs_and_verifies_custom_release_identity(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 214 | def test_rejects_unsafe_custom_release_policy(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 237 | def test_checks_embedded_public_key(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 248 | def test_check_key_rejects_invalid_or_mismatched_seed(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 268 | def test_check_key_rejects_invalid_public_key(self): | CODE |
| LOW | res/update/test_generate_update_metadata.py | 287 | def test_check_key_rejects_mismatched_embedded_key(self): | CODE |
| LOW | res/msi/preprocess.py | 139 | def read_lines_and_start_index(file_path, tag_start, tag_end): | CODE |
| LOW⚡ | res/msi/preprocess.py | 159 | def insert_components_between_tags(lines, index_start, app_name, dist_dir, template=False): | CODE |
| LOW | res/msi/preprocess.py | 273 | def replace_app_name_in_langs(app_name): | CODE |
| LOW | res/msi/preprocess.py | 308 | def gen_custom_dialog_bitmaps(): | CODE |
| LOW | res/msi/preprocess.py | 340 | def gen_native_arp_properties(): | CODE |
| LOW | res/msi/preprocess.py | 513 | def replace_component_guids_in_wxs(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | build.py | 197 | pushd /tmp && git clone https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge --depth=1 && po | CODE |
| HIGH⚡ | build.py | 198 | pushd /tmp/flutter_rust_bridge/frb_codegen && cargo install --path . --locked && popd | CODE |
| HIGH⚡ | build.py | 199 | pushd flutter && flutter pub get && popd | CODE |
| HIGH | build.py | 750 | system2('rm tmpdeb/usr/bin/rustdesk || true') | STRING |
| HIGH | build.py | 858 | system2('rm tmpdeb/usr/bin/rustdesk || true') | STRING |
| HIGH | build.py | 1074 | system2('ln -s res/pacman_install && ln -s res/PKGBUILD') | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | build.py | 66 | CODE | |
| LOW | build.py | 218 | CODE | |
| LOW | build.py | 1000 | CODE | |
| LOW | res/lang.py | 40 | CODE | |
| LOW | res/audits.py | 108 | CODE | |
| LOW | res/audits.py | 289 | CODE | |
| LOW | res/ab.py | 114 | CODE | |
| LOW | res/ab.py | 483 | CODE | |
| LOW | res/device-groups.py | 196 | CODE | |
| LOW | res/control-roles.py | 210 | CODE | |
| LOW | res/strategies.py | 139 | CODE | |
| LOW | res/strategies.py | 218 | CODE | |
| LOW | res/users.py | 186 | CODE | |
| LOW | res/job.py | 66 | CODE | |
| LOW | res/job.py | 86 | CODE | |
| LOW | res/job.py | 201 | CODE | |
| LOW | res/job.py | 223 | CODE | |
| LOW | res/admin-roles.py | 295 | CODE | |
| LOW | res/devices.py | 129 | CODE | |
| LOW | res/user-groups.py | 230 | CODE | |
| LOW | res/update/test_macos_update_scripts.py | 32 | CODE | |
| LOW | res/msi/preprocess.py | 159 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | res/ab.py | 189 | # Check if at least one parameter is provided for update | COMMENT |
| LOW | res/ab.py | 239 | # Check if tag name matches a predefined color | COMMENT |
| LOW | res/ab.py | 341 | # Check if at least one parameter is provided for update | COMMENT |
| LOW⚡ | res/strategies.py | 164 | # Check if it's already a GUID format | COMMENT |
| LOW⚡ | res/strategies.py | 179 | # Check if it's already a GUID format | COMMENT |
| LOW⚡ | res/strategies.py | 194 | # Check if it's already a GUID format | COMMENT |
| LOW | res/users.py | 245 | # Check if we need user confirmation for multiple users | COMMENT |
| LOW | res/job.py | 74 | # Check if the request was successful | COMMENT |
| LOW | res/job.py | 94 | # Check if the request was successful | COMMENT |
| LOW | res/devices.py | 172 | # Check if we need user confirmation for multiple devices | COMMENT |
| LOW | flutter/build_android_deps.sh | 47 | # Check if vcpkg.json is one level up - in root directory of RD | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | res/device-groups.py | 0 | check api response and handle errors. two error cases: 1. status code is not 200 -> exit with error 2. response contains | STRING |
| HIGH | res/strategies.py | 0 | check api response and handle errors. two error cases: 1. status code is not 200 -> exit with error 2. response contains | STRING |
| HIGH | res/user-groups.py | 0 | check api response and handle errors. two error cases: 1. status code is not 200 -> exit with error 2. response contains | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | res/device-groups.py | 191 | except Exception: | CODE |
| HIGH | res/user-groups.py | 225 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | flutter/lib/desktop/widgets/tabbar_widget.dart | 759 | widget.tabController.state.value.tabs.any((tab) => tab.key == key)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libs/scrap/src/quartz/config.rs | 22 | /// Don't forget to CFRelease this! | COMMENT |
| MEDIUM | flutter/pubspec.yaml | 153 | # included with your application, so that you can use the icons in | COMMENT |
| MEDIUM | appimage/AppImageBuilder-x86_64.yml | 42 | # We modify APPDIR_LIBRARY_PATH to use system lib first because gst crashed if not doing so, but you can try to chan | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | res/ab.py | 6 | CODE | |
| LOW | res/ab.py | 6 | CODE | |
| LOW | res/users.py | 5 | CODE | |
| LOW | res/users.py | 5 | CODE | |
| LOW | res/job.py | 8 | CODE | |
| LOW | res/job.py | 9 | CODE | |
| LOW | res/devices.py | 5 | CODE | |
| LOW | res/msi/preprocess.py | 11 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | flutter/lib/web/bridge.dart | 852 | // TODO: implement | COMMENT |
| LOW | flutter/lib/web/bridge.dart | 881 | // TODO: implement | COMMENT |
| LOW | flutter/lib/web/bridge.dart | 1692 | // TODO: implement mainTestWallpaper | COMMENT |
| LOW | flutter/lib/web/bridge.dart | 1697 | // TODO: implement mainSupportRemoveWallpaper | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libs/enigo/appveyor.yml | 102 | # For simple configurations, instead of using the build matrix, you can simply set the | COMMENT |
| MEDIUM | …utter/lib/desktop/widgets/material_mod_popup_menu.dart | 1210 | /// and the button will utilize an [InkWell] for taps. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libs/portable/generate.py | 133 | # So we need to check if the executable is in the folder, and if so, concat again. | COMMENT |
| LOW | src/platform/windows.rs | 3673 | // We need to check if is_root here because if `update_me()` is called from | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/flutter-build.yml | 488 | Set-Content -Path ./rustdesk-msi-template/custom.txt -Value 'placeholder' -NoNewline | CODE |
| LOW | .github/workflows/flutter-build.yml | 492 | Set-Content -Path "$assets/$a" -Value 'placeholder' -NoNewline | CODE |