Cross compilation framework to create native packages for the Synology's NAS
This report summarizes scanner evidence for SynoCommunity/spksrc, a C project with 3,220 GitHub stars. SynthScan examined 109,460 lines of code across 677 source files, recording 400 pattern matches distributed across 18 syntactic categories. The legacy adjusted pattern signal is 7.7 (Moderate 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? 296 finding(s).
Are imports declared and package/API names verified? 30 finding(s).
Are wrappers, guards, and repeated structures necessary? 76 finding(s).
Which changes need focused human review? 400 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 400 distinct pattern matches across 18 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 69 | SYNOCOMMUNITY.GentooChroot.AppInstance.superclass.constructor.apply(this, arguments); | CODE |
| CRITICAL⚡ | spk/gentoo-chroot/src/app/gentoo-chroot.js | 93 | SYNOCOMMUNITY.GentooChroot.AppWindow.superclass.constructor.call(this, config); | CODE |
| CRITICAL⚡ | spk/gentoo-chroot/src/app/gentoo-chroot.js | 96 | SYNOCOMMUNITY.GentooChroot.AppWindow.superclass.onOpen.call(this, a); | CODE |
| CRITICAL⚡ | spk/gentoo-chroot/src/app/gentoo-chroot.js | 100 | SYNOCOMMUNITY.GentooChroot.AppWindow.superclass.onRequest.call(this, a); | CODE |
| CRITICAL⚡ | spk/gentoo-chroot/src/app/gentoo-chroot.js | 103 | if (SYNOCOMMUNITY.GentooChroot.AppWindow.superclass.onClose.apply(this, arguments)) { | CODE |
| CRITICAL⚡ | spk/gentoo-chroot/src/app/gentoo-chroot.js | 112 | var toolbar = this.mainPanel.cardPanel.layout.activeItem.getFooterToolbar(); | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 157 | SYNOCOMMUNITY.GentooChroot.MainPanel.superclass.constructor.call(this, { | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 313 | SYNOCOMMUNITY.GentooChroot.ListView.superclass.constructor.call(this, config) | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 376 | SYNOCOMMUNITY.GentooChroot.MainCardPanel.superclass.constructor.call(this, config) | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 419 | SYNOCOMMUNITY.GentooChroot.FormPanel.superclass.constructor.call(this, config); | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 517 | SYNOCOMMUNITY.GentooChroot.PanelOverview.superclass.constructor.call(this, config); | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 684 | SYNOCOMMUNITY.GentooChroot.PanelServices.superclass.constructor.call(this, config); | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 755 | SYNOCOMMUNITY.GentooChroot.ServiceEditorWindow.superclass.constructor.call(this, config); | CODE |
| CRITICAL | spk/gentoo-chroot/src/app/gentoo-chroot.js | 804 | SYNOCOMMUNITY.GentooChroot.PanelServiceEditor.superclass.constructor.call(this, config); | CODE |
| CRITICAL | spk/stockfish/src/webgui/public/lib/jquery.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| CRITICAL | …oxy/src/haproxy-dashboard/static/js/jquery.slim.min.js | 2 | !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):f | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 88 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 90 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 149 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 151 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 281 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 283 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 332 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/synocli-kernel/src/synocli-kernelmodule.sh | 334 | #------------------------------------------------ | COMMENT |
| MEDIUM | spk/homeassistant/src/service-setup.sh | 16 | # ------------------------------------------------ | COMMENT |
| MEDIUM⚡ | spk/owncloud/src/service-setup.sh | 435 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | spk/owncloud/src/service-setup.sh | 439 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | spk/sabnzbd/src/SabToSyno.py | 7 | #--------------------------------------- | COMMENT |
| MEDIUM | spk/octoprint/src/service-setup.sh | 9 | # ------------------------------------------------ | COMMENT |
| MEDIUM | spk/tvheadend/src/service-setup-dbg.sh | 1 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | spk/tvheadend/src/service-setup-dbg.sh | 7 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | spk/node-exporter/src/parameters.txt | 2 | # ------------------------ | COMMENT |
| MEDIUM | spk/haproxy/src/haproxy.cfg | 42 | # ───────────────────────────────────────────── | COMMENT |
| MEDIUM | spk/haproxy/src/haproxy.cfg | 45 | # ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | spk/haproxy/src/haproxy.cfg | 60 | # ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | spk/haproxy/src/haproxy.cfg | 62 | # ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | spk/haproxy/src/haproxy.cfg | 70 | # ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | spk/haproxy/src/haproxy.cfg | 72 | # ───────────────────────────────────────────── | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 92 | # ====================================================================== | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 94 | # ====================================================================== | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 304 | #--------------------------- | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 344 | #--------------------------- | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 416 | # ----------------------------- | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 452 | # ====================================================================== | COMMENT |
| MEDIUM | cross/google-fonts/src/imagick_type_gen.pl | 454 | # ====================================================================== | COMMENT |
| MEDIUM | docs/packages/node-exporter.md | 17 | # ------------------------ | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 27 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 29 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/prepare.sh | 41 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/prepare.sh | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/actions/prepare.sh | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 63 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 65 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 127 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 130 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 207 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 209 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 233 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 235 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 271 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/prepare.sh | 273 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/build.sh | 24 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/build.sh | 26 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/build.sh | 32 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/build.sh | 34 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | .github/actions/build.sh | 36 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/build.sh | 63 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/build.sh | 65 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/build.sh | 101 | # =========================================================================== | COMMENT |
| MEDIUM | .github/actions/build.sh | 103 | # =========================================================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/synocli-kernel/src/synocli-kernelmodule.sh | 1 | #!/bin/bash | COMMENT |
| LOW | spk/bazarr/src/requirements-pure.txt | 1 | # Generated using the requirements script on June 1, 2025 | COMMENT |
| LOW | spk/python314-wheels/src/requirements-crossenv.txt | 1 | ## | COMMENT |
| LOW | spk/python314-wheels/src/requirements-crossenv.txt | 61 | # Depends: curl | COMMENT |
| LOW | spk/python314-wheels/src/requirements-abi3.txt | 1 | ## | COMMENT |
| LOW | spk/python314-wheels/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/dnscrypt-proxy/src/service-setup.sh | 1 | # shellcheck disable=SC2148 | COMMENT |
| LOW | spk/homeassistant/src/requirements-custom.txt | 1 | # Home Assistant core | COMMENT |
| LOW | spk/python311/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/python312-wheels/src/requirements-crossenv.txt | 1 | ## | COMMENT |
| LOW | spk/python312-wheels/src/requirements-crossenv.txt | 61 | # Depends: curl | COMMENT |
| LOW | spk/python312-wheels/src/requirements-abi3.txt | 1 | ## | COMMENT |
| LOW | spk/python312-wheels/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/deluge/src/requirements-crossenv.txt | 1 | # [deluge] | COMMENT |
| LOW | spk/deluge/src/requirements-crossenv.txt | 21 | # BOOST_LIBRARIES | COMMENT |
| LOW | spk/beets/src/requirements-crossenv.txt | 1 | # Generated using the requirements script on December 23, 2025 | COMMENT |
| LOW | spk/sabnzbd/src/SabToSyno.py | 1 | #!/usr/local/python3 | COMMENT |
| LOW | spk/sabnzbd/src/SabToSyno.py | 21 | # If empty, then no move | COMMENT |
| LOW | spk/rdiff-backup/src/requirements-pure.txt | 1 | # Generated using the requirements script on October 30, 2026 | COMMENT |
| LOW | spk/python313/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/python314/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/sslh/src/example.cfg | 41 | udp_max_connections: 16; | COMMENT |
| LOW | spk/sslh/src/example.cfg | 61 | listen: | COMMENT |
| LOW | spk/sslh/src/example.cfg | 81 | # fork: Should a new process be forked for this protocol? | COMMENT |
| LOW | spk/sslh/src/example.cfg | 101 | # (sslh will try each probe in order they are declared, and | COMMENT |
| LOW | spk/gickup/src/conf.example.yml | 41 | excludeforks: true # exclude forked repositories | COMMENT |
| LOW | spk/python312/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/tvheadend/src/tv_postremove_cleanup.sh | 1 | #!/bin/sh | COMMENT |
| LOW | spk/tvheadend/src/service-setup-dbg.sh | 1 | # ----------------------------------------------------------------------------- | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 1 | # For all available configuration options see: | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 21 | COMMENT | |
| LOW | spk/navidrome/src/navidrome.toml | 41 | # ImageCacheSize = "100MB" | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 61 | # Controls whether the player in the UI will animate the album cover (rotation) | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 81 | COMMENT | |
| LOW | spk/navidrome/src/navidrome.toml | 101 | # Purge missing files from database. Values: "never", "always", "full" | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 121 | # Set this to false to completely disable ALL external integrations | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 141 | # | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 161 | # Passphrase used to encrypt passwords in the DB | COMMENT |
| LOW | spk/ffsync/src/requirements-crossenv.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | spk/ffsync/src/requirements-pure.txt | 1 | # This file was autogenerated by uv via the following command: | COMMENT |
| LOW | spk/python311-wheels/src/requirements-crossenv.txt | 1 | ## | COMMENT |
| LOW | spk/python311-wheels/src/requirements-crossenv.txt | 41 | zope.interface==8.2 | COMMENT |
| LOW | spk/python311-wheels/src/requirements-abi3.txt | 1 | ## | COMMENT |
| LOW | spk/python311-wheels/src/requirements-pure.txt | 1 | # basic default wheels | COMMENT |
| LOW | spk/node-exporter/src/parameters.txt | 1 | # node_exporter parameters | COMMENT |
| LOW | spk/haproxy/src/haproxy.cfg | 41 | COMMENT | |
| LOW | spk/haproxy/src/haproxy.cfg | 61 | # EXAMPLE: HTTPS frontend with SSL termination | COMMENT |
| LOW | spk/haproxy/src/haproxy.cfg | 81 | # backend tcp_back | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 1 | # | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 21 | # | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 41 | # | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 61 | # requires at least Erlang/OTP 23.1. | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 81 | #. | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 101 | # You can safely increase this limit when starting ejabberd. It impacts memory | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 121 | #. | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 141 | # ERLANG_NODE=ejabberd@hostname | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 161 | # | COMMENT |
| LOW | spk/ejabberd/src/ejabberdctl.cfg | 181 | # Default: $HOME/.ejabberd-modules | COMMENT |
| LOW | spk/ejabberd/src/ejabberd.yml | 1 | ### | COMMENT |
| LOW | spk/ejabberd/src/ejabberd.yml | 241 | ### mode: yaml | COMMENT |
| 115 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | spk/rutorrent/src/service-setup.sh | 161 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/nzbmegasearch/src/installer.sh | 34 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/subliminal/src/service-setup.sh | 7 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/fengoffice/src/service-setup.sh | 42 | # Define the resource file | COMMENT |
| MEDIUM | spk/duplicity/src/service-setup.sh | 9 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/borgbackup/src/service-setup.sh | 6 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/gentoo-chroot/src/installer.sh | 26 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/wallabag/src/service-setup.sh | 43 | # Define the resource file | COMMENT |
| MEDIUM | spk/bazarr/src/service-setup.sh | 15 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/python314-wheels/src/service-setup.sh | 6 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/headphones-custom/src/service-setup.sh | 27 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/saltpad/src/installer.sh | 35 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/python312-wheels/src/service-setup.sh | 6 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/cops/src/service-setup.sh | 15 | # Create a default configuration file | COMMENT |
| MEDIUM | spk/cops/src/service-setup.sh | 55 | # Create a default configuration file | COMMENT |
| MEDIUM | spk/deluge/src/service-setup.sh | 98 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/sabnzbd/src/service-setup.sh | 18 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/headphones/src/service-setup.sh | 16 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/pyload/src/service-setup.sh | 45 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/rdiff-backup/src/service-setup.sh | 6 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/mercurial/src/service-setup.sh | 6 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/sslh/src/example.cfg | 1 | # This file is provided as documentation to show what is | COMMENT |
| MEDIUM | spk/transmission/src/service-setup.sh | 16 | # Create the managed folders | COMMENT |
| MEDIUM | spk/tvheadend/src/service-setup.sh | 35 | # Create a Python virtualenv and install wheel (EPG Grabber) | COMMENT |
| MEDIUM | spk/tvheadend/src/service-setup-dbg.sh | 99 | # Create a Python virtualenv and install wheel (EPG Grabber) | COMMENT |
| MEDIUM | spk/nzbget/src/service-setup.sh | 84 | # Create the config file on demand | COMMENT |
| MEDIUM | spk/flexget/src/service-setup.sh | 21 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/python311-wheels/src/service-setup.sh | 6 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/haproxy/src/service-setup.sh | 20 | # Create a Python virtualenv | COMMENT |
| MEDIUM | spk/haproxy/src/service-setup.sh | 34 | # Create a self-signed certificate for HTTPS termination | COMMENT |
| MEDIUM | spk/mantisbt/src/service-setup.sh | 42 | # Define the resource file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/icinga2-agent/src/service-setup.sh | 65 | # Step 1: Register host via Director Self-Service API | COMMENT |
| LOW | spk/icinga2-agent/src/service-setup.sh | 81 | # Step 2: Get signing ticket from Director | COMMENT |
| LOW⚡ | spk/owncloud/src/service-setup.sh | 446 | # Step 1: maintenance mode. (The package creates no cron job, so there is | COMMENT |
| LOW⚡ | spk/owncloud/src/service-setup.sh | 453 | # Step 2: disable third-party apps (not shipped by ownCloud). | COMMENT |
| LOW | spk/owncloud/src/service-setup.sh | 470 | # Step 3: backup the database with the application credentials. | COMMENT |
| LOW | spk/owncloud/src/service-setup.sh | 492 | # Step 4: keep .htaccess/.user.ini for manual re-application. The vendor | COMMENT |
| LOW | spk/beets/src/requirements-crossenv.txt | 4 | # NOTE: The following plugins were excluded due to being broken or deprecated: | COMMENT |
| LOW | spk/beets/src/requirements-pure.txt | 4 | # NOTE: The following plugins were excluded due to being broken or deprecated: | COMMENT |
| LOW⚡ | docs/user-guide/installation.md | 13 | ### Step 1: Open Package Center | COMMENT |
| LOW⚡ | docs/user-guide/installation.md | 17 | ### Step 2: Go to Settings | COMMENT |
| LOW⚡ | docs/user-guide/installation.md | 21 | ### Step 3: Add Package Source | COMMENT |
| LOW | docs/user-guide/installation.md | 34 | ### Step 4: Trust the Repository (DSM 6.x only) | COMMENT |
| LOW | docs/contributing/development-process.md | 31 | ## Step 1: Fork and Clone | COMMENT |
| LOW | docs/contributing/development-process.md | 60 | ## Step 2: Create a Branch | COMMENT |
| LOW | docs/contributing/development-process.md | 84 | ## Step 3: Make Your Changes | COMMENT |
| LOW | docs/contributing/development-process.md | 118 | ## Step 4: Commit Your Changes | COMMENT |
| LOW | docs/contributing/development-process.md | 166 | ## Step 5: Push and Create PR | COMMENT |
| LOW | docs/contributing/development-process.md | 200 | ## Step 6: Address Review Feedback | COMMENT |
| LOW | docs/contributing/development-process.md | 230 | ## Step 7: After Merge | COMMENT |
| LOW | docs/packages/vaultwarden.md | 67 | #### Step 1: Create a Certificate (if needed) | COMMENT |
| LOW | docs/packages/vaultwarden.md | 72 | #### Step 2: Create Reverse Proxy Entry | COMMENT |
| LOW | docs/packages/vaultwarden.md | 91 | #### Step 3: Enable WebSocket Support | COMMENT |
| LOW | docs/packages/vaultwarden.md | 99 | #### Step 4: Assign Certificate | COMMENT |
| LOW | docs/packages/actual-budget.md | 34 | ### Step 1: Create a Certificate (if needed) | COMMENT |
| LOW | docs/packages/actual-budget.md | 39 | ### Step 2: Create Reverse Proxy Entry | COMMENT |
| LOW | docs/packages/actual-budget.md | 58 | ### Step 3: Assign Certificate | COMMENT |
| LOW⚡ | docs/packages/borgmatic.md | 7 | ### Step 1 - Install the Borg Community Package | COMMENT |
| LOW⚡ | docs/packages/borgmatic.md | 16 | ### Step 2 - Create Hidden Shared Folder for Borg Config Files | COMMENT |
| LOW⚡ | docs/packages/borgmatic.md | 24 | ### Step 3 - Create your Borgmatic Config | COMMENT |
| LOW | docs/packages/borgmatic.md | 38 | ### Step 4 - Upload Private Keys (Optional) | COMMENT |
| LOW | docs/packages/borgmatic.md | 42 | ### Step 5 - Add the Backup Task | COMMENT |
| LOW | docs/packages/borgmatic.md | 56 | ### Step 6 - Manually Run the Job | COMMENT |
| LOW | docs/developer-guide/basics/first-package.md | 18 | ### Step 1: Navigate to the Package | COMMENT |
| LOW | docs/developer-guide/basics/first-package.md | 26 | ### Step 2: Build the Package | COMMENT |
| LOW | docs/developer-guide/basics/first-package.md | 42 | ### Step 3: Find the Built Package | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/fengoffice/src/service-setup.sh | 149 | # Check if Apache is the selected back-end | COMMENT |
| LOW | spk/fengoffice/src/service-setup.sh | 157 | # Check if default PHP profile is selected | COMMENT |
| LOW | spk/wallabag/src/service-setup.sh | 134 | # Check if Apache is the selected back-end | COMMENT |
| LOW | spk/wallabag/src/service-setup.sh | 142 | # Check if default PHP profile is selected | COMMENT |
| LOW | spk/dnscrypt-proxy/src/service-setup.sh | 47 | # Check if something is already using port 53 (typically DHCP server's dnsmasq) | COMMENT |
| LOW | spk/selfoss/src/service-setup.sh | 62 | # Check if Apache is the selected back-end | COMMENT |
| LOW | spk/selfoss/src/service-setup.sh | 70 | # Check if default PHP profile is selected | COMMENT |
| LOW | spk/cops/src/service-setup.sh | 65 | # Check if the .htaccess file has been modified | COMMENT |
| LOW | spk/owncloud/src/service-setup.sh | 148 | # Check if the domain is already in the trusted domains | COMMENT |
| LOW | spk/sabnzbd/src/SabToSyno.py | 86 | # Check if destination folder does exist and can be written | COMMENT |
| LOW | spk/rabbitmq/src/service-setup.sh | 25 | # Check if paths differ to determine if data migration is needed | COMMENT |
| LOW | spk/pyload/src/service-setup.sh | 66 | # Set language to the DSM language | COMMENT |
| LOW | spk/metacubexd/src/service-setup.sh | 56 | # Check if Apache is the selected back-end | COMMENT |
| LOW | spk/shairport-sync/src/service-setup.sh | 34 | # Check if NQPTP binary exists (AirPlay 2 build) | COMMENT |
| LOW | spk/navidrome/src/navidrome.toml | 121 | # Set this to false to completely disable ALL external integrations | COMMENT |
| LOW | spk/ffsync/src/service-setup.sh | 109 | # Check if service already exists | COMMENT |
| LOW | spk/ffsync/src/service-setup.sh | 201 | # Check if database export path is specified | COMMENT |
| LOW | spk/haproxy/src/haproxy-dashboard/log_parser.py | 69 | if " 403 " in line: # Check if the line contains " 403 " indicating a 403 status code | CODE |
| LOW | spk/haproxy/src/haproxy-dashboard/routes/main_routes.py | 65 | # Check if frontend or port already exists | COMMENT |
| LOW | spk/ejabberd/src/service-setup.sh | 50 | # Check if paths differ to determine if data migration is needed | COMMENT |
| LOW | spk/ejabberd/src/wizard/upgrade_uifile.sh | 3 | # Check if admin ACL is properly configured in existing ejabberd.yml | COMMENT |
| LOW | spk/ejabberd/src/wizard/upgrade_uifile.sh | 27 | # Check if admin section exists with user entries (not placeholder) | COMMENT |
| LOW | spk/mantisbt/src/service-setup.sh | 133 | # Check if Apache is the selected back-end | COMMENT |
| LOW | spk/mantisbt/src/service-setup.sh | 141 | # Check if default PHP profile is selected | COMMENT |
| LOW | spk/phpmemcachedadmin/src/service-setup.sh | 70 | # Check if Apache is the selected back-end | COMMENT |
| LOW | spk/phpmemcachedadmin/src/service-setup.sh | 78 | # Check if default PHP profile is selected | COMMENT |
| LOW | .github/workflows/distrib-cache-maintenance.yml | 177 | # Check if a cache with this exact hash already exists to avoid duplication | COMMENT |
| LOW | .github/workflows/build.yml | 300 | # Check if a cache with this exact hash already exists to avoid duplication. | COMMENT |
| LOW | .github/actions/download.sh | 34 | # Display output | COMMENT |
| LOW | .github/actions/download.sh | 41 | # Check if checksum failure occurred by looking for .wrong rename in output | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | spk/haproxy/src/haproxy-dashboard/log_parser.py | 111 | except Exception: | CODE |
| HIGH | …/haproxy/src/haproxy-dashboard/auth/auth_middleware.py | 21 | except (FileNotFoundError, IOError): | CODE |
| HIGH | spk/haproxy/src/haproxy-dashboard/utils/stats_utils.py | 20 | except Exception: | CODE |
| HIGH | spk/haproxy/src/haproxy-dashboard/utils/stats_utils.py | 59 | except Exception: | CODE |
| HIGH | …/haproxy/src/haproxy-dashboard/utils/haproxy_config.py | 183 | except FileNotFoundError: | CODE |
| HIGH | spk/haproxy/src/haproxy-dashboard/routes/edit_routes.py | 44 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | spk/itools/src/umounting.py | 0 | copyright (c) 2018 bingjing chang permission is hereby granted, free of charge, to any person obtaining a copy of this s | STRING |
| HIGH | spk/itools/src/common.py | 0 | copyright (c) 2018 bingjing chang permission is hereby granted, free of charge, to any person obtaining a copy of this s | STRING |
| HIGH | spk/itools/src/mounting.py | 0 | copyright (c) 2018 bingjing chang permission is hereby granted, free of charge, to any person obtaining a copy of this s | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/gentoo-chroot/src/app/application/auth.py | 3 | CODE | |
| LOW | spk/gentoo-chroot/src/app/application/db.py | 7 | CODE | |
| LOW | spk/gentoo-chroot/src/app/application/direct.py | 2 | CODE | |
| LOW | spk/gentoo-chroot/src/app/application/direct.py | 5 | CODE | |
| LOW | spk/gentoo-chroot/src/app/application/direct.py | 6 | CODE | |
| LOW | spk/itools/src/umounting.py | 29 | CODE | |
| LOW | spk/itools/src/umounting.py | 31 | CODE | |
| LOW | spk/itools/src/common.py | 26 | CODE | |
| LOW | spk/itools/src/common.py | 27 | CODE | |
| LOW | spk/itools/src/mounting.py | 28 | CODE | |
| LOW | spk/itools/src/mounting.py | 30 | CODE | |
| LOW | spk/itools/src/mounting.py | 32 | CODE | |
| LOW | spk/salt-master/src/app/synology.py | 2 | CODE | |
| LOW | spk/salt-master/src/app/synology.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/icinga2-agent/src/service-setup.sh | 65 | # Step 1: Register host via Director Self-Service API | COMMENT |
| LOW | spk/icinga2-agent/src/service-setup.sh | 81 | # Step 2: Get signing ticket from Director | COMMENT |
| LOW⚡ | spk/owncloud/src/service-setup.sh | 446 | # Step 1: maintenance mode. (The package creates no cron job, so there is | COMMENT |
| LOW⚡ | spk/owncloud/src/service-setup.sh | 453 | # Step 2: disable third-party apps (not shipped by ownCloud). | COMMENT |
| LOW | spk/owncloud/src/service-setup.sh | 470 | # Step 3: backup the database with the application credentials. | COMMENT |
| LOW | spk/owncloud/src/service-setup.sh | 492 | # Step 4: keep .htaccess/.user.ini for manual re-application. The vendor | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/framework/makefile-system.md | 154 | # Rules — shared targets / orchestration, included by the entry points | COMMENT |
| MEDIUM | docs/developer-guide/basics/build-workflow.md | 42 | # At the spksrc root: repository-wide orchestration targets | COMMENT |
| MEDIUM | .github/actions/download.sh | 9 | # - The "download" target auto-orchestrates when a package has multiple (arch-specific) files. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/haproxy/src/haproxy-dashboard/log_parser.py | 4 | CODE | |
| LOW | …/haproxy/src/haproxy-dashboard/auth/auth_middleware.py | 6 | CODE | |
| LOW | spk/haproxy/src/haproxy-dashboard/utils/stats_utils.py | 8 | CODE | |
| LOW | …/haproxy/src/haproxy-dashboard/utils/haproxy_config.py | 10 | CODE | |
| LOW | …/haproxy/src/haproxy-dashboard/utils/haproxy_config.py | 23 | CODE | |
| LOW | …/haproxy/src/haproxy-dashboard/utils/haproxy_config.py | 36 | CODE | |
| LOW | …/haproxy/src/haproxy-dashboard/utils/haproxy_config.py | 159 | CODE | |
| LOW | spk/haproxy/src/haproxy-dashboard/routes/edit_routes.py | 10 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/gickup/src/conf.example.yml | 9 | # if you want to get everything from your user, leave out the user parameter and just use the token. | COMMENT |
| LOW | spk/gickup/src/conf.example.yml | 55 | # if you want to get everything from your user, leave out the user parameter and just use the token. | COMMENT |
| LOW | spk/gickup/src/conf.example.yml | 91 | # if you want to get everything from your user, leave out the user parameter and just use the token. | COMMENT |
| LOW | spk/gickup/src/conf.example.yml | 122 | # if you want to get everything from your user, leave out the user parameter and just use the token. | COMMENT |
| LOW | spk/gickup/src/conf.example.yml | 198 | # if you want to get everything from your user, leave out the user parameter and just use the token. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/itools/src/umounting.py | 51 | except Exception as e: | CODE |
| LOW | spk/itools/src/common.py | 54 | except Exception as e: | CODE |
| LOW | spk/itools/src/mounting.py | 95 | except Exception as e: | CODE |
| LOW | spk/haproxy/src/haproxy-dashboard/log_parser.py | 111 | except Exception: | CODE |
| LOW | spk/haproxy/src/haproxy-dashboard/utils/stats_utils.py | 20 | except Exception: | CODE |
| LOW | spk/haproxy/src/haproxy-dashboard/utils/stats_utils.py | 59 | except Exception: | CODE |
| LOW | spk/haproxy/src/haproxy-dashboard/routes/edit_routes.py | 44 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/gentoo-chroot/src/app/application/auth.py | 11 | __all__ = ['authenticate', 'requires_auth'] | CODE |
| LOW | spk/gentoo-chroot/src/app/application/db.py | 10 | __all__ = ['Base', 'engine', 'Session', 'Service', 'setup'] | CODE |
| LOW | spk/gentoo-chroot/src/app/application/config.py | 1 | __all__ = ['env_path', 'chroottarget', 'installed'] | CODE |
| LOW | spk/gentoo-chroot/src/app/application/direct.py | 9 | __all__ = ['Base', 'Services', 'Overview'] | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | spk/gickup/src/conf.example.yml | 360 | timeformat: 2006-01-02 15:04:05 # you can use a custom time format, use https://yourbasic.org/golang/format-parse-stri | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | spk/gentoo-chroot/src/app/application/direct.py | 91 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/haproxy/src/haproxy-dashboard/utils/haproxy_config.py | 159 | def count_frontends_and_backends(): | CODE |