Repository Analysis

metabase/metabase

The easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data :bar_chart:

1.5 Likely human-written View on GitHub
1.5
Adjusted Score
1.5
Raw Score
100%
Time Factor
2026-05-30
Last Push
47,498
Stars
Clojure
Language
1,815,802
Lines of Code
13479
Files
2279
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 14HIGH 26MEDIUM 55LOW 2184

Pattern Findings

2279 matches across 19 categories. Click a row to expand file-level details.

Hyper-Verbose Identifiers1910 hits · 2015 pts
SeverityFileLineSnippet
LOWfrontend/parse-deps.js77function getFilePathFromImportPath(name) {
LOW…t-plugin-metabase/rules/no-unsafe-element-filtering.js72function isPreviousALengthAssertion(node) {
LOW…/lint/eslint-plugin-metabase/rules/jtag-missing-key.js42 function isDirectChildOfTemplateExpression(node) {
LOWfrontend/test/__support__/utils.ts58export function mockGetBoundingClientRect(rect: Partial<DOMRect> = {}) {
LOWfrontend/test/__support__/storybook.tsx136export function createWaitForResizeToStopDecorator(timeoutMs: number = 1000) {
LOWfrontend/test/__support__/storybook.tsx137 return function WaitForResizeToStopDecorator(Story: StoryFn) {
LOWfrontend/test/__support__/enterprise.js60export function setupEnterpriseOnlyPlugin(pluginName) {
LOWfrontend/test/__support__/server-mocks/data-studio.ts8export function setupTableSelectionInfoEndpoint(
LOWfrontend/test/__support__/server-mocks/data-studio.ts14export function setupPublishTablesEndpoint(
LOWfrontend/test/__support__/server-mocks/data-studio.ts20export function setupPublishTablesEndpointError() {
LOWfrontend/test/__support__/server-mocks/data-studio.ts26export function setupUnpublishTablesEndpoint() {
LOWfrontend/test/__support__/server-mocks/data-studio.ts32export function setupUnpublishTablesEndpointError() {
LOWfrontend/test/__support__/server-mocks/dependencies.ts11export function setupCheckCardDependenciesEndpoint(
LOWfrontend/test/__support__/server-mocks/dependencies.ts17export function setupCheckCardDependenciesEndpointError() {
LOWfrontend/test/__support__/server-mocks/dependencies.ts21export function setupCheckSnippetDependenciesEndpoint(
LOWfrontend/test/__support__/server-mocks/dependencies.ts27export function setupCheckTransformDependenciesEndpoint(
LOWfrontend/test/__support__/server-mocks/dependencies.ts33export function setupListGraphNodeDependentsEndpoint(nodes: DependencyNode[]) {
LOWfrontend/test/__support__/server-mocks/dependencies.ts37export function setupListBreakingGraphNodesEndpoint(
LOWfrontend/test/__support__/server-mocks/dependencies.ts43export function setupListBrokenGraphNodesEndpoint(nodes: DependencyNode[]) {
LOWfrontend/test/__support__/server-mocks/dependencies.ts47export function setupListUnreferencedGraphNodesEndpoint(
LOWfrontend/test/__support__/server-mocks/dependencies.ts53export function setupDependencyGraphEndpoint(response: DependencyGraph) {
LOW…nd/test/__support__/server-mocks/workspace-instance.ts7export function setupGetCurrentWorkspaceEndpoint(
LOW…nd/test/__support__/server-mocks/workspace-instance.ts13export function setupDeleteWorkspaceInstanceEndpoint() {
LOW…nd/test/__support__/server-mocks/workspace-instance.ts17export function setupListTableRemappingsEndpoint(remappings: TableRemapping[]) {
LOWfrontend/test/__support__/server-mocks/slack.ts6export function setupSlackManifestEndpoint() {
LOWfrontend/test/__support__/server-mocks/slack.ts10export function setupSlackSettingsEndpoint() {
LOWfrontend/test/__support__/server-mocks/slack.ts14export function setupSlackAppInfoEndpoint(appInfo?: Partial<SlackAppInfo>) {
LOW…d/test/__support__/server-mocks/content-translation.ts5export function setupContentTranslationEndpoints({
LOW…end/test/__support__/server-mocks/workspace-manager.ts7export function setupListWorkspacesEndpoint(workspaces: Workspace[]) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts11export function setupGetWorkspaceEndpoint(workspace: Workspace) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts15export function setupCreateWorkspaceEndpoint(workspace: Workspace) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts19export function setupUpdateWorkspaceEndpoint(workspace: Workspace) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts23export function setupDeleteWorkspaceEndpoint(workspaceId: WorkspaceId) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts30export function setupDeleteWorkspaceEndpointError(workspaceId: WorkspaceId) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts34export function setupCreateWorkspaceDatabaseEndpoint(workspace: Workspace) {
LOW…end/test/__support__/server-mocks/workspace-manager.ts38export function setupUpdateWorkspaceDatabaseEndpoint(
LOW…end/test/__support__/server-mocks/workspace-manager.ts48export function setupDeleteWorkspaceDatabaseEndpoint(
LOW…end/test/__support__/server-mocks/workspace-manager.ts58export function setupDeleteWorkspaceDatabaseEndpointError(
LOWfrontend/test/__support__/server-mocks/performance.ts4export function setupPerformanceEndpoints(cacheConfigs: CacheConfig[]) {
LOWfrontend/test/__support__/server-mocks/table.ts37export function setupTableQueryMetadataEndpoint(table: Table) {
LOWfrontend/test/__support__/server-mocks/table.ts41export function setupTableQueryMetadataEndpointError(
LOWfrontend/test/__support__/server-mocks/table.ts99export function setupUploadManagementEndpoint(tables: Table[]) {
LOWfrontend/test/__support__/server-mocks/table.ts107export function setupDeleteUploadManagementDeleteEndpoint(failureId?: number) {
LOWfrontend/test/__support__/server-mocks/segment.ts6export function setupSegmentRevisionsEndpointError(segmentId: number) {
LOWfrontend/test/__support__/server-mocks/segment.ts17export function setupSegmentEndpointError(segmentId: number) {
LOWfrontend/test/__support__/server-mocks/search.ts49export function setupEmbeddingDataPickerDecisionEndpoints(
LOWfrontend/test/__support__/server-mocks/replacement.ts8export function setupListSourceReplacementRunsEndpoint(
LOWfrontend/test/__support__/server-mocks/replacement.ts14export function setupReplaceModelWithTransformEndpoint(
LOWfrontend/test/__support__/server-mocks/settings.ts34export function setupUpdateSettingEndpoint(
LOWfrontend/test/__support__/server-mocks/settings.ts42export function setupUpdateSettingsEndpoint(
LOWfrontend/test/__support__/server-mocks/settings.ts62export function setupGenerateRandomTokenEndpoint(token: string) {
LOWfrontend/test/__support__/server-mocks/collection.ts33export function setupCollectionsEndpoints({
LOWfrontend/test/__support__/server-mocks/collection.ts124function getCollectionVirtualSchemaURLs(collection: Collection) {
LOWfrontend/test/__support__/server-mocks/collection.ts135export function setupCollectionVirtualSchemaEndpoints(
LOWfrontend/test/__support__/server-mocks/collection.ts158function handleCollectionItemsResponse({
LOWfrontend/test/__support__/server-mocks/collection.ts189export function setupCollectionItemsEndpoint({
LOWfrontend/test/__support__/server-mocks/collection.ts211export function setupTenantCollectionItemsEndpoint({
LOWfrontend/test/__support__/server-mocks/collection.ts240export function setupRootCollectionItemsEndpoint({
LOWfrontend/test/__support__/server-mocks/collection.ts276export function setupDashboardItemsEndpoint({
LOWfrontend/test/__support__/server-mocks/collection.ts302export function setupCollectionsWithError({
1850 more matches not shown…
Fake / Example Data156 hits · 170 pts
SeverityFileLineSnippet
LOW…ase-lib/v1/metadata/utils/saved-questions.unit.spec.ts36 schemaName: "John Doe's Personal collection",
LOW…ettingsPages/test/AuthenticationSettingsPage.setup.tsx35 common_name: "John Doe",
LOW…ettingsPages/test/AuthenticationSettingsPage.setup.tsx51 common_name: "Jane Doe",
LOW…ettings/components/ApiKeys/ManageApiKeys.unit.spec.tsx40 common_name: "John Doe",
LOW…ettings/components/ApiKeys/ManageApiKeys.unit.spec.tsx56 common_name: "Jane Doe",
LOW…onents/widgets/Notifications/WebhookForm.unit.spec.tsx92 "foo@bar.com",
LOW…onents/widgets/Notifications/WebhookForm.unit.spec.tsx107 "auth-username": "foo@bar.com",
LOW…ools/notifications/UserPicker/UserPicker.unit.spec.tsx18 common_name: "Jane Doe",
LOW…ools/notifications/UserPicker/UserPicker.unit.spec.tsx96 await screen.findByRole("option", { name: "Jane Doe" }),
LOW…ools/notifications/UserPicker/UserPicker.unit.spec.tsx103 expect(getUserQueries()).not.toContain("Jane Doe");
LOW…ools/notifications/UserPicker/UserPicker.unit.spec.tsx115 await screen.findByRole("option", { name: "Jane Doe" }),
LOW…ools/notifications/UserPicker/UserPicker.unit.spec.tsx126 expect(getUserQueries()).not.toContain("Jane Doe");
LOW…ools/notifications/UserPicker/UserPicker.unit.spec.tsx155 await screen.findByRole("option", { name: "Jane Doe" }),
LOW…src/metabase/admin/people/forms/UserForm.unit.spec.tsx325 createMockTenant({ id: 1, name: "Acme Corp" }),
LOW…src/metabase/admin/people/forms/UserForm.unit.spec.tsx368 await userEvent.click(await screen.findByText("Acme Corp"));
LOW…ents/GroupMembersTable/GroupMembersTable.unit.spec.tsx17 email: "user@example.com",
LOW…ashboardSubscriptionsSidebar/tests/common.unit.spec.ts212 expect(await screen.findByText("John Doe")).toBeInTheDocument();
LOW…ItemsTable/BaseItemsTable/BaseItemsTable.unit.spec.tsx89 expect(screen.getByText("John Doe")).toBeInTheDocument();
LOW…tend/src/metabase/visualizations/lib/text.unit.spec.ts27 expect(truncateText("John Doe", 48, test.measurer, fontStyle)).toBe(
LOW…tend/src/metabase/visualizations/lib/text.unit.spec.ts28 "John Doe",
LOW…tend/src/metabase/visualizations/lib/text.unit.spec.ts33 expect(truncateText("John Doe", 48, test.measurer, fontStyle)).toBe(
LOW…tend/src/metabase/visualizations/lib/text.unit.spec.ts34 "John Doe",
LOW…tend/src/metabase/visualizations/lib/text.unit.spec.ts39 expect(truncateText("John Doe", 0, test.measurer, fontStyle)).toBe("…");
LOW…base/visualizations/lib/formatting/value.unit.spec.tsx208 setup("user@example.com", {
LOW…base/visualizations/lib/formatting/value.unit.spec.tsx214 clicked: { value: "user@example.com" },
LOW…/transforms/pages/TransformListPage/utils.unit.spec.ts93 email: "user@example.com",
LOWfrontend/src/metabase/urls/collections.ts30 // `originalName` keeps the original name like "John Doe's Personal Collection"
LOWfrontend/src/metabase/urls/urls.unit.spec.ts226 name: "John Doe's Personal Collection",
LOWfrontend/src/metabase/urls/urls.unit.spec.ts247 originalName: "John Doe's Personal Collection",
LOW…mCreator/FormFieldEditor/FormFieldEditor.unit.spec.tsx60 placeholder: "John Doe",
LOW…base/documents/components/DocumentHeader.unit.spec.tsx12 creator: createMockUser({ common_name: "John Doe" }),
LOW…base/documents/components/DocumentHeader.unit.spec.tsx105 expect(screen.getByText("John Doe")).toBeInTheDocument();
LOW…onents/NotificationList/NotificationList.unit.spec.tsx11const mockUser = createMockUser({ common_name: "John Doe" });
LOW…tificationCard/DashboardNotificationCard.unit.spec.tsx27 common_name: "John Doe",
LOW…onents/NotificationCard/NotificationCard.unit.spec.tsx115 common_name: "John Doe",
LOW…fications/components/HelpModal/HelpModal.unit.spec.tsx16 mockSettings({ "admin-email": "admin@example.com" });
LOW…reRevisionHistory/MeasureRevisionHistory.unit.spec.tsx92 common_name: "John Doe",
LOW…reRevisionHistory/MeasureRevisionHistory.unit.spec.tsx100 expect(screen.getByText("John Doe")).toBeInTheDocument();
LOW…ntRevisionHistory/SegmentRevisionHistory.unit.spec.tsx90 common_name: "John Doe",
LOW…ntRevisionHistory/SegmentRevisionHistory.unit.spec.tsx98 expect(screen.getByText("John Doe")).toBeInTheDocument();
LOW…base/notifications/EmailAttachmentPicker.unit.spec.tsx348 creator: { id: 1, common_name: "Test", email: "test@test.com" } as any,
LOW…base/notifications/EmailAttachmentPicker.unit.spec.tsx403 creator: { id: 1, common_name: "Test", email: "test@test.com" } as any,
LOW…e/notifications/channels/RecipientPicker.unit.spec.tsx112 { email: "foo@bar.com" },
LOW…ontend/src/metabase/selectors/store-users.unit.spec.ts40 const user = createMockUser({ email: "user@example.com" });
LOW…ontend/src/metabase/selectors/store-users.unit.spec.ts62 anyStoreUserEmailAddress: "user@example.com",
LOW…components/TenantsListing/TenantsListing.unit.spec.tsx43 createMockTenant({ id: 11, name: "Acme Corp", slug: "acme-corp" }),
LOW…components/TenantsListing/TenantsListing.unit.spec.tsx47 expect(screen.getByText("Acme Corp")).toBeInTheDocument();
LOW…components/TenantsListing/TenantsListing.unit.spec.tsx53 createMockTenant({ id: 11, name: "Acme Corp", slug: "acme-corp" }),
LOW…components/TenantsListing/TenantsListing.unit.spec.tsx60 expect(screen.queryByText("Acme Corp")).not.toBeInTheDocument();
LOW…components/TenantsListing/TenantsListing.unit.spec.tsx66 createMockTenant({ id: 11, name: "Acme Corp", slug: "acme-corp" }),
LOW…components/TenantsListing/TenantsListing.unit.spec.tsx73 expect(screen.getByText("Acme Corp")).toBeInTheDocument();
LOW…boardingStep/TenantsSummaryOnboardingStep.unit.spec.ts7const TENANT_NAME = "Acme Corp";
LOW…s/SupportSettingsSection/AccessGrantList.unit.spec.tsx47 user_name: "John Doe",
LOW…s/SupportSettingsSection/AccessGrantList.unit.spec.tsx70 expect(within(table).getByText("John Doe")).toBeInTheDocument();
LOW…sSection/TenantLimitsTab/TenantLimitsTab.unit.spec.tsx16 name: "Acme Corp",
LOW…sSection/TenantLimitsTab/TenantLimitsTab.unit.spec.tsx25const tenant1 = createMockTenant({ id: 1, name: "Acme Corp", slug: "acme" });
LOW…sSection/TenantLimitsTab/TenantLimitsTab.unit.spec.tsx71 expect(screen.getByText("Acme Corp")).toBeInTheDocument();
LOW…sSection/TenantLimitsTab/TenantLimitsTab.unit.spec.tsx124 expect(screen.getByText("Acme Corp")).toBeInTheDocument();
LOW…sSection/TenantLimitsTab/TenantLimitsTab.unit.spec.tsx135 expect(screen.getByText("Acme Corp")).toBeInTheDocument();
LOW…nsubscribeUserModal/UnsubscribeUserModal.unit.spec.tsx17 const user = createMockUser({ id: 1, common_name: "John Doe" });
96 more matches not shown…
Hallucination Indicators14 hits · 140 pts
SeverityFileLineSnippet
CRITICAL…_editing/tiptap/extensions/CardEmbed/CardEmbedNode.tsx274 editor.view.state.schema.nodes.flexContainer.create(
CRITICAL…extensions/HandleEditorDrop/DropHandlers/cardToCard.ts39 const flexContainer = view.state.schema.nodes.flexContainer.create(
CRITICAL…extensions/HandleEditorDrop/DropHandlers/cardToCard.ts45 const wrapper = view.state.schema.nodes.resizeNode.create(
CRITICAL…s/HandleEditorDrop/DropHandlers/cardToFlexContainer.ts108 const newContainer = view.state.schema.nodes.flexContainer.create(
CRITICAL…s/HandleEditorDrop/DropHandlers/cardToFlexContainer.ts202 const wrappedRemainingCard = view.state.schema.nodes.resizeNode.create(
CRITICAL…s/HandleEditorDrop/DropHandlers/cardToFlexContainer.ts241 view.state.schema.nodes.flexContainer.create(
CRITICAL…s/HandleEditorDrop/DropHandlers/cardToFlexContainer.ts296 const newTargetFlexContainer = view.state.schema.nodes.flexContainer.create(
CRITICAL…s/HandleEditorDrop/DropHandlers/cardToFlexContainer.ts373 const newFlexContainer = view.state.schema.nodes.flexContainer.create(
CRITICAL…nsions/HandleEditorDrop/DropHandlers/cardToDocument.ts75 view.state.schema.nodes.resizeNode.create(
CRITICAL…nsions/HandleEditorDrop/DropHandlers/cardToDocument.ts106 const newFlexContainer = view.state.schema.nodes.flexContainer.create(
CRITICAL…nsions/HandleEditorDrop/DropHandlers/cardToDocument.ts139 const wrappedNode = view.state.schema.nodes.resizeNode.create(
CRITICAL…nsions/HandleEditorDrop/DropHandlers/cardToDocument.ts164 const wrappedNode = view.state.schema.nodes.resizeNode.create(
CRITICALfrontend/src/metabase/redux/downloads.ts626 title: t`Results for ${action.meta.arg.opts.question.card().name}`,
CRITICALfrontend/src/metabase/redux/downloads.ts640 title: t`Image for ${action.meta.arg.opts.question.card().name}`,
Decorative Section Separators35 hits · 123 pts
SeverityFileLineSnippet
MEDIUMmise.toml4# =================================
MEDIUMmise.toml17# ------------------------------------------
MEDIUMmise.toml45# =============================================================================
MEDIUMmise.toml47# =============================================================================
MEDIUMmise.toml74# =============================================================================
MEDIUMmise.toml76# =============================================================================
MEDIUM…tabase/metrics-viewer/components/MetricSearch/utils.ts652// ── Positioned token type (internal) ────────────────────────────────────────
MEDIUM…rics-viewer/components/MetricSearch/utils.unit.spec.ts1486 // ─────────────────────────────────────────────────────────────────────────
MEDIUM…rics-viewer/components/MetricSearch/utils.unit.spec.ts1494 // ─────────────────────────────────────────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx234// ── Collapsed view (pills) ──────────────────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx282// ── Expanded view (focused text input) ─────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx329// ── Blur / unfocus behavior ─────────────────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx397// ── Run button and validation ───────────────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx468// ── Removing items ──────────────────────────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx538// ── Expression pill display after Run ────────────────────────────────────────
MEDIUM…arch/MetricSearchInput/MetricSearchInput.unit.spec.tsx615// ── Typing / onChange ───────────────────────────────────────────────────────
MEDIUM…MetricSearch/MetricSearchInput/metricTokenHighlight.ts46// ── Identity tracking ──────────────────────────────────────────────────────
MEDIUM…MetricSearch/MetricSearchInput/metricTokenHighlight.ts144// ── Token highlighting ─────────────────────────────────────────────────────
MEDIUM…nfigModal/NotificationChannelConfigModal.unit.spec.tsx28// ── UI behaviour tests (mocked hook) ────────────────────────────────
MEDIUM…nfigModal/NotificationChannelConfigModal.unit.spec.tsx247// ── Save‐payload tests (real hook + context) ────────────────────────
MEDIUM…nfigModal/NotificationChannelConfigModal.unit.spec.tsx475// ── Send-test-notification payload tests (real hook + context) ──────
MEDIUMbin/utils/tools.sh16# =============================================================================
MEDIUMbin/utils/tools.sh18# =============================================================================
MEDIUMbin/utils/tools.sh27# =============================================================================
MEDIUMbin/utils/tools.sh29# =============================================================================
MEDIUMbin/utils/tools.sh39# =============================================================================
MEDIUMbin/utils/tools.sh41# =============================================================================
MEDIUMbin/utils/tools.sh51# =============================================================================
MEDIUMbin/utils/tools.sh53# =============================================================================
MEDIUMbin/utils/tools.sh116# =============================================================================
MEDIUMbin/utils/tools.sh118# =============================================================================
MEDIUMbin/utils/tools.sh137# =============================================================================
MEDIUMbin/utils/tools.sh139# =============================================================================
MEDIUMbin/utils/tools.sh149# =============================================================================
MEDIUMbin/utils/tools.sh151# =============================================================================
Magic Placeholder Names16 hits · 88 pts
SeverityFileLineSnippet
HIGHdocs/people-and-groups/api-keys.md76Replace `YOUR_API_KEY` with the API key you generated above.
HIGHdocs/people-and-groups/api-keys.md80-H 'X-API-Key: YOUR_API_KEY' \
HIGHdocs/people-and-groups/api-keys.md89export METABASE_API_KEY="YOUR_API_KEY"
HIGH…nteractive-embedding-quick-start-guide/sso-with-jwt.ts9const METABASE_JWT_SHARED_SECRET = "YOUR_SECRET_HERE";
HIGHdocs/embedding/sdk/snippets/quickstart/example.tsx13 apiKey: "YOUR_API_KEY",
HIGH…mbedding/sdk/snippets/authentication/express-server.ts11const METABASE_JWT_SHARED_SECRET = "YOUR_SECRET_HERE";
HIGH…ng/sdk/snippets/authentication/auth-config-api-key.tsx8 apiKey: "YOUR_API_KEY",
HIGH…s/authentication/express-server-interactive-and-sdk.ts8const METABASE_JWT_SHARED_SECRET = "YOUR_SECRET_HERE";
HIGHdocs/ai/agent-api.md60X-API-Key: YOUR_API_KEY
HIGHdocs/ai/file-based-development.md65 METABASE_API_KEY={your-api-key}
HIGHdocs/ai/file-based-development.md180 -H 'X-API-Key: YOUR_API_KEY' \
HIGHdocs/ai/file-based-development.md215 -H 'X-API-Key: YOUR_API_KEY' \
HIGHdocs/installation-and-operation/serialization.md419 -H 'X-API-Key: YOUR_API_KEY' \
HIGHdocs/installation-and-operation/serialization.md424 substituting `YOUR_API_KEY` with your API key and `your-metabase-url` with the URL of your Metabase instance.
HIGHdocs/installation-and-operation/serialization.md452 -H 'X-API-Key: YOUR_API_KEY' \
HIGHdocs/installation-and-operation/serialization.md458 substituting `YOUR_API_KEY` with your API key and `your-metabase-url` with your Metabase instance URL.
Over-Commented Block49 hits · 49 pts
SeverityFileLineSnippet
LOW.pre-commit-config.yaml1repos:
LOWmise.toml1#:schema https://mise.jdx.dev/schema/mise.json
LOWmise.toml21# 1. Use mise shims (recommended for IDEs):
LOWmise.toml61
LOWmise.toml81# See: https://mise.jdx.dev/registry.html#tools
LOW…tabase/rules/no-unconditional-metabase-links-render.js1//------------------------------------------------------------------------------
LOW…nd/src/embedding-sdk-bundle/embedding-sdk-bootstrap.ts1import { waitForAuthConfigAndStartEarlyAuthFlow } from "./bootstrap-auth";
LOWfrontend/src/metabase/ui/fonts.ts21 | "Lora"
LOW…ntend/src/metabase/admin/ai/MetabotSetup.unit.spec.tsx681 });
LOW…ntend/src/metabase/admin/ai/MetabotSetup.unit.spec.tsx701 // await selectProvider("OpenAI");
LOW…ntend/src/metabase/admin/ai/MetabotSetup.unit.spec.tsx721 //
LOWfrontend/src/metabase/utils/noop.ts1// there's nothing here!
LOWfrontend/src/metabase/common/components/UndoListing.tsx221 Record<string, boolean>
LOW…tabase/visualizations/visualizations/Scalar/Scalar.tsx121 // used by metrics viewer
LOW…/visualizations/echarts/cartesian/constants/dataset.ts21// When working with time series or numeric scales, we process x-axis values for ECharts
LOW…ations/echarts/cartesian/utils/timeseries.unit.spec.ts401 { expectedUnit: "year", expectedCount: 1 },
LOWfrontend/src/metabase/redux/entities/tables-reducer.ts81 return {
LOW…rc/metabase/visualizer/visualizations/pie.unit.spec.ts161 // TODO Enable when VIZ-652 is closed
LOW…-enterprise/custom_viz/sandbox/distortions-dom-read.ts1import type { CustomVizPluginId } from "metabase-types/api";
LOW…rc/embedding/data-picker/DataSelector/DataSelector.jsx101 // If the isOpen prop is passed in, use the controlled value.
LOWbin/build.sh1#!/usr/bin/env bash
LOWbin/custom-viz/resolve-release.sh1#!/usr/bin/env bash
LOWbin/utils/files.sh1# bin/utils/files.sh - File utilities
LOWbin/utils/logging.sh1# bin/utils/logging.sh - Logging and output functions
LOWbin/utils/tools.sh1# bin/utils/tools.sh - Tool detection and version checking utilities
LOWbin/utils/prompts.sh1# bin/utils/prompts.sh - Interactive prompt utilities
LOWresources/liquibase_legacy_migrations.yaml5621#
LOWresources/liquibase_legacy_migrations.yaml10561 'type/Country',
LOWresources/liquibase_legacy_migrations.yaml10581 #
LOWresources/automagic_dashboards/table/example.yaml1# Each automagic dashboard heuristic produces one dashboard and is primarily drawing
LOWresources/automagic_dashboards/table/example.yaml21# Each metric is a map of metric name to metric definition which is again a map with
LOWresources/automagic_dashboards/table/example.yaml41# Each filter has the form of a map of filter name to filter definition,
LOWcross-version/dev.sh1#!/usr/bin/env bash
LOWdocs/developers-guide/drivers/plugins.md81
LOWdocs/developers-guide/drivers/plugins.md101# You can list any dependencies needed by the plugin by specifying a
LOWdocs/developers-guide/drivers/plugins.md121 for more details
LOWdocs/developers-guide/drivers/plugins.md141# that multiple drivers currently still must share the same dependencies
LOWdocs/developers-guide/drivers/plugins.md201# Steps to take to initialize the plugin. For lazy-load drivers, this
LOW.github/workflows/backend-cloverage.yml1name: Backend-Cloverage
LOW.github/workflows/drivers.yml1501 with:
LOW.github/workflows/drivers.yml1521 # name: Starburst
LOW.github/workflows/cache-generator.yml1# This workflow is the single source of truth for generating and updating various caches used by our CI pipeline.
LOWdev/docker-compose.yml1version: '3.1'
LOWdev/docker-compose.yml21# ;; connect (e.g. metabasedb_postgres_14_data:5432 vs. localhost:15432).
LOW…enarios/visualizations-tabular/pivot_tables.cy.spec.js101 // open drill-through menu and filter to that value
LOW…est/scenarios/embedding/embedding-dashboard.cy.spec.js1101 cy.visit(
LOW…ios/dashboard-filters-matrix/helpers/matrix-helpers.ts181// return id;
LOWe2e/cross-version/run.sh1#!/usr/bin/env bash
LOWsrc/metabase/cmd/resources/config-file-intro.md21# To use an env var, you can use a template string: "{{ env YOUR_ENV_VAR }}"
Verbosity Indicators21 hits · 41 pts
SeverityFileLineSnippet
LOWfrontend/src/embedding-sdk-bundle/bootstrap-auth.ts160 // Step 1: SSO discovery (skip if jwtProviderUri provided)
LOWfrontend/src/embedding-sdk-bundle/bootstrap-auth.ts186 // Step 4: Fetch user and site settings in parallel (bootstrap-specific)
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx377 // Step 1: Verify we start on Dashboard A
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx380 // Step 2: Navigate to question by clicking on dashcard title
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx390 // Step 3: First drill - click on Product ID cell
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx397 // Step 4: Second drill
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx404 // Step 5: One back click should undo BOTH drills and return to the question
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx411 // Step 6: Another back click should return to the dashboard
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx436 // Step 1: Verify we start on Dashboard A
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx439 // Step 2: First drill directly from dashboard (click on User ID cell - no custom click behavior)
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx453 // Step 3: Second drill on the drill result
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx460 // Step 4: One back click should go directly back to Dashboard A
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx534 // Step 1: Verify we start on Dashboard A
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx537 // Step 2: Navigate from Dashboard A to Dashboard B via click behavior
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx546 // Step 3: Navigate from Dashboard B to question via click behavior
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx558 // Step 4: Perform first drill on the question (click on Product ID to drill)
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx574 // Step 5: Perform second drill
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx590 // Step 6: Perform third drill
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx600 // Step 7: One back click should revert ALL drills and return to the original question
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx609 // Step 8: Go back to Dashboard B
LOW…cenarios/embedding-sdk/internal-navigation.cy.spec.tsx616 // Step 9: Go back to Dashboard A
Self-Referential Comments10 hits · 30 pts
SeverityFileLineSnippet
MEDIUMmise.toml6# This file defines the tools required for Metabase development.
MEDIUMresources/liquibase_legacy_migrations.yaml3# This file contains the legacy migrations that used to bootstrap metabase, now this file should be
MEDIUMresources/liquibase_legacy_migrations.yaml5496# Create the TaskHistory table, intended to provide debugging info on our background/quartz processes
MEDIUMresources/liquibase_legacy_migrations.yaml6768# Create the native query snippets table, intended to store snippets and their metadata
MEDIUMresources/liquibase_legacy_migrations.yaml10169 # Create the magic Permissions Groups if they don't already exist.
MEDIUMresources/python-sources/sql_tools.py405 # Create the Into expression with the table identifier
MEDIUMresources/python-sources/sql_tools.py1266 # Create a fake column to reuse column resolution
MEDIUMcross-version/test.sh175# This function is idempotent - it takes a version string and handles everything internally.
MEDIUM.github/workflows/optimize-images.yml38 # Initialize tracking variables
MEDIUM.github/actions/fetch-artifact/action.yml82 # Create a temporary directory for extraction to avoid conflicts
AI Slop Vocabulary7 hits · 21 pts
SeverityFileLineSnippet
MEDIUMfrontend/src/metabase/route-guards.unit.spec.tsx27 // leverage the same context used by the main application
MEDIUMfrontend/src/metabase/visualizations/lib/sensibility.ts163 // the sankey sensibility check is quite robust, so we recommend it whenever it's sensible
MEDIUM…tabase/documents/components/DocumentPage.unit.spec.tsx56 // doesn't exist *anymore* should be more robust
MEDIUM…erprise/custom_viz/sandbox/distortions-blocked-apis.ts21// property of the global. Walk the chain so the lookup is robust.
MEDIUM…ateExternalUserButton/ReactivateExternalUserButton.tsx9 // Making the same API request, so we can leverage the cached result
MEDIUMbin/embedding-sdk/change-react-version.bash17 # Install React and Cypress React test harness
MEDIUM.github/workflows/cache-generator.yml8# Jobs can utilize the prior week's cache if the current week's cache is not found.
Cross-Language Confusion6 hits · 19 pts
SeverityFileLineSnippet
HIGHresources/python-sources/sql_tools.py73 [[null, null, "users"], [null, "public", "orders"], ["myproject", "dataset", "events"]]
HIGHresources/python-sources/sql_tools.py82 => '[[null, null, "users"]]'
HIGHresources/python-sources/sql_tools.py85 => '[[null, "public", "users"]]'
HIGHresources/python-sources/sql_tools.py109 [[null, null, "users", "id"], [null, "public", "orders", "total"]]
HIGHresources/python-sources/sql_tools.py125 => '[[null, null, "users", "id"]]'
HIGHresources/python-sources/sql_tools.py128 => '[[null, "public", "users", "*"]]'
Overly Generic Function Names16 hits · 16 pts
SeverityFileLineSnippet
LOW…-sdk-shared/.storybook/msw-public/mockServiceWorker.js122async function handleRequest(event, requestId) {
LOW…ents/DatabaseCacheScheduleField/ScheduleModePicker.tsx43function getData(): SelectData<ScheduleMode> {
LOW…dmin/tools/components/LogLevelsModal/DurationInput.tsx47function getData() {
LOW…abase/admin/tools/components/TaskPicker/TaskPicker.tsx40function getData(uniqueTasks?: string[]) {
LOW…tools/components/TaskStatusPicker/TaskStatusPicker.tsx38function getData() {
LOW…d/src/metabase/metadata/components/DataSourceInput.tsx48function getData({
LOWfrontend/src/metabase/metadata/components/UserInput.tsx121function getData(
LOW…onents/FieldValuesTypePicker/FieldValuesTypePicker.tsx50function getData() {
LOW…adata/components/FieldOrderPicker/FieldOrderPicker.tsx46function getData() {
LOW…/metadata/components/CurrencyPicker/CurrencyPicker.tsx84function getData() {
LOW…pingPicker/DisplayValuesPicker/DisplayValuesPicker.tsx95function getData(options: RemappingValue[], value: RemappingValue) {
LOW…adata/components/UnfoldJsonPicker/UnfoldJsonPicker.tsx44function getData() {
LOW…onents/FieldVisibilityPicker/FieldVisibilityPicker.tsx82function getData() {
LOW…a/components/SemanticTypePicker/SemanticTypePicker.tsx71function getData({ field, value }: Pick<Props, "field" | "value">) {
LOW…/metadata/components/FkTargetPicker/FkTargetPicker.tsx160function getData(comparableIdFields: Field[], includeSchema: boolean) {
LOW.storybook/msw-public/mockServiceWorker.js123async function handleRequest(event, requestId) {
Example Usage Blocks9 hits · 14 pts
SeverityFileLineSnippet
LOWbin/utils/colors.sh4# Usage:
LOWbin/utils/files.sh4# Usage:
LOWbin/utils/logging.sh4# Usage:
LOWbin/utils/tools.sh4# Usage:
LOWbin/utils/all.sh4# Usage:
LOWbin/utils/prompts.sh4# Usage:
LOWcross-version/dev.sh11# Usage:
LOWcross-version/test.sh5# Usage:
LOWe2e/cross-version/run.sh7# Usage:
Redundant / Tautological Comments8 hits · 13 pts
SeverityFileLineSnippet
LOWbin/openapi-check.sh29# Check if there are any differences between generated and committed versions
LOWbin/utils/tools.sh20# Check if a command/tool is available
LOWresources/python-sources/sql_tools.py975 # Check if it's a CTE reference
LOWresources/python-sources/sql_tools.py1515 # Check if it looks like a dict (frozenset of 2-tuples)
LOWcross-version/test.sh292# Check if Metabase refuses to start (downgrade detection)
LOW.github/workflows/resolve-backport-conflicts.yml92 # Check if we're in a cherry-pick state with conflicts
LOW.github/workflows/optimize-images.yml65 # Output results for use in commit message
LOW.github/workflows/sync-fork.yml161 # Check if branch exists on origin
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippet
HIGHfrontend/src/metabase-shared/color_selector.js31 print("ERROR", e);
HIGH…scenarios/data-studio/transforms/transforms.cy.spec.ts3697 print("Hello, world!")
Slop Phrases3 hits · 9 pts
SeverityFileLineSnippet
MEDIUM…ing-sdk-package/cli/snippets/express-server-snippet.ts18 // This is hard-coded for demonstration purposes.
MEDIUM…mbedding/sdk/snippets/authentication/express-server.ts17 // Here it's hardcoded for demonstration purposes
MEDIUM…s/authentication/express-server-interactive-and-sdk.ts21 // Here it's hardcoded for demonstration purposes
Deep Nesting12 hits · 8 pts
SeverityFileLineSnippet
LOWresources/python-sources/sql_tools.py68
LOWresources/python-sources/sql_tools.py104
LOWresources/python-sources/sql_tools.py416
LOWresources/python-sources/sql_tools.py476
LOWresources/python-sources/sql_tools.py1587
LOWresources/python-sources/sql_tools.py530
LOWresources/python-sources/sql_tools.py717
LOWresources/python-sources/sql_tools.py1030
LOWresources/python-sources/sql_tools.py1097
LOWresources/python-sources/sql_tools.py1276
LOWresources/python-sources/sql_tools.py1434
LOWresources/python-sources/sql_tools.py1506
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippet
HIGH…rc/metabase/query_builder/actions/core/initializeQB.ts377 // This handles cases like AI-generated queries with model references {{#1}}
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippet
HIGHresources/python-sources/sql_tools.py477 Replace schema, table, and column names in a SQL query. SECURITY NOTE: Replacement values are injected into th
Excessive Try-Catch Wrapping3 hits · 3 pts
SeverityFileLineSnippet
LOWresources/python-sources/sql_tools.py378 except Exception as e:
LOWresources/python-sources/sql_tools.py1627 except Exception as e:
LOWresources/python-sources/sql_tools.py1645 except Exception as e: