☁️ Nextcloud server, a safe home for all your data
This report summarizes scanner evidence for nextcloud/server, a PHP project with 37,367 GitHub stars. SynthScan examined 1,621,918 lines of code across 11158 source files, recording 5728 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 3.7 (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? 5422 finding(s).
Are imports declared and package/API names verified? 283 finding(s).
Are wrappers, guards, and repeated structures necessary? 5367 finding(s).
Which changes need focused human review? 5728 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 5728 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| LOW | core/Migrations/Version32000Date20250731062008.php | 41 | private function cleanupDuplicateCategories(IOutput $output): void { | CODE |
| LOW | core/Migrations/Version32000Date20250731062008.php | 110 | private function cleanupDuplicateAssignments(IOutput $output, int $categoryId, int $keepId): void { | CODE |
| LOW | core/Sharing/Recipient/UserShareRecipientType.php | 91 | public function getRecipientInteractionReceiver(string $recipient): InteractionReceiver { | CODE |
| LOW | core/Sharing/Recipient/GroupShareRecipientType.php | 87 | public function getRecipientInteractionReceiver(string $recipient): InteractionReceiver { | CODE |
| LOW | core/Sharing/Recipient/TokenShareRecipientType.php | 56 | public function getRecipientInteractionReceiver(string $recipient): InteractionReceiver { | CODE |
| LOW | core/Sharing/Recipient/TeamShareRecipientType.php | 87 | public function getRecipientInteractionReceiver(string $recipient): InteractionReceiver { | CODE |
| LOW | core/Sharing/Recipient/EmailShareRecipientType.php | 63 | public function getRecipientInteractionReceiver(string $recipient): InteractionReceiver { | CODE |
| LOW | …e/Sharing/Property/ExpirationDateSharePropertyType.php | 159 | private function hasLocalNonTokenAndEmailRecipient(Share $share): bool { | CODE |
| LOW | core/Controller/CollaborationResourcesController.php | 205 | public function createCollectionOnResource(string $baseResourceType, string $baseResourceId, string $name): DataRespons | CODE |
| LOW | core/Controller/AppPasswordController.php | 227 | public function getAppPasswordWithOneTimePassword(): DataResponse { | CODE |
| LOW | core/Controller/LoginController.php | 206 | private function setPasswordResetInitialState(?string $username): void { | CODE |
| LOW | core/Controller/LoginController.php | 370 | private function createLoginFailedResponse( | CODE |
| LOW | core/Controller/TwoFactorChallengeController.php | 51 | private function splitProvidersAndBackupCodes(array $providers): array { | CODE |
| LOW | core/Controller/TaskProcessingApiController.php | 165 | private function handleScheduleTaskInternal( | CODE |
| LOW | core/Controller/TaskProcessingApiController.php | 831 | public function getNextScheduledTaskBatch(array $providerIds, array $taskTypeIds, int $numberOfTasks = 1): DataResponse | CODE |
| LOW | core/Controller/TaskProcessingApiController.php | 904 | private function intersectTaskTypesAndProviders(array $taskTypeIds, array $providerIds): array { | CODE |
| LOW | core/Controller/ClientFlowLoginController.php | 86 | private function stateTokenForbiddenResponse(): StandaloneTemplateResponse { | CODE |
| LOW | core/Controller/ClientFlowLoginV2Controller.php | 328 | private function stateTokenMissingResponse(): StandaloneTemplateResponse { | CODE |
| LOW | core/Controller/ClientFlowLoginV2Controller.php | 341 | private function stateTokenForbiddenResponse(): StandaloneTemplateResponse { | CODE |
| LOW | core/Controller/ClientFlowLoginV2Controller.php | 368 | private function loginTokenForbiddenResponse(): StandaloneTemplateResponse { | CODE |
| LOW | core/Controller/ClientFlowLoginV2Controller.php | 381 | private function loginTokenForbiddenClientResponse(): StandaloneTemplateResponse { | CODE |
| LOW | core/Command/Base.php | 98 | protected function writeStreamingTableInOutputFormat(InputInterface $input, OutputInterface $output, \Iterator $items, | CODE |
| LOW | core/Command/Encryption/EncryptAll.php | 37 | protected function forceMaintenanceAndTrashbin(): void { | CODE |
| LOW | core/Command/Encryption/EncryptAll.php | 46 | protected function resetMaintenanceAndTrashbin(): void { | CODE |
| LOW | core/Command/Encryption/DecryptAll.php | 38 | protected function forceMaintenanceAndTrashbin(): void { | CODE |
| LOW | core/Command/Encryption/DecryptAll.php | 48 | protected function resetMaintenanceAndTrashbin(): void { | CODE |
| LOW | core/Command/TwoFactorAuth/State.php | 64 | private function filterEnabledDisabledUnknownProviders(array $providerStates): array { | CODE |
| LOW | core/Command/User/AuthTokens/ListCommand.php | 75 | public function formatTokenForPlainOutput(array $token): array { | CODE |
| LOW | core/Command/Db/Migrations/GenerateMetadataCommand.php | 59 | private function extractMigrationMetadataFromCore(): array { | CODE |
| LOW | core/Command/Db/Migrations/GenerateMetadataCommand.php | 69 | private function extractMigrationMetadataFromApps(): array { | CODE |
| LOW | core/Command/Preview/Cleanup.php | 52 | private function deletePreviewFromPreviewTable(OutputInterface $output): int { | CODE |
| LOW | core/Command/Preview/Cleanup.php | 66 | private function deletePreviewFromFileCacheTable(OutputInterface $output): int { | CODE |
| LOW | core/Command/Maintenance/RepairShareOwnership.php | 120 | protected function getWrongShareOwnershipForUser(IUser $user): array { | CODE |
| LOW | core/src/components/AppMenu.vue | 377 | function tryRecomputeGridMaxHeight(retries: number) { | CODE |
| LOW | …src/components/AccountMenu/AccountMenuProfileEntry.vue | 66 | function handleProfileEnabledUpdate(enabled: boolean) { | CODE |
| LOW | tests/Core/Middleware/TwoFactorMiddlewareTest.php | 108 | public function testBeforeControllerNotLoggedIn(): void { | CODE |
| LOW | tests/Core/Middleware/TwoFactorMiddlewareTest.php | 122 | public function testBeforeSetupController(): void { | CODE |
| LOW | tests/Core/Middleware/TwoFactorMiddlewareTest.php | 136 | public function testBeforeControllerNoTwoFactorCheckNeeded(): void { | CODE |
| LOW | tests/Core/Middleware/TwoFactorMiddlewareTest.php | 156 | public function testBeforeControllerTwoFactorAuthRequired(): void { | CODE |
| LOW | tests/Core/Middleware/TwoFactorMiddlewareTest.php | 182 | public function testBeforeControllerUserAlreadyLoggedIn(): void { | CODE |
| LOW | tests/Core/Middleware/TwoFactorMiddlewareTest.php | 208 | public function testAfterExceptionTwoFactorAuthRequired(): void { | CODE |
| LOW⚡ | tests/Core/Listener/AvatarVersionListenerTest.php | 27 | public function testBumpsTheVersionWhenTheAccountChanges(): void { | CODE |
| LOW⚡ | tests/Core/Listener/AvatarVersionListenerTest.php | 37 | public function testBumpsTheVersionWhenTheAccountIsDisabled(): void { | CODE |
| LOW⚡ | tests/Core/Listener/AvatarVersionListenerTest.php | 47 | public function testIgnoresUnrelatedUserChanges(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 60 | public function testShareActionApiDisabled(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 71 | public function testShareActionDisabledForUser(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 90 | public function testShareActionUserReceiverGroupMembersOnly(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 111 | public function testShareActionUserReceiverGroupMembersOnlyExclude(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 135 | public function testShareActionGroupReceiverGroupMembersOnly(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 151 | public function testShareActionGroupReceiverGroupMembersOnlyExclude(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 170 | public function testShareActionGroupReceiverGroupSharingDisabled(): void { | CODE |
| LOW | tests/Core/Listener/RestrictInteractionListenerTest.php | 187 | public function testShareActionLinkEmailReceiverLinkSharingDisabled(): void { | CODE |
| LOW | …/Core/Sharing/Recipient/TeamShareRecipientTypeTest.php | 133 | public function testGetRecipientDisplayName(): void { | CODE |
| LOW | …Core/Sharing/Recipient/GroupShareRecipientTypeTest.php | 111 | public function testGetRecipientDisplayName(): void { | CODE |
| LOW | …Core/Sharing/Recipient/EmailShareRecipientTypeTest.php | 69 | public function testGetRecipientDisplayName(): void { | CODE |
| LOW | …/Core/Sharing/Recipient/UserShareRecipientTypeTest.php | 102 | public function testGetRecipientDisplayName(): void { | CODE |
| LOW | …ore/Sharing/Property/PasswordSharePropertyTypeTest.php | 118 | public function testIsExpiredEmailPasswordFiltered(): void { | CODE |
| LOW | tests/Core/Notification/CoreNotifierTest.php | 23 | public function testPrepareCodeIntegrityChanged(): void { | CODE |
| LOW | tests/Core/Controller/LostControllerTest.php | 173 | public function testResetFormTokenErrorWithDisabledLink(): void { | CODE |
| LOW | tests/Core/Controller/LostControllerTest.php | 339 | public function testEmailWithMailSuccessful(): void { | CODE |
| 5284 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | core/src/tests/utils/mountInPlace.spec.ts | 20 | return () => h('nav', { id: 'placeholder', ref: root }, String(count.value)) | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 32 | document.body.innerHTML = '<header><nav id="placeholder"></nav></header>' | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 34 | mountInPlace(createApp(Counter), document.getElementById('placeholder')!) | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 37 | expect(document.querySelector('header')!.innerHTML).toBe('<nav id="placeholder">0</nav>') | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 41 | document.body.innerHTML = '<div id="placeholder"></div>' | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 43 | mountInPlace(createApp(Counter), document.getElementById('placeholder')!) | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 49 | document.body.innerHTML = '<div id="placeholder"></div>' | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 51 | const instance = mountInPlace(app, document.getElementById('placeholder')!) as unknown as { increment: () => void } | CODE |
| LOW⚡ | core/src/tests/utils/mountInPlace.spec.ts | 55 | expect(document.body.innerHTML).toBe('<nav id="placeholder">1</nav>') | CODE |
| LOW | …e/src/tests/components/AccountMenuProfileEntry.spec.ts | 115 | ['settings:display-name:updated', 'Jane Doe', 'data-name', 'Jane Doe'], | CODE |
| LOW | …tests/components/ContactsMenu/ContactMenuEntry.spec.ts | 18 | fullName: 'Jane Doe', | CODE |
| LOW | …tests/components/ContactsMenu/ContactMenuEntry.spec.ts | 30 | expect(avatar.props('displayName')).toBe('Jane Doe') | CODE |
| LOW | …tests/components/ContactsMenu/ContactMenuEntry.spec.ts | 39 | fullName: 'Jane Doe', | CODE |
| LOW | …/components/UnifiedSearch/SearchResultPlaceholders.vue | 50 | <li v-for="placeholder in [1, 2, 3]" :key="placeholder"> | CODE |
| LOW | …Core/Sharing/Recipient/EmailShareRecipientTypeTest.php | 82 | $this->assertNull($this->recipientType->getRecipientDisplayName('example@example.org', null)); | CODE |
| LOW | tests/Core/Controller/LostControllerTest.php | 589 | ->willReturn('random@example.org'); | CODE |
| LOW⚡ | tests/playwright/e2e/settings/personal-info.spec.ts | 137 | await profileContactPage.setProperty('Full name', 'Jane Doe') | CODE |
| LOW⚡ | tests/playwright/e2e/settings/personal-info.spec.ts | 140 | await expect(profileContactPage.property('Full name')).toHaveValue('Jane Doe') | CODE |
| LOW⚡ | tests/playwright/e2e/settings/personal-info.spec.ts | 148 | await expect(page.getByRole('heading', { name: 'Jane Doe' })).toBeVisible() | CODE |
| LOW | tests/playwright/e2e/users/users.spec.ts | 45 | await dialog.getByLabel(/Email/).fill('john@example.org') | CODE |
| LOW | tests/playwright/e2e/users/users-modify.spec.ts | 22 | await displayNameInput.fill('John Doe') | CODE |
| LOW | tests/playwright/e2e/users/users-modify.spec.ts | 31 | expect(info?.display_name).toBe('John Doe') | CODE |
| LOW | …s/playwright/e2e/workflowengine/admin-settings.spec.ts | 143 | await expect(rule.valueInput()).toHaveAttribute('placeholder', '::1/128') | CODE |
| LOW | …ht/e2e/files_sharing/reshare-permission-bundle.spec.ts | 35 | await sharingTab.pickRecipient('reshare@example.org', { external: true }) | CODE |
| LOW | …ht/e2e/files_sharing/reshare-permission-bundle.spec.ts | 45 | await sharingTab.pickRecipient('owned@example.org', { external: true }) | CODE |
| LOW | …ht/e2e/files_sharing/reshare-permission-bundle.spec.ts | 60 | await sharingTab.pickRecipient('custom-reshare@example.org', { external: true }) | CODE |
| LOW | …ht/e2e/files_sharing/reshare-permission-bundle.spec.ts | 69 | await sharingTab.pickRecipient('custom-owned@example.org', { external: true }) | CODE |
| LOW | …t/e2e/files_sharing/public-share/header-avatar.spec.ts | 30 | await publicShare.setPublicName('John Doe') | CODE |
| LOW | …t/e2e/files_sharing/public-share/header-avatar.spec.ts | 44 | await publicShare.setPublicName('Jane Doe') | CODE |
| LOW | tests/lib/ImageTest.php | 57 | $text = base64_encode('Lorem ipsum dolor sir amet …'); | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 92 | 'placeholder' => 'Enter text setting', // placeholder | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 100 | 'placeholder' => 'Enter email', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 108 | 'placeholder' => 'Enter your tel', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 116 | 'placeholder' => 'Enter url', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 124 | 'placeholder' => 'Enter number value', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 132 | 'placeholder' => 'Set secure value', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 141 | 'placeholder' => 'Select some option setting', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 205 | 'placeholder' => 'Set secure value', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 215 | 'placeholder' => 'Set secure value', | CODE |
| LOW⚡ | tests/lib/Settings/DeclarativeManagerTest.php | 225 | 'placeholder' => 'Set secure value', | CODE |
| LOW | tests/lib/Settings/DeclarativeManagerTest.php | 58 | 'placeholder' => 'Select some multiple options', // input placeholder | CODE |
| LOW | tests/lib/Settings/DeclarativeManagerTest.php | 66 | 'placeholder' => 'Select single option, test interval', | CODE |
| LOW | tests/lib/Settings/DeclarativeManagerTest.php | 347 | 'placeholder' => 'Select some multiple options', | CODE |
| LOW | tests/lib/Settings/DeclarativeManagerTest.php | 372 | 'placeholder' => 'Some invalid field placeholder', | CODE |
| LOW | tests/lib/Settings/DeclarativeManagerTest.php | 435 | 'placeholder' => 'Select some multiple options', | CODE |
| LOW | …s/lib/Collaboration/Collaborators/RemotePluginTest.php | 209 | 'FN' => 'John Doe', | CODE |
| LOW | …sts/lib/Collaboration/Collaborators/MailPluginTest.php | 453 | 'EMAIL' => ['test@example.org'], | CODE |
| LOW | …sts/lib/Collaboration/Collaborators/MailPluginTest.php | 491 | 'EMAIL' => ['test@example.org'], | CODE |
| LOW | …sts/lib/Collaboration/Collaborators/MailPluginTest.php | 787 | 'EMAIL' => ['test@example.org'], | CODE |
| LOW | …sts/lib/Collaboration/Collaborators/MailPluginTest.php | 827 | 'EMAIL' => ['test@example.org'], | CODE |
| LOW | tests/lib/Comments/CommentTest.php | 168 | ['type' => 'user', 'id' => 'foo@bar.com'], | CODE |
| LOW⚡ | …/lib/Install/Events/InstallationCompletedEventTest.php | 18 | $adminEmail = 'admin@example.com'; | CODE |
| LOW⚡ | …/lib/Install/Events/InstallationCompletedEventTest.php | 54 | $adminEmail = 'admin@example.com'; | CODE |
| LOW⚡ | …/lib/Install/Events/InstallationCompletedEventTest.php | 65 | $event = new InstallationCompletedEvent('/path/to/data', null, 'admin@example.com'); | CODE |
| LOW⚡ | …/lib/Install/Events/InstallationCompletedEventTest.php | 69 | $this->assertEquals('admin@example.com', $event->getAdminEmail()); | CODE |
| LOW⚡ | …/lib/Install/Events/InstallationCompletedEventTest.php | 81 | $email = 'admin@example.com'; | CODE |
| LOW | tests/lib/Config/UserConfigMigrationFallbackTest.php | 99 | ['appid' => 'settings', 'configkey' => 'email', 'configvalue' => 'user@example.com'], | CODE |
| LOW | tests/lib/Config/UserConfigMigrationFallbackTest.php | 114 | $this->assertSame('user@example.com', $value); | CODE |
| LOW | tests/lib/Config/UserConfigMigrationFallbackTest.php | 170 | $userConfig->setValueString('user1', 'settings', 'email', 'user@example.com'); | CODE |
| LOW⚡ | tests/lib/Security/CryptoTest.php | 20 | ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt.'], | CODE |
| 219 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/playwright/support/sections/SettingsUsersPage.ts | 29 | // ── Sidebar navigation ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/support/sections/SettingsUsersPage.ts | 49 | // ── User list ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/support/sections/SettingsUsersPage.ts | 59 | // ── Dialogs ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ywright/support/sections/ProfileContactSettingsPage.ts | 57 | // ── Text properties ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ywright/support/sections/ProfileContactSettingsPage.ts | 79 | // ── Visibility and scope ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ywright/support/sections/ProfileContactSettingsPage.ts | 255 | // ── Profile ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ywright/support/sections/ProfileContactSettingsPage.ts | 272 | // ── Email addresses ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 21 | // ── Profile ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 55 | // ── Primary email ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 98 | // ── Additional emails ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/playwright/e2e/settings/personal-info.spec.ts | 132 | // ── Full name ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/playwright/e2e/settings/personal-info.spec.ts | 151 | // ── Phone number ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 201 | // ── Website ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 226 | // ── Fediverse ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 261 | // ── Profile properties (any value, all scopes) ──────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 292 | // ── Non-federated properties (local and private only) ───────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 325 | // ── Profile visibility ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/settings/personal-info.spec.ts | 337 | // ── Language & locale ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/users/users-groups.spec.ts | 16 | // ── Create group ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/users/users-groups.spec.ts | 38 | // ── Assign user to group ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/users/users-groups.spec.ts | 81 | // ── Delete an empty group ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/users/users-groups.spec.ts | 118 | // ── Delete a non-empty group ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/playwright/e2e/users/users-groups.spec.ts | 157 | // ── Sort groups ─────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | AGENTS.md | 103 | See [HowToApplyALicense.md](https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md) for detail | CODE |
| HIGH | lib/public/SystemTag/ISystemTagObjectMapper.php | 86 | * Assign the "Generated by AI" tag to the given object. | COMMENT |
| HIGH | lib/public/SystemTag/ISystemTag.php | 43 | public const GENERATED_BY_AI = 'Generated by AI'; | CODE |
| HIGH⚡ | apps/theming/lib/Themes/DefaultTheme.php | 201 | // Assistant colors (marking AI generated content) | COMMENT |
| HIGH⚡ | apps/theming/lib/Themes/DefaultTheme.php | 202 | '--color-background-assistant' => '#F6F5FF', // Background for AI generated content | CODE |
| HIGH⚡ | apps/theming/lib/Themes/DefaultTheme.php | 202 | '--color-background-assistant' => '#F6F5FF', // Background for AI generated content | CODE |
| HIGH⚡ | apps/theming/lib/Themes/DefaultTheme.php | 203 | '--color-border-assistant' => 'linear-gradient(125deg, #7398FE 50%, #6104A4 125%)', // Border for AI generated conten | CODE |
| HIGH⚡ | apps/theming/lib/Themes/DefaultTheme.php | 203 | '--color-border-assistant' => 'linear-gradient(125deg, #7398FE 50%, #6104A4 125%)', // Border for AI generated conten | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | autotest-external.sh | 241 | # start test execution | COMMENT |
| LOW | autotest-external.sh | 261 | # - grant all on oc_autotest0.* to 'oc_autotest0'@'localhost'; | COMMENT |
| LOW | autotest.sh | 441 | # | COMMENT |
| LOW | core/Migrations/Version24000Date20220404230027.php | 21 | /** | COMMENT |
| LOW | core/Migrations/Version24000Date20220404230027.php | 41 | // $table->addColumn('value', Types::TEXT, [ | COMMENT |
| LOW | core/Migrations/Version27000Date20230309104325.php | 61 | // $schema = $schemaClosure(); | COMMENT |
| LOW | core/Migrations/Version23000Date20210906132259.php | 21 | * @return null|ISchemaWrapper | COMMENT |
| LOW | core/Migrations/Version23000Date20210906132259.php | 41 | // $table->addColumn('delete_after', Types::DATETIME, [ | COMMENT |
| LOW | core/Migrations/Version28000Date20231126110901.php | 41 | // if ($table->hasColumn('lazy')) { | COMMENT |
| LOW | core/Migrations/Version29000Date20231126110901.php | 41 | // $table->addColumn('type', Types::INTEGER, ['notnull' => true, 'default' => 2]); | COMMENT |
| LOW | core/Migrations/Version13000Date20170718121200.php | 881 | // $table = $schema->createTable('credentials'); | COMMENT |
| LOW | core/css/header.scss | 141 | // On the entry, not this container: an outer margin here would widen this | COMMENT |
| LOW | tests/lib/Encryption/ManagerTest.php | 181 | // /** | COMMENT |
| LOW | tests/lib/Encryption/ManagerTest.php | 201 | // $em->expects($this->any())->method('getId')->willReturn(0); | COMMENT |
| LOW | tests/lib/Encryption/ManagerTest.php | 221 | // $m->registerEncryptionModule($em); | COMMENT |
| LOW | .devcontainer/entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | lib/public/OCM/IOCMProvider.php | 221 | * @return string | COMMENT |
| LOW | lib/private/Encryption/Keys/Storage.php | 121 | */ | COMMENT |
| LOW | lib/private/Files/Cache/QuerySearchHelper.php | 141 | * @param array<T, ICache> $caches | COMMENT |
| LOW | lib/private/DB/QueryBuilder/QueryBuilder.php | 181 | // likely an error during conversion of $value to string | COMMENT |
| LOW | apps/encryption/lib/Crypto/Encryption.php | 281 | $encrypted = ''; | COMMENT |
| LOW | …haring/lib/Migration/Version1000Date20260731171922.php | 21 | use OCP\Migration\Attributes\IndexType; | COMMENT |
| LOW | apps/user_ldap/lib/Access.php | 1861 | // The format of a SID binary string is as follows: | COMMENT |
| LOW | …sting/lib/Migration/Version30000Date20240102030405.php | 21 | use OCP\Migration\IOutput; | COMMENT |
| LOW | apps/files/src/components/VirtualList.vue | 361 | COMMENT | |
| LOW | apps/files/src/components/FileEntryMixin.ts | 481 | // Caching the selection | COMMENT |
| LOW | apps/dav/lib/Connector/Sabre/ExceptionLoggerPlugin.php | 41 | // (e.g. propfind for tags with string instead of int) | COMMENT |
| LOW | apps/dav/lib/CalDAV/Schedule/IMipService.php | 241 | $endTime = null; | COMMENT |
| LOW | apps/dav/lib/CalDAV/Schedule/IMipService.php | 381 | $startTime = $this->l10n->l('time', $er->startDateTime(), ['width' => 'short']); | COMMENT |
| LOW | apps/dav/lib/CalDAV/Schedule/IMipService.php | 441 | if ($er->recurringConcludes()) { | COMMENT |
| LOW | apps/dav/lib/CalDAV/Schedule/IMipService.php | 501 | } | COMMENT |
| LOW | apps/dav/lib/CalDAV/Schedule/IMipService.php | 581 | // Indicates when a calendar event will happen, shown on invitation emails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | lib/private/RedisFactory.php | 154 | * We need to check if the current version supports extra connection parameters, otherwise the connect method will thro | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 186 | // Step 1: Forced language always has precedence over anything else | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 192 | // Step 2: Return cached language | COMMENT |
| LOW | lib/private/L10N/Factory.php | 222 | // Step 4: Check the request headers | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 238 | // Step 5: fall back to English | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 244 | // Step 1: Forced language always has precedence over anything else | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 250 | // Step 2: Check if we have a default language | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 256 | // Step 3: fall back to English | COMMENT |
| LOW | lib/private/Lock/DBLockingProvider.php | 186 | // since we only keep one shared lock in the db we need to check if we have more than one shared lock locally manuall | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 139 | // Step 1: Delete ALL mappings from duplicate tags that conflict with keepId | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 143 | // Step 2: Update all remaining mappings from duplicates to keepId | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 151 | // Step 3: Delete duplicate tags in bulk (safe now that mappings are gone) | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 157 | // Step 4: Sanitize the kept tag name if needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | lib/private/L10N/Factory.php | 186 | // Step 1: Forced language always has precedence over anything else | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 192 | // Step 2: Return cached language | COMMENT |
| LOW | lib/private/L10N/Factory.php | 222 | // Step 4: Check the request headers | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 238 | // Step 5: fall back to English | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 244 | // Step 1: Forced language always has precedence over anything else | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 250 | // Step 2: Check if we have a default language | COMMENT |
| LOW⚡ | lib/private/L10N/Factory.php | 256 | // Step 3: fall back to English | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 139 | // Step 1: Delete ALL mappings from duplicate tags that conflict with keepId | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 143 | // Step 2: Update all remaining mappings from duplicates to keepId | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 151 | // Step 3: Delete duplicate tags in bulk (safe now that mappings are gone) | COMMENT |
| LOW⚡ | lib/private/Repair/RepairSanitizeSystemTags.php | 157 | // Step 4: Sanitize the kept tag name if needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …/updatenotification/src/views/AdminSettingsSection.vue | 450 | this.groups = response.data.ocs.data.groups.sort(function(a, b) { | CODE |
| CRITICAL | apps/files/src/sidebar/providers/filesStore.ts | 89 | window.OCP.Files.Router._router.afterEach((to, from) => { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | apps/files/src/utils/permissions.ts | 15 | * @return True if downloadable, false otherwise | COMMENT |
| HIGH | apps/files/src/utils/permissions.ts | 44 | * @return True if syncable, false otherwise | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/data/emails/new-account-email.html | 45 | <td class="nc-pad" style="padding:16px 36px 12px"> <p class="nc-muted" style="Margin:0 0 20px;color:#5c5c5c;fo | CODE |
| MEDIUM | tests/data/emails/new-account-email-custom.html | 45 | <td class="nc-pad" style="padding:16px 36px 12px"> <p class="nc-muted" style="Margin:0 0 20px;color:#5c5c5c;fo | CODE |
| MEDIUM | tests/data/emails/new-account-email-single-button.html | 45 | <td class="nc-pad" style="padding:16px 36px 12px"> <p class="nc-muted" style="Margin:0 0 20px;color:#5c5c5c;fo | CODE |
| MEDIUM | apps/settings/tests/Mailer/NewUserMailHelperTest.php | 195 | <td class="nc-pad" style="padding:16px 36px 12px"> <p class="nc-muted" style="Margin:0 0 20px;color:#5c5c5c;fo | CODE |
| MEDIUM | apps/settings/tests/Mailer/NewUserMailHelperTest.php | 313 | <td class="nc-pad" style="padding:16px 36px 12px"> <p class="nc-muted" style="Margin:0 0 20px;color:#5c5c5c;fo | CODE |
| MEDIUM | apps/settings/tests/Mailer/NewUserMailHelperTest.php | 435 | <td class="nc-pad" style="padding:16px 36px 12px"> <p class="nc-muted" style="Margin:0 0 20px;color:#5c5c5c;fo | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/update-min-supported-desktop.yml | 27 | # Create a temporary directory for the downloaded file | COMMENT |
| MEDIUM | .github/workflows/update-min-supported-desktop.yml | 74 | # Define the files to update | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/Core/Sharing/Recipient/TeamShareRecipientTypeTest.php | 30 | // TODO: Fix tests that fail when ran together with other test suites | COMMENT |
| LOW | apps/dav/lib/CalDAV/CalDavBackend.php | 1589 | // TODO: implement custom event for federated calendars | COMMENT |
| LOW | apps/dav/lib/CalDAV/CalDavBackend.php | 1672 | // TODO: implement custom event for federated calendars | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/update-min-supported-desktop.yml | 78 | # Check if files exist | COMMENT |
| LOW | .github/workflows/update-min-supported-desktop.yml | 99 | # Check if any changes were made | COMMENT |
| LOW | .github/workflows/command-compile.yml | 160 | # Check if there are any changes after resolving conflicts | COMMENT |