AI Slop Code Risk Monitor

nextcloud/all-in-one

SlopCodeMonitor badge for nextcloud/all-in-one Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

📦 The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.

3.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for nextcloud/all-in-one, a PHP project with 10,770 GitHub stars. SynthScan examined 36,558 lines of code across 350 source files, recording 104 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 3.9 (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.

3.9
Adjusted Signal
3.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
10.8K
Stars
PHP
Language
36.6K
Lines of Code
350
Files
104
Pattern Hits
2026-10-31
Scan Date
0.01
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 17.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 8.1/100 · LOW

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

PR Review Velocity Impact 16.3/100 · LOW

Which changes need focused human review? 104 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 0HIGH 2MEDIUM 8LOW 94

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 104 distinct pattern matches across 7 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.

Hyper-Verbose Identifiers59 hits · 62 pts
SeverityFileLineSnippetContext
LOWapp/composer/composer/InstalledVersions.php58 public static function getInstalledPackagesByType($type)CODE
LOWphp/tests/tests/initial-setup.spec.js178async function getUnblockLoginPrivateKey() {CODE
LOWphp/public/containers-form-submit.js36 function checkForOptionContainerChanges() {CODE
LOWphp/public/containers-form-submit.js58 function checkForCommunityContainerChanges() {CODE
LOWphp/public/containers-form-submit.js92 function handleDockerSocketProxyWarning() {CODE
LOWphp/src/Docker/DockerActionManager.php70 public function GetContainerRestartingState(Container $container): ContainerState {CODE
LOWphp/src/Docker/DockerActionManager.php113 public function GetContainerStartingState(Container $container): ContainerState {CODE
LOWphp/src/Docker/DockerActionManager.php668 private function isContainerUpdateAvailable(string $id): string {CODE
LOWphp/src/Docker/DockerActionManager.php727 private function GetAllNextcloudExecCommands(): string {CODE
LOWphp/src/Docker/DockerActionManager.php732 private function GetRepoDigestsOfContainer(string $containerName): ?array {CODE
LOWphp/src/Docker/DockerActionManager.php827 public function IsMastercontainerUpdateAvailable(): bool {CODE
LOWphp/src/Docker/DockerActionManager.php917 private function DisconnectContainerFromBridgeNetwork(string $id): void {CODE
LOWphp/src/Docker/DockerActionManager.php937 private function ConnectContainerIdToNetwork(string $id, string $internalPort, string $network = 'nextcloud-aio', boCODE
LOWphp/src/Docker/DockerActionManager.php989 public function ConnectMasterContainerToNetwork(): void {CODE
LOWphp/src/Docker/DockerActionManager.php995 public function ConnectContainerToNetwork(Container $container): void {CODE
LOWphp/src/Docker/DockerActionManager.php1027 public function GetBackupcontainerExitCode(): int {CODE
LOWphp/src/Docker/DockerActionManager.php1049 public function GetDatabasecontainerExitCode(): int {CODE
LOWphp/src/Docker/DockerActionManager.php1089 private function GetCreatedTimeOfNextcloudImage(string $imageName): ?string {CODE
LOWphp/src/Docker/DockerActionManager.php1106 public function GetAndGenerateSecretWrapper(string $secretId): string {CODE
LOWphp/src/Docker/DockerActionManager.php1138 public function RunNextcloudUpgradeToLatestMajor(\Closure $addToStreamingResponseBody): void {CODE
LOWphp/src/Auth/AuthManager.php111 public function IsLoginUnblockedForSession() : bool {CODE
LOWphp/src/Auth/AuthManager.php116 public function RegisterFailedLoginAttempt() : void {CODE
LOWphp/src/Controller/DockerController.php30 private function PerformRecursiveContainerStart(string $id, bool $pullImage = true, ?\Closure $addToStreamingResponsCODE
LOWphp/src/Controller/DockerController.php53 private function PerformRecursiveImagePull(string $id) : void {CODE
LOWphp/src/Controller/DockerController.php94 public function StartBackupContainerBackup(Request $request, Response $response, array $args) : Response {CODE
LOWphp/src/Controller/DockerController.php117 public function StartBackupContainerCheck(Request $request, Response $response, array $args) : Response {CODE
LOWphp/src/Controller/DockerController.php155 public function StartBackupContainerRestore(Request $request, Response $response, array $args) : Response {CODE
LOWphp/src/Controller/DockerController.php178 public function StartBackupContainerCheckRepair(Request $request, Response $response, array $args) : Response {CODE
LOWphp/src/Controller/DockerController.php298 private function PerformRecursiveContainerStop(string $id, bool $forceStopNextcloud = false, ?\Closure $addToStreamiCODE
LOWphp/src/Controller/DockerController.php345 public function RunNextcloudUpgradeToLatestMajor(Request $request, Response $response, array $args) : Response {CODE
LOWphp/src/Controller/DockerController.php382 public function StartDomaincheckContainer() : voidCODE
LOWphp/src/Controller/DockerController.php424 private function getStreamingResponseHtmlStart() : string {CODE
LOWphp/src/Controller/DockerController.php459 private function getAddToStreamingResponseBody(Response $nonbufResp) : \Closure {CODE
LOW⚡php/src/Controller/DockerController.php482 private function finalizeStreamingResponse(Response $nonbufResp) : void {CODE
LOW⚡php/src/Controller/DockerController.php486 private function getStreamingResponseHtmlEnd() : string {CODE
LOW⚡php/src/Controller/DockerController.php490 private function getTimestampForDockerLogsApiSince(string $input) : stringCODE
LOWphp/src/Data/DataConst.php39 public static function GetAdditionalBackupDirectoriesFile() : string {CODE
LOW⚡php/src/Data/DataConst.php59 public static function GetCommunityContainersDirectory() : string {CODE
LOW⚡php/src/Data/DataConst.php63 public static function GetCollaboraSeccompProfilePath() : string {CODE
LOW⚡php/src/Data/DataConst.php67 public static function GetContainersDefinitionPath() : string {CODE
LOWphp/src/Data/ConfigurationManager.php280 public function isDesecAwaitingVerification(): bool {CODE
LOWphp/src/Data/ConfigurationManager.php423 private function setDockerSocketProxyEnabled(bool $value) : void {CODE
LOWphp/src/Data/ConfigurationManager.php522 public function getAndGenerateSecret(string $secretId) : string {CODE
LOWphp/src/Data/ConfigurationManager.php809 public function deleteBorgBackupLocationItems() : void {CODE
LOWphp/src/Data/ConfigurationManager.php827 public function setBorgRestoreLocationVarsAndPassword(string $location, string $repo, string $password) : void {CODE
LOWphp/src/Data/ConfigurationManager.php905 private function getEnvironmentalVariableOrConfig(string $envVariableName, string $configName, string $defaultValue)CODE
LOWphp/src/Data/ConfigurationManager.php932 public function getCollaboraSeccompPolicy() : string {CODE
LOWphp/src/Data/ConfigurationManager.php978 private function getDailyBackupFileContent() : string {CODE
LOWphp/src/Data/ConfigurationManager.php1009 public function areAutomaticUpdatesEnabled() : bool {CODE
LOWphp/src/Data/ConfigurationManager.php1030 public function setAdditionalBackupDirectories(string $additionalBackupDirectories) : void {CODE
LOWphp/src/Data/ConfigurationManager.php1051 public function getAdditionalBackupDirectoriesString() : string {CODE
LOWphp/src/Data/ConfigurationManager.php1058 public function getAdditionalBackupDirectoriesArray() : array {CODE
LOWphp/src/Data/ConfigurationManager.php1089 public function shouldDomainValidationBeSkipped(bool $skipDomainValidation) : bool {CODE
LOWphp/src/Data/ConfigurationManager.php1096 public function getApacheAdditionalNetwork() : string {CODE
LOWphp/src/Data/ConfigurationManager.php1115 private function validateCollaboraDictionaries(string $CollaboraDictionaries) : void {CODE
LOWphp/src/Data/ConfigurationManager.php1128 public function deleteCollaboraDictionaries() : void {CODE
LOWphp/src/Data/ConfigurationManager.php1135 private function validateCollaboraAdditionalOptions(string $additionalCollaboraOptions) : void {CODE
LOWphp/src/Data/ConfigurationManager.php1148 public function deleteAdditionalCollaboraOptions() : void {CODE
LOWphp/src/Data/ConfigurationManager.php1152 public function listAvailableCommunityContainers() : array {CODE
Redundant / Tautological Comments22 hits · 35 pts
SeverityFileLineSnippetContext
LOWContainers/nextcloud/entrypoint.sh67 # Check if variable is an actual certCOMMENT
LOWContainers/nextcloud/entrypoint.sh187 # Check if it skips a major versionCOMMENT
LOWContainers/nextcloud/entrypoint.sh591 # Check if appdata is presentCOMMENT
LOWContainers/nextcloud/start.sh50# Check if /dev/dri device is present and apply correct permissionsCOMMENT
LOWContainers/postgresql/start.sh31# Check if dump dir is writeableCOMMENT
LOWContainers/postgresql/start.sh107 # Check if the line we grep for later on is thereCOMMENT
LOWContainers/borgbackup/backupscript.sh40# Check if target is mountpointCOMMENT
LOWContainers/borgbackup/backupscript.sh46# Check if repo is uninitializedCOMMENT
LOWContainers/mastercontainer/daily-backup.sh9# Check if initial configuration has been done, otherwise this script should do nothing.COMMENT
LOWContainers/mastercontainer/daily-backup.sh38# Check if apache is running/stopped, watchtower is stopped and backupcontainer is stoppedCOMMENT
LOWContainers/mastercontainer/cron.sh57 # Check if AIO is outdatedCOMMENT
LOWContainers/mastercontainer/start.sh27# Check if running as root userCOMMENT
LOWContainers/mastercontainer/start.sh39# Check if socket is available and readableCOMMENT
LOWContainers/mastercontainer/start.sh62 # Check if a group with the same group name of /var/run/docker.socket already exists in the containerCOMMENT
LOWContainers/mastercontainer/start.sh90# Check if DOCKER_API_VERSION is set globallyCOMMENT
LOWContainers/mastercontainer/start.sh110# Check if docker info can be usedCOMMENT
LOW⚡Containers/mastercontainer/start.sh147# Check if vfs is used: https://github.com/nextcloud/all-in-one/discussions/1467COMMENT
LOW⚡Containers/mastercontainer/start.sh156# Check if snap installCOMMENT
LOW⚡Containers/mastercontainer/start.sh163# Check if startup command was executed correctlyCOMMENT
LOWContainers/mastercontainer/start.sh358# Check if ghcr.io is reachableCOMMENT
LOWContainers/mastercontainer/start.sh394# Check if unsupported env are set (but don't exit as it would break many instances)COMMENT
LOWContainers/watchtower/start.sh7# Check if socket is available and readableCOMMENT
Slop Phrases8 hits · 14 pts
SeverityFileLineSnippetContext
LOWcompose.yaml10 - /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applCODE
LOWcompose.yaml10 - /var/run/docker.sock:/var/run/docker.sock:ro # May be changed on macOS, Windows or docker rootless. See the applCODE
MEDIUMnextcloud-aio-helm-chart/values.yaml47STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes. This should be a fast storagCODE
MEDIUMnextcloud-aio-helm-chart/values.yaml64NAMESPACE: default # By changing this, you can adjust the namespace of the installation which allows to install mCODE
MEDIUMnextcloud-aio-helm-chart/values.yaml65NAMESPACE_DISABLED: "no" # By setting this to "yes", you can disabled the creation of the namespace so that you cCODE
MEDIUMnextcloud-aio-helm-chart/update-helm.sh445echo 'STORAGE_CLASS: # By setting this, you can adjust the storage class for your volumes. This should be a fast CODE
MEDIUMnextcloud-aio-helm-chart/update-helm.sh456NAMESPACE: default # By changing this, you can adjust the namespace of the installation which allows to install mCODE
MEDIUMnextcloud-aio-helm-chart/update-helm.sh457NAMESPACE_DISABLED: "no" # By setting this to "yes", you can disabled the creation of the namespace so that you cCODE
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHAGENTS.md90See [HowToApplyALicense.md](https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md) for detailCODE
HIGHphp/src/Docker/DockerActionManager.php1158 // Special-case images prune to include the dangling filter as requestedCOMMENT
Over-Commented Block11 hits · 11 pts
SeverityFileLineSnippetContext
LOWcompose.yaml21 # APACHE_PORT: 11000 # Needed when running behind a web server or reverse proxy (like Apache, Nginx, Caddy, CloudfCOMMENT
LOWcompose.yaml41 # TALK_PORT: 3478 # This allows to adjust the port that the talk container is using which is exposed on the host. COMMENT
LOWcompose.yaml61# configs:COMMENT
LOWcompose.yaml81# driver_opts:COMMENT
LOWnextcloud-aio-helm-chart/update-helm.sh221# shellcheck disable=SC1083COMMENT
LOWphp/tests/tests/desec-existing.spec.js1import { test, expect } from '@playwright/test';COMMENT
LOWphp/tests/tests/desec-register.spec.js1import { test, expect } from '@playwright/test';COMMENT
LOWphp/src/Docker/DockerActionManager.php481 // This is needed due to a bug in libwebsockets used in Janus which cannot handle unlimited ulimitsCOMMENT
LOW.github/workflows/desec-api-version-watch.yml1name: deSEC API version watchCOMMENT
LOW.github/workflows/dependency-updates.yml21 cd ./phpCOMMENT
LOW.github/scripts/get-helm-chart-branch.sh1#!/bin/bashCOMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMContainers/borgbackup/backupscript.sh220 # Create the backupCOMMENT
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMContainers/borgbackup/backupscript.sh477 # More robust than e.g. xargs as I got a ~"args line too long" error while testing that, but it's slowerCOMMENT