The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
3246 matches across 16 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | jest.config.codeowner.js | 145 | function writeCoverageSummaryArtifact(coverageResults) { |
| LOW | eslint.config.js | 84 | function withBaseRestrictedImportsConfig(config = {}) { |
| LOW | devenv/docker/blocks/elastic/data/data.js | 58 | async function elasticSetupIndexTemplate() { |
| LOW | devenv/docker/blocks/elastic/data/data.js | 164 | function getNextSineWaveSleepDuration() { |
| LOW | …right/various-suite/prometheus-variable-editor.spec.ts | 35 | async function addPrometheusQueryVariable( |
| LOW | …right/various-suite/prometheus-variable-editor.spec.ts | 63 | async function variableFlowToQueryEditor( |
| LOW | …test-plugins/grafana-extensionstest-app/tests/utils.ts | 5 | export async function ensureExtensionRegistryIsPopulated(page: Page) { |
| LOW | e2e-playwright/dashboards-suite/utils/makeDashboard.ts | 1 | export function makeNewDashboardRequestBody(dashboardName: string, folderUid?: string) { |
| LOW | …ywright/panels-suite/panelEdit_queryEditorNext.spec.ts | 24 | function addQueryOrExpressionButton(page: Page) { |
| LOW | e2e-playwright/panels-suite/geomap-layer-types.spec.ts | 12 | async function setupGeomapWithAirportsGeoJSON({ gotoDashboardPage, selectors, page }: SetupFixtures) { |
| LOW | …ywright/panels-suite/panelEdit_transformsSmoke.spec.ts | 70 | async function assertTransformationPickerDisabled( |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 33 | export function getAdHocFilterOptionValues(page: Page) { |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 37 | export function getAdHocFilterRestoreButton(page: Page, type: string) { |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 72 | export async function clickFirstScopesDashboard(page: Page) { |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 80 | export function getScopesDashboardsSearchInput(page: Page) { |
| LOW | e2e-playwright/dashboard-cujs/utils.ts | 75 | export async function trackDashboardReloadRequests(page: Page): Promise<{ |
| LOW | e2e-playwright/dashboard-cujs/utils.ts | 123 | export function checkDashboardReloadBehavior(requests: DashboardRequest[]): boolean { |
| LOW | …e-playwright/cloud-plugins-suite/azure-monitor.spec.ts | 36 | async function provisionAzureMonitorDatasources( |
| LOW | …ts/dashboard-conditional-rendering-load-change.spec.ts | 415 | async function failTestDataRequestForOption(page: Page, option: string) { |
| LOW | …d-new-layouts/dashboards-conditional-rendering.spec.ts | 245 | async function addConditionalVariableRule( |
| LOW | …d-new-layouts/dashboards-conditional-rendering.spec.ts | 271 | async function addConditionalTimeRangeRule( |
| LOW | …ht/dashboard-new-layouts/dashboard-url-syncing.spec.ts | 16 | function buildDashboardPathWithSearch(dashboardUid: string, searchParams: Record<string, string>): string { |
| LOW | e2e-playwright/dashboard-new-layouts/utils.ts | 207 | export function stripMetadataNameFromImportJson(input: string): string { |
| LOW | …board-new-layouts/dashboards-repeats-snapshots.spec.ts | 13 | async function expectRepeatPanelsRendered( |
| LOW | …dashboard-new-layouts/dashboards-panel-layouts.spec.ts | 383 | async function checkAutoGridLayoutInputs(dashboardPage: DashboardPage, selectors: E2ESelectorGroups) { |
| LOW | …dashboard-new-layouts/dashboards-panel-layouts.spec.ts | 398 | async function verifyPanelsStackedVertically(dashboardPage: DashboardPage, selectors: E2ESelectorGroups) { |
| LOW | public/app/types/unified-alerting-dto.ts | 51 | export function mapStateWithReasonToReason(state: GrafanaAlertStateWithReason): string { |
| LOW | public/app/types/unified-alerting-dto.ts | 62 | export function mapStateWithReasonToBaseState( |
| LOW | public/app/core/context/GrafanaContext.ts | 30 | export function useReturnToPreviousInternal() { |
| LOW | public/app/core/utils/richHistory.ts | 132 | export async function updateRichHistorySettings(settings: RichHistorySettings): Promise<void> { |
| LOW | public/app/core/utils/richHistory.ts | 144 | export async function updateStarredInRichHistory(id: string, starred: boolean) { |
| LOW | public/app/core/utils/richHistory.ts | 162 | export async function updateCommentInRichHistory(id: string, newComment: string | undefined) { |
| LOW | public/app/core/utils/errors.ts | 64 | export function getRequestConfigFromError(err: FetchError): string { |
| LOW | public/app/core/utils/browser.ts | 5 | export function checkBrowserCompatibility() { |
| LOW | public/app/core/utils/metrics.ts | 43 | export function reportMetricPerformanceMark(metricName: string, prefix = '', suffix = ''): void { |
| LOW | public/app/core/crash/crash.utils.ts | 13 | function isChromePerformanceMemory(memory: unknown): memory is ChromePerformanceMemory { |
| LOW | public/app/core/components/Page/Page.tsx | 157 | function getDefaultBackgroundForLayout(layout: PageLayoutType) { |
| LOW | public/app/core/components/Page/Page.tsx | 169 | function getGradientBackgroundForTheme(theme: GrafanaTheme2) { |
| LOW | …/core/components/AppChrome/AppChromeExtensionPoint.tsx | 24 | function InternalAppChromeExtensionPoint(): JSX.Element | null { |
| LOW | public/app/core/components/AppChrome/AppChrome.tsx | 178 | function useResponsiveDockedMegaMenu(chrome: AppChromeService) { |
| LOW | …ppChrome/ExtensionSidebar/ExtensionSidebarProvider.tsx | 62 | export function useExtensionSidebarContext() { |
| LOW | …ppChrome/ExtensionSidebar/ExtensionSidebarProvider.tsx | 256 | export function getComponentIdFromComponentMeta(pluginId: string, componentTitle: string) { |
| LOW | …ppChrome/ExtensionSidebar/ExtensionSidebarProvider.tsx | 260 | export function getComponentMetaFromComponentId( |
| LOW | …ppChrome/ExtensionSidebar/ExtensionSidebarProvider.tsx | 284 | export function getInteractiveLearningPluginId(availableComponents: ExtensionPointPluginMeta): string | undefined { |
| LOW | …Chrome/ExtensionSidebar/ExtensionToolbarItemButton.tsx | 27 | function ExtensionToolbarItemButtonComponent( |
| LOW | …e/components/AppChrome/TopBar/useChromeHeaderHeight.ts | 39 | function getHeaderLevelsGivenState( |
| LOW | …e/components/AppChrome/TopBar/useChromeHeaderHeight.ts | 94 | export function getChromeHeaderLevelHeight() { |
| LOW | public/app/core/components/TimelineChart/utils.ts | 602 | export function prepareTimelineLegendItems( |
| LOW | …nents/NestedFolderPicker/useFoldersQueryAppPlatform.ts | 34 | export function useFoldersQueryAppPlatform({ |
| LOW | public/app/core/history/RichHistoryLocalStorage.ts | 325 | function calculateTotalLocalStorageSize() { |
| LOW | public/app/core/history/richHistoryLocalStorageUtils.ts | 53 | function filterQueriesByDataSource(queries: RichHistoryQuery[], listOfDatasourceFilters: string[]) { |
| LOW | public/app/core/history/richHistoryLocalStorageUtils.ts | 59 | function filterQueriesBySearchFilter(queries: RichHistoryQuery[], searchFilter: string) { |
| LOW | public/app/core/services/meticulous.ts | 8 | export async function updateMeticulousRecording(pathname: string): Promise<void> { |
| LOW | public/app/core/services/echo/init.ts | 116 | async function initGoogleAnalyticsBackend() { |
| LOW | public/app/core/services/echo/init.ts | 176 | async function initAzureAppInsightsBackend() { |
| LOW | public/app/core/selectors/navModel.ts | 53 | function enrichNodeWithActiveState(node: NavModelItem, activeId: string): NavModelItem { |
| LOW | …p/plugins/datasource/parca/QueryEditor/autocomplete.ts | 119 | function getMonacoCompletionItemKind(type: CompletionType, monaco: Monaco): monacoTypes.languages.CompletionItemKind { |
| LOW | …lic/app/plugins/datasource/loki/shardQuerySplitting.ts | 80 | function splitQueriesByStreamShard( |
| LOW | …lic/app/plugins/datasource/loki/shardQuerySplitting.ts | 321 | function updateGroupSizeFromResponse(response: DataQueryResponse, group: ShardedQueryGroup) { |
| LOW | public/app/plugins/datasource/loki/getDerivedFields.ts | 71 | function fieldFromDerivedFieldConfig(derivedFieldConfigs: DerivedFieldConfig[]): Field { |
| 1520 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | relyance.yaml | 1 | # Relyance Compliance Inspector Configuration |
| LOW | eslint.config.js | 681 | }), |
| LOW | devenv/docker/blocks/loki/loki-config.yaml | 41 | # By default, Loki will send anonymous, but uniquely-identifiable usage and configuration |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1 | ######################## Filebeat Configuration ############################ |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 21 | # Filebeat will choose the paths depending on your OS. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 41 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 61 | #error: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 81 | # Input configuration (advanced). Any input configuration option |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 101 | # Filebeat will choose the paths depending on your OS. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 141 | # Set custom paths for the log files. If left empty, |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 161 | #enabled: true |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 181 | #input: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 201 | # Set custom paths for the log files. If left empty, |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 221 | #var.paths: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 241 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 261 | #var.paths: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 281 | # Slow logs |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 301 | #var.paths: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 321 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 341 | # Logs |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 361 | #var.paths: ["/var/log/redis/redis-server.log*"] |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 381 | #var.paths: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 441 | #- type: log |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 461 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 481 | # review: 1 |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 501 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 521 | # If you enable this setting, the keys are copied top level in the output document. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 541 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 561 | # this can mean that the first entries of a new file are skipped. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 581 | # backoff factor. Having it set to 10s means in the worst case a new line can be added to a log |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 601 | # Close renamed closes a file handler when the file is renamed or rotated. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 621 | # Removes the state for file which cannot be found on disk anymore immediately |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 641 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 661 | # Experimental: Config options for the udp input |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 681 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 701 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 721 | # The host and port to receive the new event |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 741 | # The number of seconds of inactivity before a remote connection is closed. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 761 | # Optional passphrase for decrypting the Certificate Key. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 781 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 801 | # - type: log |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 821 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 841 | #reload.enabled: true |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 861 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 881 | # to be sent to the outputs. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 901 | # will have no more effect. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 921 | # - The buffer limit has been reached. |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 941 | # Reader flush timeout, waiting for more events to become available, so |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 961 | # The supported processors are drop_fields, drop_event, include_fields, |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 981 | # |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1001 | # |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1021 | # match_source_index: 4 |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1041 | #- add_host_metadata: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1061 | # overwrite_keys: false |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1081 | output.elasticsearch: |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1101 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1121 | #pipeline: "" |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1141 | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1161 | # susceptible to man-in-the-middle attacks. Use only for testing. Default is |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1181 | # Configure cipher suites to be used for SSL connections |
| 1090 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | …-playwright/dashboards-suite/textbox-variables.spec.ts | 56 | const textPanel = page.locator(selectors.components.Panels.Visualization.Text.container('')); |
| CRITICAL | …aywright/dashboard-new-layouts/page-objects/Sidebar.ts | 20 | .getByGrafanaSelector(this.selectors.components.PanelEditor.OptionsPane.fieldLabel('dashboard-options Title')) |
| CRITICAL | …aywright/dashboard-new-layouts/page-objects/Sidebar.ts | 27 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('dashboard-options Description') |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 99 | await user.click(ELEMENTS.actions.more.actions.silence.get()); |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 486 | expect(ELEMENTS.actions.more.pluginActions.sloDashboard.get()).toBeInTheDocument(); |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 487 | expect(ELEMENTS.actions.more.pluginActions.assertsWorkbench.query()).not.toBeInTheDocument(); |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 489 | await waitFor(() => expect(ELEMENTS.actions.more.pluginActions.declareIncident.get()).toBeEnabled()); |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 505 | expect(ELEMENTS.actions.more.pluginActions.assertsWorkbench.get()).toBeInTheDocument(); |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 506 | expect(ELEMENTS.actions.more.pluginActions.sloDashboard.query()).not.toBeInTheDocument(); |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 508 | await waitFor(() => expect(ELEMENTS.actions.more.pluginActions.declareIncident.get()).toBeEnabled()); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 144 | expect(ui.settings.googlechat.title.input.get()).toHaveValue('Alert Title'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 145 | expect(ui.settings.googlechat.message.input.get()).toHaveValue('Alert Message'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 152 | expect(ui.settings.webhook.title.container.get()).toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 153 | expect(ui.settings.webhook.message.container.get()).toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 156 | expect(ui.settings.webhook.message.input.query()).not.toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 157 | expect(ui.settings.webhook.title.input.query()).not.toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 175 | expect(ui.settings.webhook.title.input.get()).toHaveValue('Webhook Title'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 176 | expect(ui.settings.webhook.message.input.get()).toHaveValue('Webhook Message'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 183 | expect(ui.settings.googlechat.title.container.get()).toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 184 | expect(ui.settings.googlechat.message.container.get()).toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 187 | expect(ui.settings.googlechat.message.input.query()).not.toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 188 | expect(ui.settings.googlechat.title.input.query()).not.toBeInTheDocument(); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 208 | expect(ui.settings.googlechat.title.input.get()).toHaveValue('Original Title'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 209 | expect(ui.settings.googlechat.message.input.get()).toHaveValue('Original Message'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 224 | expect(ui.settings.googlechat.title.input.get()).toHaveValue('Original Title'); |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 225 | expect(ui.settings.googlechat.message.input.get()).toHaveValue('Original Message'); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 503 | const oauth2Container = await ui.webhook.httpConfig.oauth2.container.find(); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 504 | const clientSecretField = ui.webhook.httpConfig.oauth2.clientSecret.get(oauth2Container); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 505 | const oauthCaCertField = ui.webhook.httpConfig.oauth2.tls_config.caCertificate.get(oauth2Container); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 506 | const oauthClientCertField = ui.webhook.httpConfig.oauth2.tls_config.clientCert.get(oauth2Container); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 507 | const oauthClientKeyField = ui.webhook.httpConfig.oauth2.tls_config.clientKey.get(oauth2Container); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 580 | expect(await ui.webhook.httpConfig.oauth2.tls_config.container.find()).toBeInTheDocument(); |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 581 | await user.click(await ui.webhook.httpConfig.oauth2.tls_config.deleteButton.find()); |
| CRITICAL | public/app/features/canvas/runtime/scene.tsx | 376 | this.tooltipPayload.element.options.actions.filter( |
| CRITICAL | …blic/app/features/dashboard/state/DashboardMigrator.ts | 356 | panel.options.fieldOptions.defaults.links = panel.options.fieldOptions.defaults.links.map(updateLinks); |
| CRITICAL | …blic/app/features/dashboard/state/DashboardMigrator.ts | 385 | panel.options.fieldOptions.defaults.links = panel.options.fieldOptions.defaults.links.map(updateLinks); |
| CRITICAL | …ures/dashboard/components/SubMenu/AnnotationPicker.tsx | 51 | data-testid={selectors.pages.Dashboard.SubMenu.Annotations.annotationLabel(annotation.name)} |
| CRITICAL | …ures/dashboard/components/SubMenu/AnnotationPicker.tsx | 58 | data-testid={selectors.pages.Dashboard.SubMenu.Annotations.annotationToggle(annotation.name)} |
| CRITICAL | …lic/app/features/dashboard/api/ResponseTransformers.ts | 360 | currentRow.spec.layout.spec.items.push(buildGridItemKind(p, elementName, yOffsetInRows(p, legacyRowY))); |
| CRITICAL | …pp/features/variables/editor/VariableEditorListRow.tsx | 66 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowNameFields(variable.name)} |
| CRITICAL | …pp/features/variables/editor/VariableEditorListRow.tsx | 78 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowDefinitionFields(variable.name)} |
| CRITICAL | …pp/features/variables/editor/VariableEditorListRow.tsx | 95 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowDuplicateButtons(variable.name)} |
| CRITICAL | …pp/features/variables/editor/VariableEditorListRow.tsx | 105 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowRemoveButtons(variable.name)} |
| CRITICAL | …ard-scene/settings/variables/VariableEditorListRow.tsx | 74 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowNameFields(variableState.name)} |
| CRITICAL | …ard-scene/settings/variables/VariableEditorListRow.tsx | 86 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowDefinitionFields(variableState.name)} |
| CRITICAL | …ard-scene/settings/variables/VariableEditorListRow.tsx | 107 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowDuplicateButtons( |
| CRITICAL | …ard-scene/settings/variables/VariableEditorListRow.tsx | 118 | data-testid={selectors.pages.Dashboard.Settings.Variables.List.tableRowRemoveButtons( |
| CRITICAL | …/dashboard-scene/serialization/transformationCompat.ts | 86 | const wireTransformations = element.spec.data.spec.transformations.map( |
| CRITICAL | …res/dashboard-scene/utils/getVariablesCompatibility.ts | 12 | const panel = sceneObject.state.editPanel.state.panelRef.resolve(); |
| CRITICAL | …/app/features/dashboard-scene/scene/DashboardScene.tsx | 1063 | panel = dashboard.state.editPanel.state.panelRef.resolve(); |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 139 | children: this.state.layout.state.children.filter((child) => child !== newGridItem), |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 168 | children: this.state.layout.state.children.filter((child) => child !== panel), |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 186 | const gridItemIndex = this.state.layout.state.children.indexOf(gridItem); |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 193 | children: this.state.layout.state.children.filter((child) => child !== gridItem), |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 199 | ...this.state.layout.state.children.slice(0, gridItemIndex), |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 201 | ...this.state.layout.state.children.slice(gridItemIndex), |
| CRITICAL | …scene/scene/layout-auto-grid/AutoGridLayoutManager.tsx | 403 | children: this.state.layout.state.children.filter((child) => child !== gridItem), |
| CRITICAL | …cene/scene/layout-default/DefaultGridLayoutManager.tsx | 174 | children: this.state.grid.state.children.filter((child) => child !== newGridItem), |
| CRITICAL | …cene/scene/layout-default/DefaultGridLayoutManager.tsx | 216 | children: this.state.grid.state.children.filter((child) => child !== newGridItem), |
| CRITICAL | …cene/scene/layout-default/DefaultGridLayoutManager.tsx | 514 | this.state.grid.state.children.forEach((child) => { |
| 27 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | devenv/dev-dashboards/panel-table/table_nested.json | 534 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana.com/media/menu |
| LOW | devenv/dev-dashboards/panel-table/table_nested.json | 534 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana.com/media/menu |
| LOW | …env/dev-dashboards/panel-table/table_kitchen_sink.json | 514 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana.com/media/menu |
| LOW | …env/dev-dashboards/panel-table/table_kitchen_sink.json | 514 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana.com/media/menu |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 465 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/media/menus/produc |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 465 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/media/menus/produc |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 1002 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/media/menus/produc |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 1002 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/media/menus/produc |
| LOW | e2e-playwright/panels-suite/table-nested.spec.ts | 356 | // toggle the lorem ipsum column's wrap text toggle and confirm that the height shrinks. |
| LOW | e2e-playwright/panels-suite/table-kitchenSink.spec.ts | 78 | // toggle the lorem ipsum column's wrap text toggle and confirm that the height shrinks. |
| LOW | …ion-alerting-resources/terraform-provisioning/index.md | 287 | Lorem ipsum - Custom alert! |
| LOW | …configure-access/configure-authentication/jwt/index.md | 78 | "name": "John Doe", |
| LOW | public/app/features/alerting/unified/utils/receivers.ts | 16 | * { name: 'my receiver', email_configs: [{ from: "foo@bar.com" }] } |
| LOW | …/unified/components/receivers/NewReceiverView.test.tsx | 127 | await user.type(email, 'test@test.com'); |
| LOW | …/unified/components/receivers/NewReceiverView.test.tsx | 131 | 'Invalid receiver: \'invalid email integration[0]: failed to check if email address "test@test.com" exists: user n |
| LOW | …erting/unified/components/contact-points/utils.test.ts | 124 | expect(summarizeEmailAddresses('test@test.com')).toBe('test@test.com'); |
| LOW | …c/app/features/logs/components/LogMessageAnsi.test.tsx | 9 | render(<LogMessageAnsi value="Lorem ipsum" />); |
| LOW | …c/app/features/logs/components/LogMessageAnsi.test.tsx | 12 | expect(screen.queryByText('Lorem ipsum')).toBeInTheDocument(); |
| LOW | public/app/features/profile/ChangePasswordPage.test.tsx | 18 | email: 'test@test.com', |
| LOW | public/app/features/profile/ChangePasswordPage.test.tsx | 34 | email: 'test@test.com', |
| LOW | …blic/app/features/profile/UserProfileEditPage.test.tsx | 28 | email: 'test@test.com', |
| LOW | …blic/app/features/profile/UserProfileEditPage.test.tsx | 203 | expect(email()).toHaveValue('test@test.com'); |
| LOW | public/app/features/profile/state/reducers.test.ts | 67 | email: 'test@test.com', |
| LOW | public/app/features/profile/state/reducers.test.ts | 80 | email: 'test@test.com', |
| LOW | public/app/features/apiserver/client.test.ts | 86 | contextSrv.user.login = 'user@example.com'; |
| LOW | …ages/grafana-ui/src/components/Drawer/Drawer.story.tsx | 70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et |
| LOW | …ages/grafana-ui/src/components/Drawer/Drawer.story.tsx | 70 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et |
| LOW | …ages/grafana-ui/src/components/Drawer/Drawer.story.tsx | 151 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et |
| LOW | …ages/grafana-ui/src/components/Drawer/Drawer.story.tsx | 151 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et |
| LOW | …ages/grafana-ui/src/components/Drawer/Drawer.story.tsx | 221 | title: `This is a very long title! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor |
| LOW | …ages/grafana-ui/src/components/Drawer/Drawer.story.tsx | 221 | title: `This is a very long title! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor |
| LOW | packages/grafana-ui/src/components/Card/Card.story.tsx | 266 | Description, body text. Greetings! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod |
| LOW | packages/grafana-ui/src/components/Card/Card.story.tsx | 266 | Description, body text. Greetings! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod |
| LOW | …i/src/components/Typeahead/PartialHighlighter.test.tsx | 19 | text="Lorem ipsum dolor sit amet" |
| LOW | …i/src/components/Typeahead/PartialHighlighter.test.tsx | 19 | text="Lorem ipsum dolor sit amet" |
| LOW | …i/src/components/Typeahead/PartialHighlighter.test.tsx | 38 | text="Lorem ipsum dolor sit amet" |
| LOW | …i/src/components/Typeahead/PartialHighlighter.test.tsx | 38 | text="Lorem ipsum dolor sit amet" |
| LOW | …i/src/components/Typeahead/PartialHighlighter.test.tsx | 52 | render(<PartialHighlighter text="Lorem ipsum dolor sit amet" highlightClassName="highlight" highlightParts={[]} />); |
| LOW | …i/src/components/Typeahead/PartialHighlighter.test.tsx | 52 | render(<PartialHighlighter text="Lorem ipsum dolor sit amet" highlightClassName="highlight" highlightParts={[]} />); |
| LOW | …onents/Forms/RadioButtonList/RadioButtonList.story.tsx | 49 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mag |
| LOW | …onents/Forms/RadioButtonList/RadioButtonList.story.tsx | 49 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mag |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 34 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 34 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 41 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 41 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 48 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 48 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 55 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 55 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 62 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 69 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 69 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 76 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 76 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 83 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …c/components/ScrollContainer/ScrollContainer.story.tsx | 83 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …/grafana-ui/src/components/Combobox/Combobox.story.tsx | 48 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …/grafana-ui/src/components/Combobox/Combobox.story.tsx | 48 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore |
| LOW | …/grafana-ui/src/components/Combobox/Combobox.story.tsx | 60 | 'this is a very long description that should be longer than the longest option label which should make the opt |
| 140 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | devenv/secrets/secrets.go | 47 | // ── Config types (YAML input) ─────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 74 | // ── API resource types (JSON for POST) ────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 130 | // ── HTTP client ───────────────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 185 | // ── Check API availability ────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 211 | // ── Create resources ──────────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 304 | // ── Delete resources ──────────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 349 | // ── Helpers ───────────────────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 360 | // ── Self-test (no server required) ────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 378 | // ── Config parsing ────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 425 | // ── Resource JSON structure ───────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 496 | // ── Helpers ───────────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 510 | // ── HTTP interaction (mock server) ────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 542 | // ── Summary ───────────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 579 | // ── Generate bulk test data ────────────────────────────────────────────────── |
| MEDIUM | devenv/secrets/secrets.go | 646 | // ── Main ──────────────────────────────────────────────────────────────────── |
| MEDIUM | …/app/features/alerting/unified/utils/access-control.ts | 26 | // ── Pure data: static permission maps ──────────────────────────────────────── |
| MEDIUM | …/app/features/alerting/unified/utils/access-control.ts | 117 | // ── Pure functions: source-type-aware permission resolvers ──────────────────── |
| MEDIUM | …/app/features/alerting/unified/utils/access-control.ts | 155 | // ── Runtime utilities ───────────────────────────────────────────────────────── |
| MEDIUM | …res/alerting/unified/hooks/abilities/otherAbilities.ts | 19 | // ── Folder bulk action abilities ────────────────────────────────────────────── |
| MEDIUM | …res/alerting/unified/hooks/abilities/otherAbilities.ts | 40 | // ── Enrichment abilities ────────────────────────────────────────────────────── |
| MEDIUM | …app/features/alerting/unified/hooks/abilities/types.ts | 124 | // ── Ability ───────────────────────────────────────────────────────────── |
| MEDIUM | …app/features/alerting/unified/hooks/abilities/types.ts | 187 | // ── Sentinel constants ──────────────────────────────────────────────────────── |
| MEDIUM | …app/features/alerting/unified/hooks/abilities/types.ts | 223 | // ── Type-guard functions ────────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 38 | // ── useRuleAdministrationAbility ──────────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 286 | // ── useRuleSilenceAbility ───────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 338 | // ── useRuleExploreAbility ───────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 364 | // ── useRuleExportAbility ────────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 387 | // ── useRuleAdministrationAbility ───────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 477 | // ── usePromRuleSilenceAbility ───────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 527 | // ── usePromRuleExportAbility ────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 556 | // ── Global rule ability React hooks ────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 608 | // ── Pure utility function branches ──────────────────────────────────────────── |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 39 | // ── useRuleAdministrationAbility ────────────────────────────────────────────── |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 111 | // ── useRuleSilenceAbility ───────────────────────────────────────────────────── |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 125 | // ── useRuleExportAbility ────────────────────────────────────────────────────── |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 137 | // ── Internal helpers ────────────────────────────────────────────────────────── |
| MEDIUM | …ing/unified/hooks/abilities/rules/promRuleAbilities.ts | 37 | // ── usePromRuleAdministrationAbility ───────────────────────────────────────── |
| MEDIUM | …ing/unified/hooks/abilities/rules/promRuleAbilities.ts | 106 | // ── usePromRuleSilenceAbility ───────────────────────────────────────────────── |
| MEDIUM | …ing/unified/hooks/abilities/rules/promRuleAbilities.ts | 125 | // ── usePromRuleExportAbility ────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 24 | // ── Sentinel token ──────────────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 30 | // ── Shared result type ──────────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 66 | // ── Pure ability builders ───────────────────────────────────────────────────── |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 166 | // ── Shared internal hooks ───────────────────────────────────────────────────── |
| MEDIUM | …lerting/unified/hooks/abilities/rules/ruleAbilities.ts | 37 | // ── Grafana-managed rule abilities (global / list level) ────────────────────── |
| MEDIUM | …lerting/unified/hooks/abilities/rules/ruleAbilities.ts | 95 | // ── External datasource rule abilities (global / list level) ────────────────── |
| MEDIUM | …lerting/unified/hooks/abilities/rules/ruleAbilities.ts | 140 | // ── Explore (no rule context needed) ───────────────────────────────────────── |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 20 | // ─── module mocks ───────────────────────────────────────────────────────────── |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 80 | // ─── typed mock references ──────────────────────────────────────────────────── |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 95 | // ─── helpers ───────────────────────────────────────────────────────────────── |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 118 | // ─── setup ──────────────────────────────────────────────────────────────────── |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 146 | // ─── tests ──────────────────────────────────────────────────────────────────── |
| MEDIUM | .github/workflows/pr-test-docker.yml | 38 | # ── Path 1 ──────────────────────────────────────────────────────────────── |
| MEDIUM | .github/workflows/pr-test-docker.yml | 60 | # ── Path 2 ──────────────────────────────────────────────────────────────── |
| MEDIUM | apps/provisioning/pkg/repository/workflows_test.go | 358 | // ─── size-threshold boundary cases ───────────────────────────────────── |
| MEDIUM | apps/provisioning/pkg/repository/workflows_test.go | 422 | // ─── folder-metadata-only deletion cases ─────────────────────────────── |
| MEDIUM | apps/provisioning/pkg/repository/workflows_test.go | 519 | // ─── size check is evaluated before the folder-metadata guard ────────── |
| MEDIUM | pkg/tests/apis/provisioning/common/testing.go | 2567 | // ── Git-server test infrastructure ───────────────────────────────────────── |
| MEDIUM | pkg/tests/apis/provisioning/common/testing.go | 3054 | // ── Export helpers ────────────────────────────────────────────────────────── |
| MEDIUM | …visioning/foldermetadata/fixfoldermetadata_git_test.go | 184 | // ── helpers ──────────────────────────────────────────────────────────────── |
| MEDIUM | …ning/foldermetadata/update_folder_metadata_git_test.go | 187 | // ── helpers ──────────────────────────────────────────────────────────────── |
| 7 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | public/app/plugins/datasource/loki/datasource.ts | 785 | // If it is not a logs query, we need to check if we need to convert it to a logs query |
| LOW | …ugins/annotations2-cluster/useAnnotationClustering.tsx | 85 | // If region annotations are in the cluster we need to check if the end time is later then |
| LOW | public/app/features/alerting/unified/utils/rule-form.ts | 327 | // we need to check if the feature toggle is enabled as it might be disabled after the rule was created with the featu |
| LOW | …rting/unified/components/import-to-gma/ImportToGMA.tsx | 56 | // Step 1: Alertmanager resources |
| LOW | …rting/unified/components/import-to-gma/ImportToGMA.tsx | 69 | // Step 2: Alert rules |
| LOW | …lerting/unified/hooks/usePrometheusConsistencyCheck.ts | 350 | // We need to check if the rule exists first, because most of the times it does, |
| LOW | …blic/app/features/explore/TraceView/createSpanLink.tsx | 690 | // Because we can only pass milliseconds in the url we need to check if they equal. |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 50 | // Step 1: Create clean annotation structure with only annotation-specific fields |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 63 | // Step 2: Use datasource's export/import to normalize saved query |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 104 | // Step 3: Create annotation and apply datasource-specific preparation |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 120 | // Step 4: Handle v1 vs v2 dashboard format after preparation |
| LOW | …/GroupToNestedTableTransformerEditor/EditorV1.test.tsx | 60 | // Step 1: select "Calculate" — onChange fires with operation set, no stats yet |
| LOW | …/GroupToNestedTableTransformerEditor/EditorV1.test.tsx | 69 | // Step 2: simulate the parent re-rendering with the updated options so the StatsPicker appears. |
| LOW | …/GroupToNestedTableTransformerEditor/EditorV1.test.tsx | 81 | // Step 3: open the StatsPicker (MultiCombobox) and pick "Last". |
| LOW | …/GroupToNestedTableTransformerEditor/EditorV1.test.tsx | 91 | // Step 4: onChange is called with the chosen calculation included |
| LOW | scripts/build-msi.sh | 139 | # Step 1: harvest files into grafana.wxs |
| LOW | scripts/build-msi.sh | 149 | # Step 2: compile all .wxs files |
| LOW | scripts/build-msi.sh | 157 | # Step 3: link into MSI |
| LOW | apps/advisor/pkg/app/checks/instancechecks/check.go | 56 | // If running in cloud, we need to check if the version is pinned |
| LOW | apps/advisor/pkg/app/checks/instancechecks/check.go | 65 | // If running in self-managed, we need to check if the version is out of support |
| LOW | …r/pkg/app/checks/instancechecks/out_of_support_step.go | 67 | // In other cases, we need to check if the version is out of support. |
| LOW | apps/dashvalidator/pkg/validator/dashboard.go | 45 | // Step 1: Extract queries from dashboard JSON |
| LOW | apps/dashvalidator/pkg/validator/dashboard.go | 51 | // Step 2: Group queries by datasource UID (with variable resolution for MVP) |
| LOW | apps/dashvalidator/pkg/validator/dashboard.go | 54 | // Step 3: Validate each datasource |
| LOW | apps/dashvalidator/pkg/validator/dashboard.go | 94 | // Step 4: Calculate overall compatibility score |
| LOW | apps/dashvalidator/pkg/app/app.go | 142 | // Step 1: Parse request body |
| LOW | apps/dashvalidator/pkg/app/app.go | 198 | // Step 2: Build validator request |
| LOW | apps/dashvalidator/pkg/app/app.go | 344 | // Step 3: Validate dashboard compatibility |
| LOW | apps/dashvalidator/pkg/app/app.go | 372 | // Step 4: Convert result to response format |
| LOW | apps/dashvalidator/pkg/app/app.go | 375 | // Step 5: Return response |
| LOW | …hboard/pkg/migration/conversion/v2alpha1_to_v1_test.go | 50 | // Step 1: Convert v2alpha1 → v1 |
| LOW | …hboard/pkg/migration/conversion/v2alpha1_to_v1_test.go | 55 | // Step 2: Convert v1 → v2alpha1 (back) |
| LOW | …d/pkg/migration/conversion/v2beta1_to_v2alpha1_test.go | 65 | // Step 1: Convert v2beta1 → v2alpha1 |
| LOW | …d/pkg/migration/conversion/v2beta1_to_v2alpha1_test.go | 77 | // Step 2: Convert v2alpha1 → v2beta1 (back) |
| LOW | …/dashboard/pkg/migration/conversion/conversion_test.go | 122 | // Step 1: Convert source to intermediate (if applicable) |
| LOW | …/dashboard/pkg/migration/conversion/conversion_test.go | 149 | // Step 2: Convert to final target |
| LOW | pkg/tests/apis/helper.go | 1204 | // Step 2: Start with search failures, reusing orgs/users from step 1 |
| LOW | pkg/tests/apis/helper.go | 1236 | // Step 1: Start normally (search working) with DB cleanup disabled |
| LOW | …/tests/apis/provisioning/repository/repository_test.go | 1962 | // Step 1: Create first repository with empty path - syncs successfully |
| LOW | …/tests/apis/provisioning/repository/repository_test.go | 1973 | // Step 2: Create second repository with same URL, branch, and empty path. |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 49 | // Step 1: Create repositories in both organizations with folder sync |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 78 | // Step 2: Sync both repositories and verify success |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 101 | // Step 3: Verify namespace isolation - each org can only see its own resources |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 142 | // Step 4: Verify cross-namespace access is blocked |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 169 | // Step 5: Verify dashboards are also isolated |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 206 | // Step 6: Verify re-sync maintains isolation |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 224 | // Step 7: Verify namespace in files is ignored (security boundary) |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 293 | // Step 8: Verify namespace in files endpoint is also ignored |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 180 | // Step 1: Create a repo with 1 dashboard (2 resources total: 1 root folder + 1 dashboard) |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 197 | // Step 2: Add 2 more dashboard files (would bring total to 4, exceeding limit of 3) |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 209 | // Step 3: Trigger a full sync — the QuotaTracker starts at 2/3 so only 1 more creation is allowed |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 228 | // Step 4: Verify job completed with warning state (some resources were skipped) |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 243 | // Step 5: Verify partial sync — 1 new dashboard was created (total 2), 1 was skipped |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 253 | // Step 6: Verify the repo is now at quota (1 folder + 2 dashboards = 3/3) |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 286 | // Step 2: Add 2 dashboards in new subfolders (each creates a folder + a dashboard). |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 318 | // Step 4: Verify job completed with warning (resources skipped due to quota) |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 337 | // Step 5: Verify no new dashboards were created. One new folder consumes the last quota slot, |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 359 | // Step 6: Verify the repo is now at quota (4 folders + 2 dashboards = 6/6) |
| LOW | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 29 | // Step 1: Create an unmanaged dashboard directly via the API. |
| LOW | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 42 | // Step 2: Create a repo with a file whose metadata.name matches the unmanaged dashboard. |
| 33 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | devenv/local-npm/conf/config.yaml | 3 | # please read carefully the documentation and best practices to |
| MEDIUM | devenv/local-npm/conf/config.yaml | 13 | # Read about the best practices |
| MEDIUM | …/app/plugins/panel/geomap/layers/data/markersLayer.tsx | 129 | // Helper function to create a robust uniqueness key |
| MEDIUM | …blic/app/plugins/panel/geomap/utils/getLayersExtent.ts | 64 | // Look at flatCoordinates for more robust support including route layer |
| MEDIUM | …lic/app/features/provisioning/Wizard/BootstrapStep.tsx | 78 | // TODO: improve error handling base on BE response, leverage "fieldErrors" when available |
| MEDIUM | …lic/app/features/canvas/runtime/sceneAbleManagement.ts | 503 | // but it should be replaced with a more robust solution that doesn't interfere with left click interactions. |
| MEDIUM | …/app/features/scopes/selector/ScopesSelectorService.ts | 214 | // todo: leverage component-level |
| MEDIUM | public/test/jest-resolver.js | 2 | // Call the defaultResolver, so we leverage its cache, error handling, etc. |
| LOW | scripts/ci/backend-tests/shard.sh | 23 | # we can't just return the result of the regex match shellcheck is unhappy... |
| LOW | scripts/ci/backend-tests/shard.sh | 113 | # If there is only one shard, just return all packages. |
| MEDIUM | packages/grafana-runtime/src/utils/qscheck.ts | 4 | oauthPassThru?: unknown; // we do not assume boolean, to be more robust |
| MEDIUM | .github/workflows/pr-build-grafana.yml | 11 | # for meticulous tests |
| MEDIUM | conf/defaults.ini | 231 | # Set to true to skip all database migrations on startup. Should be used in conjunction with "ensure_default_org_and_use |
| MEDIUM | conf/sample.ini | 951 | # Use in conjunction with key_file in case the JWT token's header specifies a key ID in "kid" field |
| MEDIUM | apps/dashvalidator/pkg/validator/dashboard.go | 161 | return false // Definitely v2 |
| MEDIUM | apps/dashboard/pkg/migration/schemaversion/v36.go | 27 | // - Maintains backward compatibility while establishing a robust foundation |
| MEDIUM | pkg/tsdb/loki/api.go | 77 | // b. having it always be number+'ms' makes it more robust and |
| MEDIUM | pkg/registry/apis/dashboard/home/getter_test.go | 295 | // platforms coalesce events, so retrying makes the test robust. |
| MEDIUM | pkg/services/oauthtoken/oauth_token.go | 638 | // In the future, we might want to consider passing the session token ID to the render module to make this more robust |
| MEDIUM | pkg/services/ngalert/accesscontrol/receivers.go | 303 | action: "admin", // Essentially read+write receiver resource permissions. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | …nfigure-notifications/template-notifications/_index.md | 104 | ## Grafana Cloud AI-generated templates |
| HIGH | pkg/services/featuremgmt/toggles_gen.go | 463 | // Enable AI-generated alert rules. |
| HIGH | pkg/services/featuremgmt/toggles_gen.go | 467 | // Enable AI-generated feedback from the Grafana UI. |
| HIGH | pkg/services/featuremgmt/toggles_gen.go | 475 | // Enable AI-generated alerting templates. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | .policy.yml | 1 | # This file is generated by generate-policy-bot-config. |
| MEDIUM | .golangci.yml | 1 | # This file is best edited with some JSON-schema-aware editor. |
| MEDIUM | packaging/docker/build.sh | 108 | # Create the expected tag for running the end to end tests successfully |
| MEDIUM | devenv/docker/blocks/elasticstack/filebeat.yml | 3 | # This file is a full configuration example documenting all non-deprecated |
| MEDIUM | .github/workflows/deploy-storybook-preview.yml | 47 | # Create the GCS folder name for the preview. Creates a consistent name for all deploys for the PR. |
| MEDIUM | .github/workflows/backport-trigger.yml | 29 | # Create a JSON artifact with details of this PR to pass to the backport workflow. |
| MEDIUM | .github/workflows/deploy-storybook.yml | 77 | # Create the GCS folder name |
| MEDIUM | .github/workflows/lint-build-docs.yml | 54 | # Create the directory structure inside the container |
| MEDIUM | .github/workflows/lint-build-docs.yml | 57 | # Create the _index.md file |
| MEDIUM | .citools/install.sh | 23 | # Create a new module if go.mod doesn't exist |
| MEDIUM | pkg/api/http_server_test.go | 145 | * # Create a new Certificate Signing Request (CSR) using the private key passing passphrase '1234567890123456789012345 |
| MEDIUM | pkg/api/http_server_test.go | 212 | * # Create a new Certificate Signing Request (CSR) using the private key passing passphrase '11111222223333344444555556 |
| MEDIUM | pkg/api/http_server_test.go | 277 | * # Create a new Certificate Signing Request (CSR) using the private key |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | devenv/docker/blocks/elasticstack/filebeat.yml | 393 | # you can use different inputs for various configurations. |
| MEDIUM | devenv/docker/blocks/elasticstack/filebeat.yml | 964 | # For example, you can use the following processors to keep the fields that |
| MEDIUM | devenv/docker/blocks/auth/freeipa/ldap_freeipa.toml | 72 | # If you want to match all (or no ldap groups) then you can use wildcard |
| LOW | …ified/components/contact-points/ContactPoints.test.tsx | 392 | // ⚠️ for some reason, the query params are preserved for all tests so don't forget to clear the input |
| LOW | scripts/tag_release.sh | 21 | # always make sure to pull latest changes from origin |
| MEDIUM | conf/ldap.toml | 73 | # If you want to match all (or no ldap groups) then you can use wildcard |
| MEDIUM | apps/dashboard/pkg/apis/dashboard_manifest.go | 40 | rawSchemaDashboardv2 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" |
| MEDIUM | apps/dashboard/pkg/apis/dashboard_manifest.go | 43 | rawSchemaDashboardv2alpha1 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" |
| MEDIUM | apps/dashboard/pkg/apis/dashboard_manifest.go | 46 | rawSchemaDashboardv2beta1 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" |
| MEDIUM | pkg/components/dashdiffs/formatter_basic.go | 244 | // level key in the JSON document. As mentioned earlier, we treat these |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | conf/defaults.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel |
| HIGH | conf/defaults.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel |
| HIGH | conf/sample.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel |
| HIGH | conf/sample.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …app/api/clients/scope/v0alpha1/sync-from-enterprise.sh | 25 | # Check if OpenAPI spec exists |
| LOW | scripts/check-frontend-dev.sh | 17 | # Check if .nvmrc file exists |
| LOW | scripts/releasefinder.sh | 22 | # Check if script is executable |
| LOW | scripts/releasefinder.sh | 30 | # Check if a commit hash was provided |
| LOW | .github/workflows/changelog.yml | 131 | # Check if a version exists in the changelog |
| LOW | .github/workflows/release-pr.yml | 166 | # Check if a version exists in the changelog |
| LOW | .github/workflows/deploy-storybook-preview.yml | 59 | # Check if SANITIZED_BRANCH is empty and fail if it is |
| LOW | .github/workflows/detect-breaking-changes-levitate.yml | 218 | # Check if label exists |
| LOW | .github/workflows/backend-code-checks.yml | 100 | # Check if the generated specs differ from what's in the repository |
| LOW | …b/workflows/scripts/levitate/check-breaking-changes.sh | 55 | # Check if the comparison returned with a non-zero exit code |
| LOW | …ripts/create-security-branch/create-security-branch.sh | 8 | # Check if branch already exists |
| LOW | .github/actions/check-jobs/action.yml | 39 | # Check if there are any failures |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | …s/sources/datasources/elasticsearch/configure/index.md | 91 | 1. Set **Value** to `ApiKey <your-api-key>`, replacing `<your-api-key>` with your base64-encoded Elasticsearch API key. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | …/app/plugins/datasource/azuremonitor/variables.test.ts | 255 | it('should return None when there is no data', async () => { |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | …hub/workflows/scripts/test-endpoint-migration-check.sh | 8 | # Usage: |
| LOW | pkg/util/debouncer/debouncer.go | 125 | // Example usage: |
| LOW | pkg/storage/unified/sql/db/service.go | 103 | // Example usage: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | packages/grafana-ui/src/components/Table/utils.test.ts | 19 | function getData() { |