:globe_with_meridians: :electric_plug: The MetaMask browser extension enables browsing Ethereum blockchain enabled websites
This report summarizes scanner evidence for MetaMask/metamask-extension, a TypeScript project with 13,250 GitHub stars. SynthScan examined 1,824,508 lines of code across 9367 source files, recording 2645 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 1.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? 2469 finding(s).
Are imports declared and package/API names verified? 97 finding(s).
Are wrappers, guards, and repeated structures necessary? 2217 finding(s).
Which changes need focused human review? 2645 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 2645 distinct pattern matches across 16 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 | AGENTS.md | 444 | export function getDefaultTokensControllerState(): TokensControllerState { | CODE |
| LOW⚡ | ui/__mocks__/hardware-wallet-swap/hooks.ts | 170 | function useSubmitBridgeTransaction() { | CODE |
| LOW⚡ | ui/__mocks__/hardware-wallet-swap/hooks.ts | 178 | export function useHwSwapConnectionMonitoring() { | CODE |
| LOW⚡ | ui/__mocks__/hardware-wallet-swap/hooks.ts | 185 | export function useHwSwapConfirmationMonitoring() { | CODE |
| LOW | ui/ducks/domains.js | 106 | function enrichResolutionsWithAddressBook(resolutions, state) { | CODE |
| LOW | ui/ducks/batch-sell/actions.ts | 12 | function getSmartTransactionsState( | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 675 | export function openBasicFunctionalityModal(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 681 | export function hideBasicFunctionalityModal(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 687 | export function onboardingToggleBasicFunctionalityOn(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 693 | export function onboardingToggleBasicFunctionalityOff(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 699 | export function onboardingToggleBackupAndSyncOn(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 705 | export function onboardingToggleBackupAndSyncOff(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 711 | export function toggleGasLoadingAnimation( | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 717 | export function setLedgerWebHidConnectedStatus( | CODE |
| LOW | ui/ducks/app/app.ts | 733 | export function setOnBoardedInThisUISession( | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 772 | export function getGasLoadingAnimationIsShowing(state: AppSliceState): boolean { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 776 | export function getLedgerWebHidConnectedStatus( | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 786 | export function getShowSupportDataConsentModal(state: AppSliceState): boolean { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 790 | export function openDeleteMetaMetricsDataModal(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 796 | export function hideDeleteMetaMetricsDataModal(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 802 | export function openDataDeletionErrorModal(): Action { | CODE |
| LOW⚡ | ui/ducks/app/app.ts | 808 | export function hideDataDeletionErrorModal(): Action { | CODE |
| LOW | ui/ducks/swaps/swaps.js | 304 | export function shouldShowCustomPriceTooLowWarning(state) { | CODE |
| LOW | ui/ducks/swaps/swaps.js | 1417 | export function fetchMetaSwapsGasPriceEstimates() { | CODE |
| LOW | ui/ducks/swaps/swaps.js | 1468 | export function fetchSwapsSmartTransactionFees({ | CODE |
| LOW | ui/ducks/swaps/swaps.js | 1496 | export function cancelSwapsSmartTransaction(uuid) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 333 | export function getConversionRateByTicker(state, ticker) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 339 | export function getSendHexDataFeatureFlagState(state) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 349 | function getGasFeeControllerEstimateType(state) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 353 | function getGasFeeControllerEstimateTypeByChainId(state, chainId) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 357 | function getGasFeeControllerEstimates(state) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 361 | function getGasFeeControllerEstimatesByChainId(state, chainId) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 365 | function getTransactionGasFeeEstimates(state) { | CODE |
| LOW⚡ | ui/ducks/metamask/metamask.js | 370 | function getTransactionGasFeeEstimatesByChainId(state, chainId) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 445 | export function getEstimatedGasFeeTimeBounds(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 449 | export function getEstimatedGasFeeTimeBoundsByChainId(state, chainId) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 474 | export function getIsGasEstimatesLoadingByChainId( | CODE |
| LOW | ui/ducks/metamask/metamask.js | 499 | export function getIsNetworkBusyByChainId(state, chainId) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 508 | export function getHasSeenOnboardingCompletionPage(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 522 | export function getIsWalletResetInProgress(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 538 | export function getIsPrimarySeedPhraseBackedUp(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 553 | export function getIsSeedlessPasswordOutdated(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 564 | export function doesUserHaveALedgerAccount(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 588 | export function getPasskeyAutoUnlockSuppressed(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 598 | export function getLastShownPrfMigrationReminderAt(state) { | CODE |
| LOW | ui/ducks/metamask/metamask.js | 609 | export function getShouldUnlockBeforeOnboardingCompletion(state) { | CODE |
| LOW | ui/ducks/send-max-value/send-max-value.ts | 27 | export function selectMaxValueModeForTransaction( | CODE |
| LOW | ui/ducks/rewards-money/selectors.ts | 19 | export function canAcceptMoneyReferralInvite( | CODE |
| LOW | ui/ducks/rewards-money/selectors.ts | 33 | function countryCodeFromGeoLocation( | CODE |
| LOW | ui/ducks/rewards-money/selectors.ts | 58 | export function selectMoneyReferralAllowedForGeo( | CODE |
| LOW | ui/contexts/metametrics.tsx | 53 | export function resetPreviousTrackedPagePathForTesting(): void { | CODE |
| LOW | ui/contexts/onboarding-trace.tsx | 18 | export function OnboardingTraceContextProvider({ | CODE |
| LOW | ui/contexts/transaction-modal.js | 53 | export function useTransactionModalContext() { | CODE |
| LOW | ui/contexts/shield/subscriptionsPollingActions.ts | 13 | export async function subscriptionsStartPolling(): Promise<string> { | CODE |
| LOW | ui/contexts/shield/shield-subscription.tsx | 40 | export function resetEvaluatedShieldCohortsForTesting(): void { | CODE |
| LOW | …exts/metamask-notifications/metamask-notifications.tsx | 72 | export function useBasicFunctionalityDisableEffect() { | CODE |
| LOW | …exts/metamask-notifications/metamask-notifications.tsx | 103 | export function useFetchInitialNotificationsEffect() { | CODE |
| LOW | …exts/metamask-notifications/metamask-notifications.tsx | 165 | export function useEnableNotificationsByDefaultEffect() { | CODE |
| LOW | …ntexts/hardware-wallets/HardwareWalletStateManager.tsx | 253 | function keyringTypeToHardwareWalletType( | CODE |
| LOW | ui/contexts/hardware-wallets/webConnectionUtils.ts | 51 | export async function queryCameraPermissionWithStatus(): Promise<{ | CODE |
| 2078 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 207 | // Step sizes for tick marks based on max leverage | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 272 | // $15,000,000 for max leverage >= 25 | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 274 | // $5,000,000 for max leverage in [20, 25) | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 276 | // $2,000,000 for max leverage in [10, 20) | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 278 | // $500,000 for max leverage < 10 | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 322 | // Ensures accurate decimal handling in margin/leverage calculations | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 330 | // Fallback max leverage when market data is unavailable | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 332 | // Most HyperLiquid assets support at least 50x leverage | COMMENT |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 101 | // Leverage threshold for warning users about high leverage | COMMENT |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 168 | // Max leverage cache duration (milliseconds) | COMMENT |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 169 | // How long to cache max leverage values per asset (leverage rarely changes) | COMMENT |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 208 | TickStepLow: 5, // Step size when max leverage <= 20 | CODE |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 209 | TickStepMedium: 10, // Step size when max leverage <= 50 | CODE |
| MEDIUM⚡ | ui/__mocks__/perps/perps-controller/index.ts | 210 | TickStepHigh: 20, // Step size when max leverage > 50 | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 48 | DefaultMaxLeverage: 3 as number, // Default fallback max leverage when market data is unavailable - conservative defau | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 102 | HighLeverageWarning: 20, // Show warning when leverage > 20x | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 518 | 'https://support.metamask.io/manage-crypto/trade/perps/leverage-and-liquidation/?utm_source=extension#what-is-auto-d | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 748 | leverage?: number; // Last used leverage for this market | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 908 | leverage?: number; // Leverage to apply for the order (e.g., 10 for 10x leverage) | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 909 | existingPositionLeverage?: number; // Existing position leverage for validation (protocol constraint) | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 940 | maxLeverage: number; // Maximum allowed leverage for this asset | CODE |
| MEDIUM | ui/__mocks__/perps/perps-controller/index.ts | 1058 | maxLeverage: number; // HyperLiquid: max leverage | CODE |
| MEDIUM | …ents/app/perps/close-position/close-position-modal.tsx | 520 | // Omitted rather than zeroed when leverage is unknown: a real position | COMMENT |
| MEDIUM | …ents/app/perps/close-position/close-position-modal.tsx | 522 | // Matches mobile, which passes `leverage?.value` through undefined. | COMMENT |
| MEDIUM | ui/components/app/perps/order-entry/order-entry.tsx | 297 | // The page classifies flips using its legacy leverage-based sizing before | COMMENT |
| MEDIUM | …/components/app/perps/order-entry/order-entry.test.tsx | 308 | // Margin = notional / leverage = $1,000 / 3 = $333.33 (fees are a separate line item) | COMMENT |
| MEDIUM⚡ | …s/order-entry/components/amount-input/amount-input.tsx | 169 | // availableBalance * leverage; rounding up (toFixed) could push the amount | COMMENT |
| MEDIUM⚡ | …s/order-entry/components/amount-input/amount-input.tsx | 170 | // above that budget, so marginRequired (amount / leverage) exceeded the | COMMENT |
| MEDIUM⚡ | …s/order-entry/components/amount-input/amount-input.tsx | 173 | // availableBalance * leverage, mirroring mobile's Math.floor in | COMMENT |
| MEDIUM | …er-entry/components/amount-input/amount-input.test.tsx | 433 | // Size $5000 with available $1000 × 10x leverage = max size $10000 | COMMENT |
| MEDIUM | …er-entry/components/amount-input/amount-input.test.tsx | 466 | // At 100% the size is availableBalance * leverage. Rounding the USD amount up | COMMENT |
| MEDIUM | …er-entry/components/amount-input/amount-input.test.tsx | 467 | // pushed marginRequired (amount / leverage) above the available balance by a | COMMENT |
| MEDIUM | …r-entry/components/leverage-slider/leverage-slider.tsx | 125 | // closure. Falls back to `leverage` (the parent-owned source of truth) | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 541 | // Test a non-integer: leverage=3, entry=45000, tp=45500 | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 564 | // 10% RoE at leverage=10: priceChange = 10/(10*100) = 1% -> 45000 * 1.01 = 45450 | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 589 | // -10% RoE at leverage=10: priceChange = -10/(10*100) = -1% -> 45000 * 0.99 = 44550 | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 615 | // -11% RoE at leverage=10: priceChange = -11/(10*100) = -1.1% -> 45000 * 0.989 = 44505 | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 640 | // +10% RoE at leverage=10: priceChange = 1% -> 45000 * 1.01 = 45450 | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 666 | // -10% RoE at leverage=10: priceChange = -1% -> $2,000 * 0.99 = $1,980 (not $2,970) | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 693 | // 10% RoE at leverage=10: priceChange = 1% -> $2,000 * 1.01 = $2,020 (not $3,030) | COMMENT |
| MEDIUM | …ponents/auto-close-section/auto-close-section.test.tsx | 718 | // SL at $1,980 with limit entry $2,000 at 10x leverage: | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 89 | const positionWithTPSL = mockPositions[0]; // ETH: entry=2850, leverage=3, TP=3200.00, SL=2600.00, size=2.5 (long) | CODE |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 534 | // ETH: entry=2850, leverage=3 (long) | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 553 | // ETH: entry=2850, leverage=3 (long) | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 695 | // ETH: entry=2850, leverage=3, +50% RoE -> 2850 * (1 + 50/300) = 2850 * 1.1667 = 3325 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 711 | // ETH: entry=2850, leverage=3, -50% signed RoE -> 2850 * (1 + (-50)/300) = 2850 * 0.8333 = 2375 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 727 | // SOL: entry=95, leverage=10, +15% signed RoE -> 95 * (1 + 15/1000) = 95 * 1.015 = 96.425 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 769 | // SOL: entry=95, leverage=10, defaulted -10% signed RoE -> 95 * 0.99 = 94.05 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 850 | // SOL: entry=95, leverage=10. +25% signed RoE -> 95*(1+25/1000) = 95*1.025 = 97.375 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 865 | // SOL: entry=95, leverage=10. Typing +10 (SL above entry for lock-in-profit scenario) | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 884 | // SOL: entry=95, leverage=10. 011 normalizes to -11% signed RoE | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 938 | // SOL: entry=95, leverage=10 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 1230 | // mockPositions[1] is BTC with size=-0.5 (short), entry=45000, leverage=15 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 1234 | // BTC short: entry=45000, leverage=15 | COMMENT |
| MEDIUM | …p/perps/update-tpsl/update-tpsl-modal-content.test.tsx | 1251 | // BTC short: entry=45000, leverage=15 | COMMENT |
| MEDIUM | …multichain/import-nfts-modal/import-nfts-form.test.tsx | 500 | // Get the actual networkClientId that was used in the addNftVerifyOwnership call (use last call to be robust agains | COMMENT |
| MEDIUM | ui/hooks/perps/usePerpsOrderForm.ts | 106 | // writer of balancePercent (slider, size input, percent field, leverage) | COMMENT |
| MEDIUM | ui/hooks/perps/usePerpsOrderForm.ts | 384 | // reset amount/leverage—only the sync above updates formState.type. | COMMENT |
| MEDIUM | ui/hooks/perps/usePerpsOrderForm.ts | 409 | // asset and mode rather than cleared on reset, because leverage belongs to | COMMENT |
| MEDIUM | ui/hooks/perps/usePerpsOrderForm.ts | 432 | // Hydrate leverage that the form does not already have, unless the incoming | COMMENT |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …afety/scam-questionnaire/useScamQuestionnaire.test.tsx | 38 | // ─── Send-flow branch helpers ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …afety/scam-questionnaire/useScamQuestionnaire.test.tsx | 91 | // ─── Domain-list branch helpers ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …afety/scam-questionnaire/useScamQuestionnaire.test.tsx | 134 | // ─── Tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 23 | // ── Hooks ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 40 | // ── Utilities ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 48 | // ── Redux ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 58 | // ── Router ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 66 | // ── Sub-components ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 179 | // ── Typed mocks ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 190 | // ── Default return values ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 235 | // ── renderPage helper ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …atch-sell/pages/review/batch-sell-review-page.test.tsx | 263 | // ── Tests ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ect/components/batch-sell-empty-select-tokens.test.tsx | 8 | // ─── Dependency mocks ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ect/components/batch-sell-empty-select-tokens.test.tsx | 37 | // ─── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ect/components/batch-sell-empty-select-tokens.test.tsx | 61 | // ─── Tests ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/settings/search-config.ts | 134 | // ── Registry (auto-derived) ───────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useSecurityAlerts.test.ts | 56 | // ─── txAlert ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useSecurityAlerts.test.ts | 142 | // ─── securityWarnings ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useSecurityAlerts.test.ts | 309 | // ─── memoization ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 40 | // ─── assetHasSecurityData ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 60 | // ─── assetSecurityTrustBadgeResult ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 122 | // ─── assetIsVerified ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 178 | // ─── assetIsSuspicious ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 225 | // ─── assetIsMalicious ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 262 | // ─── assetSuspiciousLocalizedFeatures ───────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 397 | // ─── assetMaliciousLocalizedFeatures ────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 522 | // ─── assetSuspiciousFeatures ────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 599 | // ─── assetMaliciousFeatures ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | ui/pages/bridge/hooks/useAssetSecurityData.test.ts | 708 | // ─── memoization ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …confirmations/confirmation/templates/approval-types.ts | 38 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …confirmations/confirmation/templates/approval-types.ts | 52 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ect/dapp-connection-control-bar-network-picker.spec.ts | 23 | // ── Shared helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/mm-connect/connect-evm.spec.ts | 25 | // ── Shared fixture options ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 26 | // ─── Filter dropdown UI ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 55 | // ─── Filter by Trades ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 85 | // ─── Filter by Orders ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 114 | // ─── Filter by Funding ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 143 | // ─── Filter by Deposits ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 172 | // ─── Click transaction → transaction details ────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-activity.spec.ts | 207 | // ─── Recent activity section on Perps home ──────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 41 | // ─── Open position flows ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 89 | // ─── Close the position ───────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 160 | // ─── Close the position ───────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 186 | // ─── Close position flows ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 373 | // ─── Reverse position flows ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 491 | // ─── Margin management ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/tests/perps/perps-position-lifecycle.spec.ts | 598 | // ─── Position card on home page ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 129 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 131 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 137 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 139 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 359 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 361 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 367 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 369 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 28 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 30 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 79 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 81 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/e2e/page-objects/pages/test-dapp-mm-connect.ts | 105 | // ────────────────────────────────────────────────────────────────────────── | COMMENT |
| 19 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .depcheckrc.yml | 21 | - '@ledgerhq/device-transport-kit-web-hid' | COMMENT |
| LOW | builds.yml | 341 | - METAMASK_BUILD_ICON | COMMENT |
| LOW | builds.yml | 381 | # Build-time gate: omit PerpsController and perps RPC when false (mitigation for critical failures) | COMMENT |
| LOW | builds.yml | 401 | - MM_MONEY_ACTIVITY_MOCK_DATA_ENABLED: false | COMMENT |
| LOW | builds.yml | 421 | ### | COMMENT |
| LOW | .yarnrc.yml | 21 | # @metamask/jazzicon v2.0.0 but there is work done on that repository to | COMMENT |
| LOW | .yarnrc.yml | 41 | COMMENT | |
| LOW | tsconfig.json | 1 | { | COMMENT |
| LOW | AGENTS.md | 381 | # Location: app/scripts/controllers/your-controller/your-controller.ts | COMMENT |
| LOW | ui/providers/perps/PerpsAttributionContext.tsx | 301 | setUtmAttribution((prev) => ({ ...prev, ...utmContext })); | COMMENT |
| LOW | ui/providers/perps/PerpsAttributionContext.tsx | 401 | // Derive UTM from the CURRENT locationSearch at render time and union it | COMMENT |
| LOW | ui/providers/perps/README.mock.md | 121 | COMMENT | |
| LOW | ui/providers/perps/README.mock.md | 161 | COMMENT | |
| LOW | ui/components/app/musd/musd-events.ts | 301 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/components/app/musd/musd-events.ts | 401 | // eslint-disable-next-line @typescript-eslint/naming-convention | COMMENT |
| LOW | ui/components/app/compliance/useComplianceGate.ts | 61 | // belongs to the currently selected address set. | COMMENT |
| LOW | ui/components/app/srp-quiz-modal/types.ts | 1 | import { ButtonSize, ButtonVariant } from '../../component-library'; | COMMENT |
| LOW | ui/components/app/perps/perps-view.tsx | 241 | if (successCount > 0 && failureCount > 0) { | COMMENT |
| LOW | …ts/app/perps/edit-margin/edit-margin-modal-content.tsx | 341 | const errorMessage = result.error || 'Failed to update margin'; | COMMENT |
| LOW | ui/components/app/name/name-details/name-display.tsx | 101 | name: true, | COMMENT |
| LOW | …nts/multichain/network-list-menu/network-list-menu.tsx | 121 | // Displays the search box and network list | COMMENT |
| LOW | …ponents/multichain/token-list-item/token-list-item.tsx | 161 | const { trackEvent, createEventBuilder } = useAnalytics(); | COMMENT |
| LOW | …hain/network-manager/hooks/useNetworkChangeHandlers.ts | 41 | ADD_EDIT, | COMMENT |
| LOW | ui/hooks/shield/metrics/utils.ts | 41 | default_payment_type: params.defaultPaymentType, | COMMENT |
| LOW | ui/hooks/bridge/useRewards.test.ts | 321 | // } | COMMENT |
| LOW | ui/hooks/bridge/useRewards.test.ts | 341 | // ); | COMMENT |
| LOW | ui/hooks/bridge/useRewards.test.ts | 361 | // } | COMMENT |
| LOW | …ch-sell/pages/review/utils/buildQuoteRequestContext.ts | 41 | stx_enabled: smartTransactionsEnabled, | COMMENT |
| LOW | ui/pages/bridge/prepare/prepare-bridge-page.tsx | 621 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/pages/bridge/quotes/bridge-quotes-modal.tsx | 81 | { | COMMENT |
| LOW | …ges/bridge/awaiting-signatures/awaiting-signatures.tsx | 61 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/pages/perps/perps-order-entry-page.tsx | 801 | // default emit CONSIDERED with no new size interaction. | COMMENT |
| LOW | ui/pages/perps/perps-order-entry-page.tsx | 821 | // percentage/max), reported from AmountInput's per-control handlers (attributed | COMMENT |
| LOW | ui/pages/perps/perps-order-entry-page.tsx | 1201 | // Oracle mark price from HyperLiquid's activeAssetCtx feed (oraclePx). | COMMENT |
| LOW | ui/pages/perps/perps-withdraw-page.tsx | 321 | AccountState | undefined | COMMENT |
| LOW | ui/pages/perps/perps-withdraw-page.tsx | 361 | COMMENT | |
| LOW | ui/pages/perps/perps-withdraw-page.tsx | 381 | // Without this the button would just re-enable and the click would look | COMMENT |
| LOW | ui/pages/perps/perps-market-detail-page.tsx | 781 | [ | COMMENT |
| LOW | ui/pages/perps/perps-market-detail-page.tsx | 801 | // (e.g., "BTC-1h", "BTC-15m") since they are different data sets. | COMMENT |
| LOW | …confirmations/confirmation/templates/approval-types.ts | 41 | // A TypeScript error on `AssertApprovalTypesMatchTemplates` means the array | COMMENT |
| LOW | …ts/transactions/useInsufficientPayTokenBalanceAlert.ts | 301 | balanceUsd, | COMMENT |
| LOW | …ts/transactions/useInsufficientPayTokenBalanceAlert.ts | 321 | // Suppress for deposit *and* withdraw, unconditionally, mirroring | COMMENT |
| LOW | …/confirmations/hooks/transactions/useDepositPrefill.ts | 261 | } | COMMENT |
| LOW | …firmations/hooks/transactions/useTransactionConfirm.ts | 101 | return false; | COMMENT |
| LOW | …firmations/hooks/transactions/useTransactionConfirm.ts | 121 | // the 7702 publish hook; clearing the flag here made the hook skip and | COMMENT |
| LOW | …ware-wallets/swap/hooks/useHardwareWalletSignatures.ts | 201 | // Set to true when the device has been in an awaiting-signature state for | COMMENT |
| LOW | …ware-wallets/swap/hooks/useHardwareWalletSignatures.ts | 441 | retrySendBundleSubmission, | COMMENT |
| LOW | …cation-components/types/notifications/notifications.ts | 41 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 21 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 41 | borderMuted = 'border-muted', | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 61 | // eslint-disable-next-line @typescript-eslint/naming-convention | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 81 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 101 | goerli = 'goerli', | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 121 | // eslint-disable-next-line @typescript-eslint/naming-convention | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 141 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 161 | backgroundSubsection = 'background-subsection', | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 181 | // eslint-disable-next-line @typescript-eslint/naming-convention | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 201 | // TODO: Fix in https://github.com/MetaMask/metamask-extension/issues/31860 | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 221 | mainnet = 'mainnet', | COMMENT |
| LOW | ui/helpers/constants/design-system.ts | 241 | // eslint-disable-next-line @typescript-eslint/naming-convention | COMMENT |
| 123 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/index.test.js | 130 | socialLoginEmail: 'test@test.com', | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 25 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 25 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 32 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 32 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 39 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 39 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 46 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW⚡ | ui/components/ui/info-tooltip/info-tooltip.stories.js | 46 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut gravida dictum diam et sagittis. Sed lorem arcu, consec | CODE |
| LOW | …ts/ui/actionable-message/actionable-message.stories.js | 34 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mag | CODE |
| LOW | …ts/ui/actionable-message/actionable-message.stories.js | 34 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mag | CODE |
| LOW | ui/components/ui/popover/popover.stories.js | 74 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod | CODE |
| LOW | ui/components/ui/popover/popover.stories.js | 74 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod | CODE |
| LOW | ui/components/ui/textarea/textarea.test.js | 13 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporld, Lorem ipsum dolor sit amet, conse | CODE |
| LOW | ui/components/ui/textarea/textarea.test.js | 13 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporld, Lorem ipsum dolor sit amet, conse | CODE |
| LOW | ui/components/ui/textarea/textarea.stories.js | 71 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporld, Lorem ipsum dolor sit amet, conse | CODE |
| LOW | ui/components/ui/textarea/textarea.stories.js | 71 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod temporld, Lorem ipsum dolor sit amet, conse | CODE |
| LOW | …omponents/ui/nickname-popover/nickname-popover.test.js | 29 | nickname="John Doe" | CODE |
| LOW | …pp/deprecated-network-modal/DeprecatedNetworkModal.tsx | 47 | key="import-token-fake-token-warning" | CODE |
| LOW | …p/alert-system/general-alert/general-alert.stories.tsx | 8 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien tellus, elementum sit ' + | CODE |
| LOW | …p/alert-system/general-alert/general-alert.stories.tsx | 8 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien tellus, elementum sit ' + | CODE |
| LOW | ui/components/app/snaps/copyable/copyable.stories.js | 34 | text: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultrices arcu quis lorem luctus, consequat vulp | CODE |
| LOW | ui/components/app/snaps/copyable/copyable.stories.js | 34 | text: `Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultrices arcu quis lorem luctus, consequat vulp | CODE |
| LOW⚡ | ui/components/app/confirm/info/row/text.stories.tsx | 23 | text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | ui/components/app/confirm/info/row/text.stories.tsx | 23 | text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore m | CODE |
| LOW⚡ | ui/components/app/confirm/info/row/text.stories.tsx | 25 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW⚡ | ui/components/app/confirm/info/row/text.stories.tsx | 25 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna | CODE |
| LOW⚡ | ui/components/app/confirm/info/row/text.stories.tsx | 30 | text: 'Lorem ipsum dolor sit amet.', | CODE |
| LOW⚡ | ui/components/app/confirm/info/row/text.stories.tsx | 30 | text: 'Lorem ipsum dolor sit amet.', | CODE |
| LOW | …/components/app/perps/order-entry/order-entry.test.tsx | 697 | expect(input).toHaveAttribute('placeholder', 'min $10'); | CODE |
| LOW | …/components/app/perps/order-entry/order-entry.test.tsx | 708 | expect(input).toHaveAttribute('placeholder', '0.00'); | CODE |
| LOW | …er-entry/components/amount-input/amount-input.test.tsx | 193 | expect(input).toHaveAttribute('placeholder', '0.00'); | CODE |
| LOW | …er-entry/components/amount-input/amount-input.test.tsx | 924 | expect(input).toHaveAttribute('placeholder', 'min $10'); | CODE |
| LOW⚡ | …ification-list-item/notification-list-item.stories.tsx | 39 | text: 'Lorem ipsum', | CODE |
| LOW⚡ | …ification-list-item/notification-list-item.stories.tsx | 42 | text: 'dolor sit amet', | CODE |
| LOW⚡ | …ification-list-item/notification-list-item.stories.tsx | 51 | text: 'Lorem Ipsum is simply dummy text of the printing and', | CODE |
| LOW | …list-item-text/notification-list-item-text.stories.tsx | 40 | text: 'Lorem ipsum', | CODE |
| LOW | …list-item-text/notification-list-item-text.stories.tsx | 43 | text: 'dolor sit amet', | CODE |
| LOW | …list-item-text/notification-list-item-text.stories.tsx | 114 | text: 'Lorem ipsum', | CODE |
| LOW | …list-item-text/notification-list-item-text.stories.tsx | 117 | text: 'dolor sit amet', | CODE |
| LOW | …list-item-text/notification-list-item-text.stories.tsx | 128 | text: 'Lorem ipsum', | CODE |
| LOW | …list-item-text/notification-list-item-text.stories.tsx | 131 | text: 'dolor sit amet', | CODE |
| LOW | …onent-library/form-text-field/form-text-field.test.tsx | 218 | 'placeholder', | CODE |
| LOW | …ents/component-library/container/container.stories.tsx | 19 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam, nisl eget aliquam ultrices, nunc nunc al | CODE |
| LOW | …ents/component-library/container/container.stories.tsx | 19 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam aliquam, nisl eget aliquam ultrices, nunc nunc al | CODE |
| LOW⚡ | …ponents/component-library/container/container.test.tsx | 28 | Small breakpoint: Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW⚡ | …ponents/component-library/container/container.test.tsx | 28 | Small breakpoint: Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW⚡ | …ponents/component-library/container/container.test.tsx | 38 | Medium breakpoint: Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW⚡ | …ponents/component-library/container/container.test.tsx | 38 | Medium breakpoint: Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW⚡ | …ponents/component-library/container/container.test.tsx | 48 | Large breakpoint: Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW⚡ | …ponents/component-library/container/container.test.tsx | 48 | Large breakpoint: Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW | …ponent-library/select-button/select-button.stories.tsx | 29 | description: 'Lorem ipsum Lorem ipsum', | CODE |
| LOW | ui/components/component-library/modal/modal.stories.tsx | 69 | Lorem ipsum dolor sit amet, conse{' '} | CODE |
| LOW | ui/components/component-library/modal/modal.stories.tsx | 69 | Lorem ipsum dolor sit amet, conse{' '} | CODE |
| LOW | …action-shield/claims-form/claims-form.metrics.test.tsx | 82 | email: 'user@example.com', | CODE |
| LOW | …onboarding-flow-switch/onboarding-flow-switch.test.tsx | 303 | socialLoginEmail: 'user@example.com', | CODE |
| LOW | …w/account-status-layout/account-status-layout.test.tsx | 10 | descriptionInterpolation: ['user@example.com'], | CODE |
| LOW | …boarding-flow/create-password/create-password.test.tsx | 1335 | socialLoginEmail: 'user@example.com', | CODE |
| LOW | …boarding-flow/create-password/create-password.test.tsx | 1446 | socialLoginEmail: 'user@example.com', | CODE |
| LOW | …ket-list/components/search-input/search-input.test.tsx | 42 | expect(input).toHaveAttribute('placeholder'); | CODE |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 86 | // Step 1: Check WebHID availability | COMMENT |
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 95 | // Step 2: Check if device is physically connected | COMMENT |
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 105 | // Step 3: Check if device is unlocked. This is only for Nano S and Nano X because there | COMMENT |
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 114 | // Step 4: Attempt to create a transport for the device | COMMENT |
| LOW | ui/providers/perps/README.mock.md | 126 | ### Step 1: Update `ui/providers/perps/index.ts` | COMMENT |
| LOW | ui/providers/perps/README.mock.md | 162 | ### Step 2: Update `ui/hooks/perps/stream/index.ts` | COMMENT |
| LOW | ui/providers/perps/README.mock.md | 192 | ### Step 3: That's it! | COMMENT |
| LOW⚡ | …er-entry/components/amount-input/amount-input.test.tsx | 598 | // Step 1: type "0" — partial; USD clears but field keeps "0" | COMMENT |
| LOW⚡ | …er-entry/components/amount-input/amount-input.test.tsx | 603 | // Step 2: type "0." — field keeps "0." | COMMENT |
| LOW⚡ | …er-entry/components/amount-input/amount-input.test.tsx | 607 | // Step 3: type "0.5" — field shows "0.5" and USD is computed | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 73 | ### Step 1: Get Changed Files and Diffs | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 95 | ### Step 2: Categorize Files by Type | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 108 | ### Step 3: Load Applicable Guidelines | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 133 | ### Step 4: Analyze Only the Changed Lines | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 380 | ### Step 5: Generate Report | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 465 | ### Step 6: Generate PR Description | COMMENT |
| LOW | .cursor/commands/CODEBOT.md | 528 | ### Step 7: Final Verification (MANDATORY - Internal Only) | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 66 | // Step 1: Fetch PR information | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 73 | // Step 2: Categorize files | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 83 | // Step 3: Analyze with LLM (with fallback: GPT-5 → Claude → Gemini) | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 197 | // Step 4: Build testing plan | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 205 | // Step 5: Validate output quality | COMMENT |
| LOW | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 217 | // Step 6: Output results | COMMENT |
| LOW⚡ | test/e2e/page-objects/flows/test-dapp.flow.ts | 41 | // Step 1: Click connect account button in TestDApp | COMMENT |
| LOW⚡ | test/e2e/page-objects/flows/test-dapp.flow.ts | 44 | // Step 2: Handle Dialog interaction | COMMENT |
| LOW⚡ | test/e2e/page-objects/flows/test-dapp.flow.ts | 50 | // Step 3: Switch back to TestDApp and verify if needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …s/hardware-wallets/HardwareWalletStateManager.test.tsx | 177 | result.current.refs.ensureDeviceReadyPromiseRef.current.set( | CODE |
| CRITICAL | app/scripts/lib/badge/badge-manager.test.ts | 189 | extensionBrowser.action.setBadgeBackgroundColor.mock.calls.at(-1)?.[0] | CODE |
| CRITICAL | test/e2e/send-eth-with-private-key-test/web3js.js | 2 | "use strict";var _typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:funct | CODE |
| CRITICAL | development/webpack/test/dev-server.test.ts | 611 | devServer.webSocketServer.implementation.on.mock.callCount(), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 86 | // Step 1: Check WebHID availability | COMMENT |
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 95 | // Step 2: Check if device is physically connected | COMMENT |
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 105 | // Step 3: Check if device is unlocked. This is only for Nano S and Nano X because there | COMMENT |
| LOW⚡ | ui/contexts/hardware-wallets/adapters/LedgerAdapter.ts | 114 | // Step 4: Attempt to create a transport for the device | COMMENT |
| LOW⚡ | …er-entry/components/amount-input/amount-input.test.tsx | 598 | // Step 1: type "0" — partial; USD clears but field keeps "0" | COMMENT |
| LOW⚡ | …er-entry/components/amount-input/amount-input.test.tsx | 603 | // Step 2: type "0." — field keeps "0." | COMMENT |
| LOW⚡ | …er-entry/components/amount-input/amount-input.test.tsx | 607 | // Step 3: type "0.5" — field shows "0.5" and USD is computed | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 66 | // Step 1: Fetch PR information | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 73 | // Step 2: Categorize files | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 83 | // Step 3: Analyze with LLM (with fallback: GPT-5 → Claude → Gemini) | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 197 | // Step 4: Build testing plan | COMMENT |
| LOW⚡ | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 205 | // Step 5: Validate output quality | COMMENT |
| LOW | …e-testing-ai-analyzer/generate-release-testing-plan.ts | 217 | // Step 6: Output results | COMMENT |
| LOW⚡ | test/e2e/page-objects/flows/test-dapp.flow.ts | 41 | // Step 1: Click connect account button in TestDApp | COMMENT |
| LOW⚡ | test/e2e/page-objects/flows/test-dapp.flow.ts | 44 | // Step 2: Handle Dialog interaction | COMMENT |
| LOW⚡ | test/e2e/page-objects/flows/test-dapp.flow.ts | 50 | // Step 3: Switch back to TestDApp and verify if needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …onfirmations/hooks/send/useEnsureAccountGroupAssets.ts | 80 | // loader marks a group as requested for the whole session, so kicking off a | COMMENT |
| HIGH | development/metamaskbot-build-announce/test-plan.ts | 224 | md += `*Generated by AI Test Plan Analyzer (${plan.modelUsed}) at ${plan.generatedAt}*\n\n`; | CODE |
| HIGH | development/metamaskbot-build-announce/index.ts | 98 | // Add AI-generated test plan section when a test plan was generated. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | development/generate-attributions.sh | 49 | # Check if the script is running in a CI environment (GitHub Actions sets the CI variable to true) | COMMENT |
| LOW | .github/workflows/block-stable-main-to-main.yml | 23 | # Check if source branch matches exact pattern: stable-main-X.Y.Z | COMMENT |
| LOW | .github/workflows/block-stable-sync-to-release.yml | 22 | # Check if source branch matches stable-sync-* targeting release/X.Y.Z | COMMENT |
| LOW | .github/workflows/tag-release-branch.yml | 86 | # Check if there's a GitHub release for this tag | COMMENT |
| LOW | .github/scripts/bundle-stats-commit.sh | 49 | # Check if the SHA already exists in the stats file | COMMENT |
| LOW | .github/scripts/release-create-gh-release.sh | 52 | # Check if tag already exists via API | COMMENT |
| LOW | .github/scripts/release-create-gh-release.sh | 133 | # Check if release already exists (idempotency + SHA verification) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …s/metamask-notifications/useNotificationPreferences.ts | 172 | // TODO: type casting until agentic cli preferences are not optional (next release) | COMMENT |
| MEDIUM | …tifications-settings/notification-settings-section.tsx | 404 | // TODO: type casting until agentic cli preferences are not optional (next release) | COMMENT |
| MEDIUM | .github/scripts/adjust-cws-rollout-guardrails.sh | 2 | # INFRA-3651 — evaluate rollout guardrails; report every violation before exit. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/tag-release-branch.yml | 186 | # Create main tag if needed | COMMENT |
| MEDIUM | .github/scripts/release-create-gh-release.sh | 122 | # Create main release tag | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | ui/helpers/utils/util.test.js | 193 | it('should return None when given nothing', () => { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/e2e/seeder/tron/java-tron-config.ts | 41 | # if you find block sync has lower performance,you can try this settings | COMMENT |
| LOW | test/e2e/tests/state-persistence/helpers.ts | 209 | delete storage['temp-cronjob-storage']; // <- don't forget to delete this line if you remove temp-cronjob-storage | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …unt-network-group/multichain-account-network-group.tsx | 108 | // TODO: Add test network filtering logic here | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/publish-firefox-reviewer-artifacts.sh | 4 | # Usage: | COMMENT |