Repository Analysis

signalapp/Signal-Desktop

A private messenger for Windows, macOS, and Linux.

1.2 Likely human-written View on GitHub
1.2
Adjusted Score
1.2
Raw Score
100%
Time Factor
2026-05-27
Last Push
16,322
Stars
TypeScript
Language
1,187,257
Lines of Code
2948
Files
1472
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 0MEDIUM 2LOW 1470

Pattern Findings

1472 matches across 6 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers1354 hits · 1318 pts
SeverityFileLineSnippet
LOWsticker-creator/src/util/apng.ts33export function getAnimatedPngDataIfExists(
LOWapp/permissions.std.ts83export function installPermissionsHandler({
LOWapp/main.main.ts452function getPreferredSystemLocales(): Array<string> {
LOWapp/main.main.ts466function getResolvedMessagesLocale(): LocaleType {
LOWapp/main.main.ts1258function stageLocalBackupForImport() {
LOWapp/main.main.ts1485 function doShowCallDiagnosticWindow() {
LOWapp/main.main.ts1542function showPermissionsPopupWindow(forCalling: boolean, forCamera: boolean) {
LOWapp/main.main.ts1757function handleSafeStorageDecryptionError(): 'continue' | 'quit' {
LOWapp/main.main.ts2012function loadPreferredSystemLocales(): Array<string> {
LOWapp/main.main.ts2029async function getDefaultLoginItemSettings(): Promise<Settings> {
LOWapp/main.main.ts2475async function maybeRequestCloseConfirmation(): Promise<boolean> {
LOWapp/main.main.ts3035function maybeGetIncomingSignalRoute(argv: Array<string>) {
LOWapp/SystemTrayService.main.ts257function getDisplaysMaxScaleFactor(): number {
LOWapp/attachment_channel.main.ts294async function cleanupOrphanedAttachments({
LOWapp/attachment_channel.main.ts404function deleteOrphanedAttachments({
LOWts/setAppLoadingScreenMessage.dom.ts20export function setAppLoadingScreenMessage(
LOWts/LibsignalNetRemoteConfig.preload.ts23export function bindRemoteConfigToLibsignalNet(
LOWts/ConversationController.preload.ts89function applyChangeToConversation(
LOWts/Crypto.node.ts204function getAssociatedDataForDeviceCreatedAt(
LOWts/Crypto.node.ts649export function encryptProfileItemWithPadding(
LOWts/groups.preload.ts266export function generateGroupInviteLinkPassword(): Uint8Array<ArrayBuffer> {
LOWts/groups.preload.ts420function buildGroupDescriptionBuffer(
LOWts/groups.preload.ts739export async function buildUpdateAttributesChange(
LOWts/groups.preload.ts825export function buildDisappearingMessagesTimerChange({
LOWts/groups.preload.ts854export function buildInviteLinkPasswordChange(
LOWts/groups.preload.ts882export function buildAccessControlAddFromInviteLinkChange(
LOWts/groups.preload.ts894export function buildAnnouncementsOnlyChange(
LOWts/groups.preload.ts906export function buildAccessControlAttributesChange(
LOWts/groups.preload.ts918export function buildAccessControlMembersChange(
LOWts/groups.preload.ts930export function buildAccessControlMemberLabelChange(
LOWts/groups.preload.ts1045export function buildDeletePendingAdminApprovalMemberChange({
LOWts/groups.preload.ts1082export function buildAddPendingAdminApprovalMemberChange({
LOWts/groups.preload.ts1177export function buildDeletePendingMemberChange({
LOWts/groups.preload.ts1232export function buildAddBannedMemberChange({
LOWts/groups.preload.ts1270export function buildModifyMemberRoleChange({
LOWts/groups.preload.ts1321export function buildModifyMemberLabelChange({
LOWts/groups.preload.ts1391export function buildPromotePendingAdminApprovalMemberChange({
LOWts/groups.preload.ts3788async function updateGroupViaPreJoinInfo({
LOWts/groups.preload.ts3945async function updateGroupViaSingleChange({
LOWts/groups.preload.ts4023function getLastRevisionFromChanges(
LOWts/groups.preload.ts7106function decryptModifyMemberLabelAction(
LOWts/groups.preload.ts7465function decryptMemberPendingProfileKey(
LOWts/groups.preload.ts7545function decryptMemberPendingAdminApproval(
LOWts/groups.preload.ts7627function setLastSuccessfulGroupFetch(
LOWts/routineProfileRefresh.preload.ts204function getConversationsToRefresh(
LOWts/routineProfileRefresh.preload.ts241function hasRefreshedProfileRecently(
LOWts/background.preload.ts1614 function setupNetworkChangeListeners() {
LOWts/background.preload.ts1840 async function maybeDownloadAndImportBackup(): Promise<{
LOWts/background.preload.ts1895 async function afterEveryLinkedStartupOnNewVersion({
LOWts/background.preload.ts1995 function pauseQueuesAndNotificationsOnSocketConnect() {
LOWts/background.preload.ts2006 function restartQueuesAndNotificationsOnEmpty() {
LOWts/background.preload.ts2368 async function handleMessageReceivedProfileUpdate({
LOWts/background.preload.ts2427 function setInboxEnvelopeTimestamp(timestamp: number): void {
LOWts/background.preload.ts2826 async function handleMessageSentProfileUpdate({
LOWts/background.preload.ts3390 function handleGroupCallUpdateMessage(
LOWts/background.preload.ts4039 async function onAttachmentBackfillResponseSync(
LOWts/CI.preload.ts215 async function stageLocalBackupForImport(snapshotDir: string): Promise<void> {
LOWts/CI.preload.ts244 async function resetReleaseNoteAndMegaphoneFetcher() {
LOWts/CI.preload.ts268 function getAndResetMaxAudioLevel(): number | undefined {
LOWts/updateConversationsWithUuidLookup.dom.ts19export async function updateConversationsWithUuidLookup({
1294 more matches not shown…
Over-Commented Block62 hits · 60 pts
SeverityFileLineSnippet
LOW.oxlintrc.json81
LOW.oxlintrc.json201 "eslint/use-isnan": "error",
LOW.oxlintrc.json221 // [correctness] (🛠️ autofix) Disallow focused tests
LOW.oxlintrc.json241 // [correctness] (🚧 planned autofix) Requires that all @typedef and @namespace tags have @property when their type i
LOW.oxlintrc.json321 // [correctness] (⚠️ 💡 dangerous suggestion) Enforce tabIndex value is not greater than zero.
LOW.oxlintrc.json341 // [correctness] Prevent duplicate usage of <Head> in pages/_document.js.
LOW.oxlintrc.json361 // [correctness] (🚧 planned autofix) Prevent common typos in Next.js's data fetching functions
LOW.oxlintrc.json521 // [correctness] Enforce using .each or .for consistently
LOW.oxlintrc.json541 // [correctness] (🛠️ autofix) Enforce import from 'vue' instead of import from '@vue/*'
LOW.oxlintrc.json681 "import/max-dependencies": "off", // DECIDEME (errors: 476)
LOW.oxlintrc.json881 // Category: Restriction
LOW.oxlintrc.json1081 // [restriction] (🚧 planned autofix) Disallow process.exit().
LOW.oxlintrc.json1101 // Category: Style
LOW.oxlintrc.json1221 "import/no-namespace": "off", // DECIDEME (errors: 743)
LOW.oxlintrc.json1241 // [style] Disallow confusing usages of jest.setTimeout
LOW.oxlintrc.json1261 // [style] Disallow specific jest. methods
LOW.oxlintrc.json1281 // [style] (🚧 planned autofix) Suggest using the built-in equality matchers
LOW.oxlintrc.json1301 // [style] (🛠️ autofix) Suggest using toBe() for primitive literals
LOW.oxlintrc.json1481 // [style] (🛠️ autofix) Require new when creating an error.
LOW.oxlintrc.json1501 // [style] (🛠️ autofix) Enforce using toBeFalsy()
LOW.oxlintrc.json1541 // [suspicious] (🛠️ autofix) Disallow losing originally caught error when re-throwing custom errors
LOW.oxlintrc.json1601 // [suspicious] (🚧 planned autofix) Move function definitions to the highest possible scope.
LOWsticker-creator/src/vite-env.d.ts1// Copyright 2023 Signal Messenger, LLC
LOW.github/stale.yml61# pulls:
LOW.github/workflows/ci.yml101 path: ~/.electron-gyp
LOW.github/workflows/ci.yml181
LOWreproducible-builds/build.sh1#!/bin/sh
LOWreproducible-builds/docker-entrypoint.sh1#!/usr/bin/env bash
LOWts/SignalProtocolStore.preload.ts901 //
LOWts/SignalProtocolStore.preload.ts1141 }
LOWts/challenge.dom.ts1// Copyright 2021 Signal Messenger, LLC
LOWts/types/InstallScreen.std.ts41// This is the string's `.length`, which is the number of UTF-16 code points. Instead, we
LOWts/types/Message2.preload.ts101 data: Uint8Array<ArrayBuffer>
LOWts/types/Message2.preload.ts121// - Attachments: Write attachment data to disk and store relative path to it.
LOWts/types/Message2.preload.ts141// full-size screenshot for video.
LOWts/textsecure/SocketManager.preload.ts81// activity on the socket).
LOWts/util/TaskDeduplicator.std.ts1// Copyright 2026 Signal Messenger, LLC
LOWts/util/Attachment.std.ts61// flags: null
LOWts/util/missingCaseError.std.ts1// Copyright 2018 Signal Messenger, LLC
LOWts/util/missingCaseError.std.ts21// If we extended `AttachmentType` to `'media' | 'documents' | 'links'` the code
LOWts/util/lint/types.std.ts1// Copyright 2018 Signal Messenger, LLC
LOWts/util/lint/types.std.ts21// "regexMatchedSafeCode"
LOWts/axo/AriaClickable.dom.tsx121 <div
LOWts/models/conversations.preload.ts5661 // [-] identityKey
LOWts/components/CallingToast.dom.tsx241 );
LOWts/components/GroupCallRemoteParticipants.dom.tsx101//
LOWts/components/LeftPane.dom.tsx321 // Ideally, this would render subcomponents such as `<LeftPaneInbox>` or
LOWts/test-helpers/generateConfigMatrix.std.ts1// Copyright 2024 Signal Messenger, LLC
LOWts/test-mock/bootstrap.node.ts201// tests/benchmarks.
LOWts/test-mock/bootstrap.node.ts221// All phone numbers and uuids for all contacts and ourselves are random and not
LOWts/test-mock/storage/fixtures.node.ts41
LOW…on/backup/backup_groupv2_notifications_test.preload.ts661 // pni: OUR_PNI,
LOW…on/backup/backup_groupv2_notifications_test.preload.ts681 // aci: CONTACT_A,
LOW…on/backup/backup_groupv2_notifications_test.preload.ts701 // {
LOW…on/backup/backup_groupv2_notifications_test.preload.ts1681 // aci: CONTACT_A,
LOWts/quill/signal-clipboard/util.dom.ts141 // <div class="ql-editor ql-editor--loaded" contenteditable="plaintext-only" ... >
LOWts/quill/signal-clipboard/util.dom.ts161 // <span class="MessageTextRenderer__formatting--spoiler--revealed">
LOWts/services/profiles.preload.ts61type JobType = {
LOWts/services/notifications.preload.ts81// Electron, at least on Windows and macOS, only shows one notification at a time (see
LOWts/services/calling.preload.ts761 await ensureSystemPermissions({ hasLocalAudio, hasLocalVideo });
2 more matches not shown…
Fake / Example Data52 hits · 56 pts
SeverityFileLineSnippet
LOWts/test-node/util/isConversationNameKnown_test.std.ts14 name: 'Jane Doe',
LOWts/test-node/util/isConversationNameKnown_test.std.ts23 profileName: 'Jane Doe',
LOWts/test-node/util/isInSystemContacts_test.std.ts13 name: 'Jane Doe',
LOWts/test-node/util/isInSystemContacts_test.std.ts19 name: 'Jane Doe',
LOWts/axo/AxoRadioGroup.dom.stories.tsx26 Lorem ipsum dolor, sit amet consectetur adipisicing elit. Veniam
LOWts/axo/AxoTheme.dom.stories.tsx22 <AxoTooltip.Root label="Lorem ipsum">
LOWts/axo/AxoTheme.dom.stories.tsx107 <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</p>
LOWts/axo/AxoTheme.dom.stories.tsx107 <p>Lorem ipsum, dolor sit amet consectetur adipisicing elit.</p>
LOWts/axo/AxoTheme.dom.stories.tsx136 Lorem ipsum, dolor sit amet consectetur adipisicing elit.
LOWts/axo/AxoTheme.dom.stories.tsx136 Lorem ipsum, dolor sit amet consectetur adipisicing elit.
LOWts/axo/AxoStackedButton.dom.stories.tsx38 label="Lorem ipsum dolor sit amet consectetur adipisicing elit"
LOWts/axo/AxoStackedButton.dom.stories.tsx38 label="Lorem ipsum dolor sit amet consectetur adipisicing elit"
LOWts/axo/AxoDropdownMenu.dom.stories.tsx154 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Cum nostrum, inventore quia tenetur sunt non ab fuga explica
LOWts/axo/AxoDropdownMenu.dom.stories.tsx154 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Cum nostrum, inventore quia tenetur sunt non ab fuga explica
LOWts/axo/AxoAlertDialog.dom.stories.tsx17 Lorem ipsum dolor, sit amet consectetur adipisicing elit. Est vel
LOWts/axo/AxoAlertDialog.dom.stories.tsx31 Lorem ipsum dolor sit amet consectetur adipisicing elit. Nobis, amet aut
LOWts/axo/AxoAlertDialog.dom.stories.tsx31 Lorem ipsum dolor sit amet consectetur adipisicing elit. Nobis, amet aut
LOWts/axo/AxoAlertDialog.dom.stories.tsx47 veritatis eligendi dicta asperiores minus quisquam! Odit dolorem ipsum
LOWts/axo/AxoAlertDialog.dom.stories.tsx68const EXAMPLE_CANCEL_LONG = <>Lorem ipsum dolor sit amet</>;
LOWts/axo/AxoAlertDialog.dom.stories.tsx68const EXAMPLE_CANCEL_LONG = <>Lorem ipsum dolor sit amet</>;
LOWts/axo/AxoTooltip.dom.stories.tsx19 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore nesciunt
LOWts/axo/AxoTooltip.dom.stories.tsx19 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore nesciunt
LOWts/axo/AxoDialog.dom.stories.tsx16const TEXT_SHORT = <>Lorem ipsum dolor</>;
LOWts/axo/AxoDialog.dom.stories.tsx20 Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eum repudiandae
LOWts/axo/AxoDialog.dom.stories.tsx20 Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eum repudiandae
LOWts/axo/AxoDialog.dom.stories.tsx102 Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam est
LOWts/axo/AxoDialog.dom.stories.tsx102 Lorem ipsum dolor sit amet consectetur adipisicing elit. Laboriosam est
LOWts/axo/AxoButton.dom.stories.tsx134 Lorem ipsum dolor sit amet consectetur adipisicing elit. Id dicta dolorum
LOWts/axo/AxoButton.dom.stories.tsx134 Lorem ipsum dolor sit amet consectetur adipisicing elit. Id dicta dolorum
LOWts/axo/AriaClickable.dom.tsx30 * Lorem ipsum dolor sit amet consectetur adipisicing elit...
LOWts/axo/AriaClickable.dom.tsx30 * Lorem ipsum dolor sit amet consectetur adipisicing elit...
LOWts/axo/AriaClickable.dom.stories.tsx90 Lorem ipsum dolor, sit amet consectetur adipisicing elit...{' '}
LOWts/CI/benchmarkConversationOpen.preload.ts69 body: `Message ${i}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam venenatis nec sapien id portti
LOWts/CI/benchmarkConversationOpen.preload.ts69 body: `Message ${i}: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam venenatis nec sapien id portti
LOWts/components/Toast.dom.stories.tsx47 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis deserunt
LOWts/components/Toast.dom.stories.tsx47 Lorem ipsum dolor sit amet, consectetur adipisicing elit. Debitis deserunt
LOWts/components/Modal.dom.stories.tsx24 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas con
LOWts/components/Modal.dom.stories.tsx24 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas con
LOWts/components/LeftPaneDialog.dom.stories.tsx65 title: 'Lorem ipsum dolor sit amet',
LOWts/components/LeftPaneDialog.dom.stories.tsx65 title: 'Lorem ipsum dolor sit amet',
LOWts/components/ListTile.dom.stories.tsx16 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat quam vitae semper facilisis. Praesent eu effic
LOWts/components/ListTile.dom.stories.tsx16 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat quam vitae semper facilisis. Praesent eu effic
LOWts/components/LeftPane.dom.stories.tsx230 body="Lorem ipsum wow"
LOWts/components/ConversationList.dom.stories.tsx43 text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Ma
LOWts/components/ConversationList.dom.stories.tsx43 text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Ma
LOWts/components/ConversationList.dom.stories.tsx86 body="Lorem ipsum wow"
LOWts/components/ConversationList.dom.stories.tsx196 '🤠 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris
LOWts/components/ConversationList.dom.stories.tsx196 '🤠 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris
LOWts/components/fun/FunEmoji.dom.stories.tsx126 Lorem, ipsum dolor sit amet consectetur adipisicing elit. Repellat
LOW…mponents/conversation/GroupDescription.dom.stories.tsx33 text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed vehicula urna. Ut rhoncus, justo a ves
LOW…mponents/conversation/GroupDescription.dom.stories.tsx33 text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sed vehicula urna. Ut rhoncus, justo a ves
LOW…tion/pinned-messages/PinnedMessagesBar.dom.stories.tsx140const SHORT_TEXT = 'Lorem, ipsum dolor sit amet';
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippet
MEDIUM.oxlintrc.json884 // [restriction] Enforce that class methods utilize this
MEDIUMstylesheets/components/CompositionTextArea.scss65 // remove background, should be seamless with modal
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippet
LOWreproducible-builds/build.sh5# Usage:
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippet
LOWts/util/findStoryMessage.preload.ts83 // For 1:1 stories, we need to check if they can be replied to