AI Slop Code Risk Monitor

mullvad/mullvadvpn-app

SlopCodeMonitor badge for mullvad/mullvadvpn-app Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

The Mullvad VPN client app for desktop and mobile

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for mullvad/mullvadvpn-app, a Rust project with 7,727 GitHub stars. SynthScan examined 523,793 lines of code across 5788 source files, recording 839 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 1.8 (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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
7.7K
Stars
Rust
Language
523.8K
Lines of Code
5.8K
Files
839
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 7.5/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 799 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

Are imports declared and package/API names verified? 22 finding(s).

Agent Over-Engineering Ratio 3.2/100 · LOW

Are wrappers, guards, and repeated structures necessary? 293 finding(s).

PR Review Velocity Impact 8.3/100 · LOW

Which changes need focused human review? 839 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 2HIGH 0MEDIUM 26LOW 811

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 839 distinct pattern matches across 14 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.

Over-Commented Block491 hits · 484 pts
SeverityFileLineSnippetContext
LOWdeny.toml101 { name = "tokio", version = "0" },COMMENT
LOWosv-scanner.toml1# List of ignored known vulnerabilitiesCOMMENT
LOWosv-scanner.toml21# * The default should be to ignore a vulnerability for three months.COMMENT
LOWosv-scanner.toml41# issue, follow these steps:COMMENT
LOWosv-scanner.toml61# ```COMMENT
LOWtalpid-core/src/resolver.rs461 ) -> Result<Server<ResolverImpl>, Error> {COMMENT
LOWtalpid-core/src/tunnel_state_machine/mod.rs61const TUNNEL_STATE_MACHINE_SHUTDOWN_TIMEOUT: Duration = Duration::from_secs(5);COMMENT
LOWtalpid-core/src/tunnel_state_machine/mod.rs101 /// Block traffic unless connected to the VPN.COMMENT
LOWtalpid-core/src/tunnel_state_machine/mod.rs761 NewState((Box<dyn TunnelState>, TunnelStateTransition)),COMMENT
LOWtalpid-core/src/firewall/macos.rs21COMMENT
LOWtalpid-core/src/firewall/mod.rs81/// See the [security](../../../docs/security.md) document for the specification on how toCOMMENT
LOWtalpid-core/src/firewall/mod.rs101 #[cfg(target_os = "macos")]COMMENT
LOWtalpid-core/src/firewall/linux.rs361 // in the cgroup that the parent process belongs to at the time.COMMENT
LOWtalpid-core/src/firewall/linux.rs421 // Split tunneled processes have their PIDs added to a cgroup (v1 or v2).COMMENT
LOWtalpid-core/src/firewall/windows/hyperv.rs41 let con = WMIConnection::with_namespace_path(WMI_NAMESPACE).map_err(Error::ConnectWmi)?;COMMENT
LOWtalpid-core/src/firewall/windows/objects/persistent.rs61COMMENT
LOWtalpid-core/src/firewall/windows/winfw/mod.rs61/// Return the policy currently in effect.COMMENT
LOWtalpid-core/src/split_tunnel/android.rs1/// Errors related to split tunneling.COMMENT
LOWtalpid-core/src/split_tunnel/macos/tun.rs41/// Errors related to split tunneling.COMMENT
LOWtalpid-core/src/split_tunnel/macos/tun.rs61 CreatePcap(#[source] pcap::Error),COMMENT
LOWtalpid-core/src/split_tunnel/macos/bpf.rs21 task::{Context, Poll},COMMENT
LOWtalpid-core/src/split_tunnel/macos/bpf.rs341/// n=0: bpf_wordalign(0) == 0COMMENT
LOWtalpid-core/src/split_tunnel/macos/process.rs41 UnsupportedMacosVersion {COMMENT
LOWtalpid-core/src/split_tunnel/macos/process.rs521}COMMENT
LOWtalpid-core/src/split_tunnel/macos/process.rs541 path: PathBuf,COMMENT
LOWtalpid-core/src/split_tunnel/macos/process.rs561/// "ruid":0,COMMENT
LOWtalpid-core/src/split_tunnel/macos/default.rs1//! Functions for handling default interfaces/routesCOMMENT
LOWtalpid-core/src/split_tunnel/macos/include/bindings.h1#include <sys/param.h>COMMENT
LOWtalpid-core/src/split_tunnel/linux/mod.rs241 /// This returns none if we're using cgroups v1, or if we failed to create the v1 cgroup.COMMENT
LOWtalpid-core/src/split_tunnel/windows/path_monitor.rs1//! This module detects changes to paths that are symlinks, resolves them and updates paths used byCOMMENT
LOWtalpid-core/src/split_tunnel/windows/service.rs21// generous timeout here. It might make sense to redesign split tunneling to not block the restCOMMENT
LOWtalpid-core/src/split_tunnel/windows/mod.rs321 ///COMMENT
LOWtalpid-core/src/split_tunnel/windows/driver.rs901}COMMENT
LOWmullvad-daemon-relay-selector/src/relay_selector/mod.rs21/// retry attempts (`ip_version` and `obfuscation`). All other fields are left asCOMMENT
LOWmullvad-daemon-relay-selector/src/relay_selector/mod.rs221#[cfg(test)]COMMENT
LOWmullvad-api/src/lib.rs81pub struct ApiEndpoint {COMMENT
LOWmullvad-api/src/lib.rs101 /// The overridden sigsum trusted public keys used for verifying the transparency loggedCOMMENT
LOWmullvad-api/src/lib.rs121 /// By default, `force_direct` will be `true` if the `api-override` featureCOMMENT
LOWmullvad-api/src/relay_list.rs501///COMMENT
LOWmullvad-api/src/access_mode.rs41 #[cfg(not(target_os = "android"))]COMMENT
LOWmullvad-api/src/access_mode.rs61 ) -> Result<()> {COMMENT
LOWmullvad-api/src/relay_list_transparency/mod.rs81 /// that corresponds to this signature and the timestamp of when it was signed.COMMENT
LOWmullvad-api/src/relay_list_transparency/mod.rs121}COMMENT
LOWmullvad-update/src/format/mod.rs1//! This module includes all that is needed for the (de)serialization of Mullvad version metadata.COMMENT
LOWmullvad-update/src/format/serializer.rs1//! Serializer for signed version response dataCOMMENT
LOWmullvad-update/src/client/tls.rs1//! rustls client config shared by the reqwest-based HTTP clients in this crate.COMMENT
LOWmullvad-version/src/main.rs41COMMENT
LOWtest/osv-scanner.toml1# See repository root `osv-scanner.toml` for instructions and rules for this file.COMMENT
LOWtest/am-i-mullvad-client/src/lib.rs41 Connect(#[from] hyper_util::client::legacy::Error),COMMENT
LOWtest/test-rpc/src/client.rs261 ///COMMENT
LOWtest/test-manager/test_macro/src/lib.rs1use proc_macro::TokenStream;COMMENT
LOWtest/test-manager/test_macro/src/lib.rs21/// The `test_function` macro takes 3 optional argumentsCOMMENT
LOWtest/test-manager/test_macro/src/lib.rs41/// rpc: ServiceClient,COMMENT
LOWtest/test-manager/src/main.rs81 /// Partner API token to use for testing. Overrides the account of the environment.COMMENT
LOWtest/test-manager/src/main.rs101 ///COMMENT
LOWtest/test-manager/src/config/vm.rs41 #[serde(default)]COMMENT
LOWtest/test-manager/src/config/manifest.rs61/// defaults.COMMENT
LOWtest/test-manager/src/config/manifest/test_locations.rs21/// The format is a list of maps with a single key-valueCOMMENT
LOWtest/test-manager/src/tests/tunnel.rs581 Ok(())COMMENT
LOWtest/test-manager/src/tests/ui.rs121 rpc: ServiceClient,COMMENT
431 more matches not shown…
Hyper-Verbose Identifiers275 hits · 274 pts
SeverityFileLineSnippetContext
LOWdesktop/packages/mullvad-vpn/test/unit/utils.ts6function isReactElementWithChildren(element: unknown): element is ReactElementWithChildren {CODE
LOWdesktop/packages/mullvad-vpn/test/unit/utils.ts35export function expectChildrenToMatchElements(CODE
LOW…/e2e/installed/state-dependent/split-tunneling.spec.ts178function getDaemonSplitTunnelingApplications() {CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts21function getDiscardCausedByAntiCensorship(CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts35function getDiscardCausedByIpVersion(relay: IRelayListHostname, ipVersion: Constraint<IpVersion>) {CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts49function getDiscardCausedByLocation(CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts72function getDiscardCausedByOwnership(ownership: Ownership | undefined, relay: IRelayListHostname) {CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts83function getDiscardCausedByProviders(CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts94function getDiscardCausedByConflictWithOtherHop(CODE
LOW…ages/mullvad-vpn/test/e2e/setup/mock-relay-selector.ts108function getDiscardCausedByEntryConstraints(CODE
LOW…/packages/mullvad-vpn/scripts/fetch-relay-locations.py25def extract_relay_translations():CODE
LOW…/packages/mullvad-vpn/scripts/fetch-relay-locations.py73def extract_relay_locations_pot(countries):CODE
LOW…kages/mullvad-vpn/scripts/integrate-relay-locations.py27def merge_relay_locations_catalogue_template():CODE
LOW…ages/mullvad-vpn/scripts/verify-translations-format.ts29function parseTranslationsForLocale(locale: string): GetTextTranslation[] {CODE
LOW…ages/mullvad-vpn/scripts/verify-translations-format.ts53function checkFormatSpecifiersImpl(msgid: string, msgstr: string): boolean {CODE
LOW…tom-list-button/RemoveLocationFromCustomListButton.tsx15export function RemoveLocationFromCustomListButton({CODE
LOW…-geographical-location-menu/CustomListLocationMenu.tsx14export function CustomListGeographicalLocationMenu({CODE
LOW…e-custom-list-dialog/CreateCustomListDialogContext.tsx38export function CreateCustomListDialogProvider({CODE
LOW…s/create-custom-list-dialog/CreateCustomListDialog.tsx29function CreateCustomListDialogImpl(props: CreateCustomListDialogImplProps) {CODE
LOW…t-dialog/hooks/use-handle-submit-create-custom-list.ts6export function useHandleSubmitAddCustomList() {CODE
LOW…ist-dialog/hooks/use-handle-custom-list-name-change.ts5export function useHandleCustomListNameChange() {CODE
LOW…st-dialog/hooks/use-handle-click-create-custom-list.ts5export function useHandleClickCreateCustomList() {CODE
LOW…nu-button/CustomListGeographicalLocationMenuButton.tsx11export function CustomListGeographicalLocationMenuButton({CODE
LOW…dit-custom-list-dialog/EditCustomListDialogContext.tsx38export function EditCustomListDialogProvider({CODE
LOW…ist-dialog/hooks/use-handle-custom-list-name-change.ts5export function useHandleCustomListNameChange() {CODE
LOW…st-dialog/hooks/use-handle-click-update-custom-list.ts5export function useHandleClickUpdateCustomList() {CODE
LOW…t-dialog/hooks/use-handle-submit-update-custom-list.ts6export function useHandleSubmitUpdateCustomList() {CODE
LOW…o-custom-list-dialog/AddLocationToCustomListDialog.tsx17export function AddLocationToCustomListDialog({CODE
LOW…tom-list-list-item/AddLocationToCustomListListItem.tsx20export function AddLocationToCustomListListItem({ list, location }: SelectListProps) {CODE
LOW…om-lists/hooks/use-remove-location-from-custom-list.ts10export function useRemoveLocationFromCustomList() {CODE
LOW…/custom-lists/hooks/use-add-location-to-custom-list.ts7export function useAddLocationToCustomList() {CODE
LOW…s/locations/utils/map-redux-relay-to-relay-location.ts13export function mapReduxRelayToRelayLocation(CODE
LOW…es/locations/utils/search-custom-list-and-locations.ts6export function searchCustomListAndLocations(CODE
LOW…s/utils/filter-countries-by-ownership-and-providers.ts7export function filterCountriesByOwnershipAndProviders(CODE
LOW…/utils/filter-countries-by-relay-locations-filtered.ts10export function filterCountriesByRelayLocationsFiltered(CODE
LOW…locations/utils/get-relay-locations-filtered-filter.ts10export function getRelayLocationsFilteredFilter(CODE
LOW…s/utils/get-relay-locations-filtered-matches-filter.ts4export function getRelayLocationsFilteredMatchesFilter(relayMatches: RelaySelectorRelayMatch[]) {CODE
LOW…/utils/get-relay-locations-filtered-discards-filter.ts5export function getRelayLocationsFilteredDiscardsFilter(CODE
LOW…cations/utils/map-redux-country-to-country-location.ts10export function mapReduxCountryToCountryLocation(CODE
LOW…res/locations/utils/map-redux-city-to-city-location.ts13export function mapReduxCityToCityLocation(CODE
LOW…ocation-menu-button/GeographicalLocationMenuButton.tsx11export function GeographicalLocationMenuButton({CODE
LOW…custom-list-menu-option/CreateCustomListMenuOption.tsx13export function CreateCustomListMenuOption({CODE
LOW…list-menu-option/AddLocationToCustomListMenuOption.tsx20export function AddLocationToCustomListMenuOption({CODE
LOW…cation-menu/hooks/use-show-set-as-entry-menu-option.ts5export function useShowSetAsEntryMenuOption(location: GeographicalLocation) {CODE
LOW…ocation-menu/hooks/use-show-set-as-exit-menu-option.ts5export function useShowSetAsExitMenuOption(location: GeographicalLocation) {CODE
LOW…/hooks/use-map-redux-countries-to-country-locations.ts10export function useMapReduxCountriesToCountryLocations(CODE
LOW…ures/locations/hooks/use-is-providers-filter-active.ts5export function useIsProvidersFilterActive(locationType: LocationType) {CODE
LOW…graphical-location-in-relay-locations-for-hostnames.ts8export function useGetIsGeographicalLocationInRelayLocationsForHostnames(hostnames: string[]) {CODE
LOW…get-is-custom-list-in-relay-locations-for-hostnames.ts8export function useGetIsCustomListInRelayLocationsForHostnames(hostnames: string[]) {CODE
LOW…-is-relay-location-in-relay-locations-for-hostnames.ts8export function useGetIsRelayLocationInRelayLocationsForHostnames(hostnames: string[]) {CODE
LOW…locations/hooks/use-selected-entry-or-exit-location.ts6export function useSelectedEntryOrExitLocation(CODE
LOW…ures/locations/hooks/use-is-ownership-filter-active.ts5export function useIsOwnershipFilterActive(locationType: LocationType) {CODE
LOW…s/locations/hooks/use-map-custom-lists-to-locations.ts16export function useMapCustomListsToLocations(CODE
LOW…atures/locations/hooks/use-filter-country-locations.ts8export function useFilterCountryLocations(locationType: LocationType) {CODE
LOW…atures/locations/hooks/use-relay-locations-discards.ts6export function useRelayLocationsDiscardsHostnames(locationType: LocationType) {CODE
LOW…atures/locations/hooks/use-search-country-locations.ts6export function useSearchCountryLocations(CODE
LOW…eatures/locations/hooks/use-relay-locations-matches.ts6export function useRelayLocationsMatchesHostnames(locationType: LocationType) {CODE
LOW…es/locations/hooks/use-search-custom-list-locations.ts6export function useSearchCustomListLocations(CODE
LOW…/features/migration/utils/settings-migration-to-key.ts62function isSplitFilterMigrationScenario(CODE
LOW…ures/migration/hooks/use-latest-completed-migration.ts5export function useLatestCompletedMigration(): SettingsMigration | undefined {CODE
215 more matches not shown…
Decorative Section Separators16 hits · 66 pts
SeverityFileLineSnippetContext
MEDIUM⚡ci/ios/reboot_phone.sh19# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh21# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh27# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh30# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh43# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh48# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh57# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh59# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh67# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh69# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh74# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡ci/ios/reboot_phone.sh76# ------------------------------------------------------------------------------COMMENT
MEDIUMci/ios/reboot_phone.sh95# ------------------------------------------------------------------------------COMMENT
MEDIUMci/ios/reboot_phone.sh97# ------------------------------------------------------------------------------COMMENT
MEDIUMmullvad-types/src/constraints/mod.rs140 // ── Struct derive ─────────────────────────────────────────────────────────COMMENT
MEDIUMmullvad-types/src/constraints/mod.rs163 // ── Enum derive ───────────────────────────────────────────────────────────COMMENT
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICALmullvad-daemon/src/tunnel.rs234 let tunnel_ipv4 = data.device.wg_data.addresses.ipv4_address.ip();CODE
CRITICALmullvad-daemon/src/tunnel.rs235 let tunnel_ipv6 = data.device.wg_data.addresses.ipv6_address.ip();CODE
Fake / Example Data19 hits · 20 pts
SeverityFileLineSnippetContext
LOW…/select-location/components/header-menu/HeaderMenu.tsx77 <Menu.Option.Item.Icon icon="placeholder" />CODE
LOW…/select-location/components/header-menu/HeaderMenu.tsx95 <Menu.Option.Item.Icon icon="placeholder" />CODE
LOW…/select-location/components/header-menu/HeaderMenu.tsx113 <Menu.Option.Item.Icon icon="placeholder" />CODE
LOW…-location-selector/components/entry-item/EntryItem.tsx9 'name' | 'placeholder' | 'value' | 'id' | 'type'CODE
LOW…ct-location-selector/components/exit-item/ExitItem.tsx9 'name' | 'placeholder' | 'value' | 'id' | 'type'CODE
LOW…el/components/feature-indicators/FeatureIndicators.tsx75// To solve this the indicators are first rendered hidden along with a invisible "placeholder"COMMENT
LOW…llvad-vpn/src/renderer/lib/components/wizard/README.md15 Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW…llvad-vpn/src/renderer/lib/components/wizard/README.md15 Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW…llvad-vpn/src/renderer/lib/components/wizard/README.md30 Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW…llvad-vpn/src/renderer/lib/components/wizard/README.md30 Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW…vad-vpn/src/renderer/lib/components/carousel/README.md15 Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW…vad-vpn/src/renderer/lib/components/carousel/README.md15 Lorem ipsum dolor sit amet, consectetur adipiscing elit.CODE
LOW…/mullvad-vpn/src/renderer/lib/components/icon/Icon.tsx7 icon: keyof typeof icons | 'placeholder';CODE
LOW…/mullvad-vpn/src/renderer/lib/components/icon/Icon.tsx52 if (iconProp === 'placeholder') {CODE
LOW…lvad/mullvadvpn/lib/ui/component/dialog/InputDialog.kt31 message = AnnotatedString("Lorem ipsum"),CODE
LOW…d/mullvadvpn/feature/account/impl/AccountScreenTest.kt113 private const val DUMMY_DEVICE_NAME = "fake_name"CODE
LOW…ullvadvpn/feature/account/impl/AccountViewModelTest.kt46 name = "fake_name",CODE
LOW…ullvadvpn/feature/account/impl/AccountViewModelTest.kt128 private const val DUMMY_DEVICE_NAME = "fake_name"CODE
LOW…pl/viewlogs/ViewLogsUiStatePreviewParameterProvider.kt11 val text = List(SIZE) { "Lorem ipsum dolor ".repeat(SIZE) }CODE
AI Slop Vocabulary6 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUMCargo.toml185# Easy to read style and opinionated best practicesCOMMENT
MEDIUMmullvad-update/src/format/mod.rs5//! Fundamentally, a version object is a JSON object with a `signed` key and a `signature` key.COMMENT
MEDIUMtest/Cargo.toml67# Easy to read style and opinionated best practicesCOMMENT
MEDIUMci/ios/test-router/raas/Cargo.toml54# Easy to read style and opinionated best practicesCOMMENT
LOWmullvad-relay-selector/src/relay_selector/relays.rs27/// # Why not simply use [`WireguardRelay`]?COMMENT
LOWmullvad-relay-selector/src/relay_selector/relays.rs37/// # Why not simply use [`WireguardRelay`]?COMMENT
Self-Referential Comments5 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUMtest/test-manager/test_macro/src/lib.rs33/// ## Create a standard test.COMMENT
MEDIUMtest/test-manager/test_macro/src/lib.rs48/// ## Create a test with custom parametersCOMMENT
MEDIUMci/ios/create-vm/install-vanilla-ventura.pkr.hcl52 # Create a Computer AccountCOMMENT
MEDIUM.github/workflows/ios-end-to-end-tests.yml57 # Define the set of tests to run based on the event type and inputCOMMENT
MEDIUMmullvad-ios/deny.toml1# This file is for an additional check to prevent GPL-3.0-or-later licensed cratesCOMMENT
Structural Annotation Overuse8 hits · 12 pts
SeverityFileLineSnippetContext
LOWtest/test-manager/src/tests/audits/mul_02_002.rs35 // Step 1 - Choose a relayCOMMENT
LOWtest/test-manager/src/tests/audits/mul_02_002.rs50 // Step 2 - Start a network monitor snooping the outbound network interface for someCOMMENT
LOWtest/test-manager/src/tests/audits/mul_02_002.rs62 // Step 3 - Start the rogue program which will try to leak the unique identifier payloadCOMMENT
LOWtest/test-manager/src/tests/audits/mul_02_002.rs78 // Step 4 - Finally, connect to a tunnel and assert that no outgoing traffic contains theCOMMENT
LOWmullvad-problem-report/src/lib.rs522 // IMPORTANT: Make sure this implementation stays in sync with `parse_metadata` below.COMMENT
LOWmullvad-problem-report/src/lib.rs542 // IMPORTANT: Make sure this implementation stays in sync with `write_to` above.COMMENT
LOW…/mullvad/mullvadvpn/lib/common/util/VpnServiceUtils.kt64// NOTE: This function will return the current Always-on VPN package's name. In case of eitherCOMMENT
LOWtalpid-tunnel/src/tun_provider/unix.rs166 // NOTE: This function does seemingly have an effect on Linux, despite what the deprecationCOMMENT
Redundant / Tautological Comments7 hits · 10 pts
SeverityFileLineSnippetContext
LOWbuild.sh58# Check if we are a building a release. Meaning we are configured to build with optimizations,COMMENT
LOWci/verify-locked-down-signatures.sh81 # Check if important file has been removed.COMMENT
LOWci/mullvad-browser/download-mullvad-browser.sh67 # Check if the deb package has changed since last timeCOMMENT
LOWinstaller-downloader/build.sh332# Check if the current commit has a signed tagCOMMENT
LOWdist-assets/linux/before-remove.sh11# Check if we're running during an upgrade step on FedoraCOMMENT
LOWdist-assets/linux/after-install.sh10# Check if the system supports a new-enough AppArmor version.COMMENT
LOWandroid/scripts/check-empty-strings.sh3# Check if any string, plural or relay location is empty across all locales.COMMENT
TODO Padding3 hits · 4 pts
SeverityFileLineSnippetContext
LOWtest/test-rpc/src/transport.rs404 // TODO: implement without copyingCOMMENT
LOWtalpid-dbus/src/lib.rs4#[cfg(feature = "libdbus")] // TODO: implement network_manager using zbusCOMMENT
LOWtalpid-wireguard/src/gotatun/conversions.rs26 // TODO: implement zeroize in gotatunCOMMENT
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWdesktop/packages/mullvad-vpn/crowdin.yml1# Usage:COMMENT
LOWios/translation/crowdin.yml2# Usage:COMMENT
LOWandroid/scripts/run-instrumented-tests-repeat.sh5# Usage:COMMENT
Excessive Try-Catch Wrapping2 hits · 3 pts
SeverityFileLineSnippetContext
LOW…/packages/mullvad-vpn/scripts/fetch-relay-locations.py28 except Exception as e:CODE
MEDIUM…/packages/mullvad-vpn/scripts/fetch-relay-locations.py25def extract_relay_translations():CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…kages/mullvad-vpn/scripts/integrate-relay-locations.py7CODE
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWios/MullvadVPN/BackgroundTask.swift16 When adding new background tasks, don't forget to update `BGTaskSchedulerPermittedIdentifiers` key in `Info.plist` by aCODE