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.
This report summarizes scanner evidence for grafana/grafana, a TypeScript project with 77,589 GitHub stars. SynthScan examined 5,091,589 lines of code across 20668 source files, recording 7200 pattern matches distributed across 23 syntactic categories. The legacy adjusted pattern signal is 1.6 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 3800 finding(s).
Are imports declared and package/API names verified? 3326 finding(s).
Are wrappers, guards, and repeated structures necessary? 2117 finding(s).
Which changes need focused human review? 7200 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 7200 distinct pattern matches across 23 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | jest.config.codeowner.js | 145 | function writeCoverageSummaryArtifact(coverageResults) { | CODE |
| LOW | eslint.config.js | 96 | function withBaseRestrictedImportsConfig(config = {}) { | CODE |
| LOW | devenv/docker/blocks/elastic/data/data.js | 58 | async function elasticSetupIndexTemplate() { | CODE |
| LOW | devenv/docker/blocks/elastic/data/data.js | 159 | function getNextSineWaveSleepDuration() { | CODE |
| LOW | …right/various-suite/prometheus-variable-editor.spec.ts | 51 | async function addPrometheusQueryVariable( | CODE |
| LOW | …right/various-suite/prometheus-variable-editor.spec.ts | 73 | async function variableFlowToQueryEditor( | CODE |
| LOW | e2e-playwright/various-suite/recent-queries.spec.ts | 26 | async function runQueryAndWaitForResults( | CODE |
| LOW | …test-plugins/grafana-extensionstest-app/tests/utils.ts | 5 | export async function ensureExtensionRegistryIsPopulated(page: Page) { | CODE |
| LOW | …laywright/test-plugins/grafana-test-app/tests/utils.ts | 40 | export async function assertEnableDisableRoundtrip(page: Page, pluginId: string, expected: WritePath): Promise<void> { | CODE |
| LOW | …aywright/dashboards-suite/dashboard-view-panel.spec.ts | 113 | async function openTestDashboardAndEnterViewPanel( | CODE |
| LOW | …dashboards-suite/dashboard-restore-permissions.spec.ts | 23 | async function restoreFromRecentlyDeleted(page: Page, selectors: E2ESelectorGroups, dashName: string) { | CODE |
| LOW | e2e-playwright/dashboards-suite/utils/makeDashboard.ts | 1 | export function makeNewDashboardRequestBody(dashboardName: string, folderUid?: string) { | CODE |
| LOW | …ywright/panels-suite/panelEdit_queryEditorNext.spec.ts | 24 | function addQueryOrExpressionButton(page: Page) { | CODE |
| LOW | e2e-playwright/panels-suite/geomap-layer-types.spec.ts | 12 | async function setupGeomapWithAirportsGeoJSON({ gotoDashboardPage, selectors, page }: SetupFixtures) { | CODE |
| LOW | …ywright/panels-suite/panelEdit_transformsSmoke.spec.ts | 70 | async function assertTransformationPickerDisabled( | CODE |
| LOW | …-playwright/dashboard-cujs/dashboard-navigation-cuj.ts | 36 | export function runDashboardNavigationCujs({ megaMenu }: { megaMenu: boolean }) { | CODE |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 40 | export function getAdHocFilterOptionValues(page: Page) { | CODE |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 44 | export function getAdHocFilterRestoreButton(page: Page, type: string) { | CODE |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 79 | export async function clickFirstScopesDashboard(page: Page) { | CODE |
| LOW | e2e-playwright/dashboard-cujs/cuj-selectors.ts | 87 | export function getScopesDashboardsSearchInput(page: Page) { | CODE |
| LOW | e2e-playwright/dashboard-cujs/utils.ts | 75 | export async function trackDashboardReloadRequests(page: Page): Promise<{ | CODE |
| LOW | e2e-playwright/dashboard-cujs/utils.ts | 123 | export function checkDashboardReloadBehavior(requests: DashboardRequest[]): boolean { | CODE |
| LOW | e2e-playwright/plugin-catalog-suite/tests/utils.ts | 68 | export async function assertInstallUninstallRoundtrip(page: Page, pluginId: string, mt: boolean): Promise<void> { | CODE |
| LOW | …ywright/diagnostics-suite/download-diagnostics.spec.ts | 81 | function buildDashboardRequestBody(title: string, successDsUid: string, failureDsUid: string) { | CODE |
| LOW | …e-playwright/cloud-plugins-suite/azure-monitor.spec.ts | 36 | async function provisionAzureMonitorDatasources( | CODE |
| LOW | e2e-playwright/dashboard-new-layouts/fixtures.ts | 26 | function buildGetByGrafanaSelector( | CODE |
| LOW | …ard-new-layouts/dashboards-repeats-custom-grid.spec.ts | 400 | async function expectRepeatedPanelsStackedVertically( | CODE |
| LOW | …ard-new-layouts/dashboards-repeats-custom-grid.spec.ts | 421 | async function expectRepeatedPanelsWrappedHorizontally( | CODE |
| LOW | …laywright/dashboard-new-layouts/dashboard-rows.spec.ts | 255 | async function expectRowHeaderToBeMarkedAsHidden(title: Locator) { | CODE |
| LOW | …laywright/dashboard-new-layouts/dashboard-rows.spec.ts | 265 | async function expectCopyLinkToBeVisible(copyLink: Locator) { | CODE |
| LOW | …ht/dashboard-new-layouts/dashboard-url-syncing.spec.ts | 14 | function buildDashboardPathWithSearch(dashboardUid: string, searchParams: Record<string, string>): string { | CODE |
| LOW | …board-new-layouts/dashboards-repeats-snapshots.spec.ts | 15 | async function expectRepeatPanelsRendered(panels: Panels, expectedCount: number) { | CODE |
| LOW | …dashboard-new-layouts/dashboards-panel-layouts.spec.ts | 319 | async function checkAutoGridLayoutInputs(gridLayoutOptions: GridLayoutOptions) { | CODE |
| LOW | …dashboard-new-layouts/dashboards-panel-layouts.spec.ts | 328 | async function verifyPanelsStackedVertically(panels: Panels, expectedCount = 3) { | CODE |
| LOW | …ashboard-new-layouts/dashboard-section-actions.spec.ts | 331 | async function prepareDashboardWithSection( | CODE |
| LOW | …g/dashboards-conditional-rendering-load-change.spec.ts | 286 | async function failTestDataRequestForOption(page: Page, option: string) { | CODE |
| LOW | …right/dashboard-new-layouts/variables/helpers/flows.ts | 13 | export async function importVariableTestDashboard( | CODE |
| LOW | …/dashboard-new-layouts/variables/helpers/assertions.ts | 5 | export async function expectVariableOptionsToBe(page: Page, controls: Controls, label: string, options: string[]) { | CODE |
| LOW | …/dashboard-new-layouts/variables/helpers/assertions.ts | 13 | export async function expectPreviewOfValuesToBe(previewOptions: Locator, labels: string[]) { | CODE |
| LOW | e2e-playwright/dashboard-new-layouts/helpers/flows.ts | 244 | function stripMetadataNameFromImportJson(input: string): string { | CODE |
| LOW | …playwright/dashboard-new-layouts/helpers/assertions.ts | 22 | export async function expectRepeatedPanelTitlesToBe( | CODE |
| LOW | …playwright/dashboard-new-layouts/helpers/assertions.ts | 39 | export async function expectRepeatedRowTitlesToBe( | CODE |
| LOW | …playwright/dashboard-new-layouts/helpers/assertions.ts | 56 | export async function expectRepeatedTabTitlesToBe( | CODE |
| LOW | …playwright/dashboard-new-layouts/helpers/assertions.ts | 123 | export async function expectDashboardChangesToContain( | CODE |
| LOW | public/app/legacyAPIHandling.ts | 5 | export function patchFetchForLegacyAPIMode() { | CODE |
| LOW | public/app/types/unified-alerting-dto.ts | 51 | export function mapStateWithReasonToReason(state: GrafanaAlertStateWithReason): string { | CODE |
| LOW | public/app/types/unified-alerting-dto.ts | 62 | export function mapStateWithReasonToBaseState( | CODE |
| LOW | public/app/core/assistant/buildAssistantPanelContext.ts | 9 | export function buildAssistantPanelContext({ | CODE |
| LOW | public/app/core/assistant/assistantSidebarState.ts | 35 | export function getAssistantChatIdToContinue(): string | undefined { | CODE |
| LOW | public/app/core/context/GrafanaContext.ts | 32 | export function useReturnToPreviousInternal() { | CODE |
| LOW | public/app/core/navigation/mtFallback.test.ts | 19 | function renderUseIsMtFallbackConfigured() { | CODE |
| LOW | public/app/core/utils/richHistory.ts | 131 | export async function updateRichHistorySettings(settings: RichHistorySettings): Promise<void> { | CODE |
| LOW | public/app/core/utils/richHistory.ts | 143 | export async function updateStarredInRichHistory(id: string, starred: boolean) { | CODE |
| LOW | public/app/core/utils/richHistory.ts | 161 | export async function updateCommentInRichHistory(id: string, newComment: string | undefined) { | CODE |
| LOW | public/app/core/utils/errors.ts | 64 | export function getRequestConfigFromError(err: FetchError): string { | CODE |
| LOW | public/app/core/utils/browser.ts | 5 | export function checkBrowserCompatibility() { | CODE |
| LOW | public/app/core/utils/object.ts | 12 | export function sortedDeepCloneWithoutNulls(value: unknown, convertInfinity?: boolean, stripBOMs?: boolean): unknown { | CODE |
| LOW | public/app/core/utils/metrics.ts | 43 | export function reportMetricPerformanceMark(metricName: string, prefix = '', suffix = ''): void { | CODE |
| LOW | public/app/core/crash/crash.utils.ts | 13 | function isChromePerformanceMemory(memory: unknown): memory is ChromePerformanceMemory { | CODE |
| LOW | public/app/core/navtree/buildNavTree.ts | 91 | function applyRegisteredNavEntries(tree: NavModelItem[]): NavModelItem[] { | CODE |
| 1983 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | devenv/docker/blocks/influxdb1/docker-compose.yaml | 16 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/postgres/docker-compose.yaml | 17 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/mysql/docker-compose.yaml | 21 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/opentsdb/docker-compose.yaml | 7 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/prometheus/docker-compose.yaml | 23 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/prometheus/prometheus.yml | 32 | - job_name: 'fake-data-gen' | CODE |
| LOW | devenv/docker/blocks/mssql_tls/docker-compose.yaml | 15 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/graphite1/docker-compose.yaml | 9 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/graphite/docker-compose.yaml | 9 | image: grafana/fake-data-gen | CODE |
| LOW | devenv/docker/blocks/mssql/docker-compose.yaml | 15 | image: grafana/fake-data-gen | CODE |
| LOW | …nv/dev-dashboards/datasource-mssql/mssql_fakedata.json | 76 | "description": "A dashboard visualizing data generated from grafana/fake-data-gen", | CODE |
| LOW | …nv/dev-dashboards/datasource-mysql/mysql_fakedata.json | 74 | "description": "A dashboard visualizing data generated from grafana/fake-data-gen", | CODE |
| LOW | …v-dashboards/panel-table/table-auto-column-widths.json | 400 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana. | CODE |
| LOW | …v-dashboards/panel-table/table-auto-column-widths.json | 400 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana. | CODE |
| LOW | devenv/dev-dashboards/panel-table/table_nested.json | 69 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana. | CODE |
| LOW | devenv/dev-dashboards/panel-table/table_nested.json | 69 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana. | CODE |
| LOW | …env/dev-dashboards/panel-table/table_kitchen_sink.json | 69 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana. | CODE |
| LOW | …env/dev-dashboards/panel-table/table_kitchen_sink.json | 69 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text,Styling\ndown,https://grafana. | CODE |
| LOW | …env/dev-dashboards/panel-table/table_kitchen_sink.json | 964 | "csvContent": "Info,Long Text\ndown,\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. S | CODE |
| LOW | …env/dev-dashboards/panel-table/table_kitchen_sink.json | 964 | "csvContent": "Info,Long Text\ndown,\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. S | CODE |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 69 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/medi | CODE |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 69 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/medi | CODE |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 619 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/medi | CODE |
| LOW | …dev-dashboards/panel-table/table_v12_2_migrations.json | 619 | "csvContent": "Info,Image,Image w/ Link,Pills,Data Link,Long Text\ndown,https://grafana.com/medi | CODE |
| LOW | …-dashboards/datasource-postgres/postgres_fakedata.json | 74 | "description": "A dashboard visualizing data generated from grafana/fake-data-gen", | CODE |
| LOW | …tasource/locales/es-ES/grafana-e2etest-datasource.json | 5 | "placeholder": "Ingrese su clave de API", | CODE |
| LOW | …tasource/locales/es-ES/grafana-e2etest-datasource.json | 16 | "placeholder": "Ingrese la ruta, p. ej. /api/v1", | CODE |
| LOW | …tasource/locales/sv-SE/grafana-e2etest-datasource.json | 5 | "placeholder": "Ange din API-nyckel", | CODE |
| LOW | …tasource/locales/sv-SE/grafana-e2etest-datasource.json | 16 | "placeholder": "Ange sökvägen, t.ex. /api/v1", | CODE |
| LOW | …tasource/locales/en-US/grafana-e2etest-datasource.json | 5 | "placeholder": "Enter your API key", | CODE |
| LOW | …tasource/locales/en-US/grafana-e2etest-datasource.json | 16 | "placeholder": "Enter the path, e.g. /api/v1", | CODE |
| LOW | …playwright/dashboards-suite/new-query-variable.spec.ts | 39 | await expect(nameInput).toHaveAttribute('placeholder', 'Variable name'); | CODE |
| LOW | …playwright/dashboards-suite/new-query-variable.spec.ts | 53 | await expect(labelInput).toHaveAttribute('placeholder', 'Label name'); | CODE |
| LOW | …playwright/dashboards-suite/new-query-variable.spec.ts | 58 | await expect(descriptionInput).toHaveAttribute('placeholder', 'Descriptive text'); | CODE |
| LOW | …playwright/dashboards-suite/new-query-variable.spec.ts | 74 | await expect(datasourceSelect).toHaveAttribute('placeholder', 'gdev-testdata'); | CODE |
| LOW | …playwright/dashboards-suite/new-query-variable.spec.ts | 83 | await expect(regexInput).toHaveAttribute('placeholder', '/.*-(?<text>.*)-(?<value>.*)-.*/'); | CODE |
| LOW | e2e-playwright/panels-suite/table-nested.spec.ts | 234 | // toggle the lorem ipsum column's wrap text toggle and confirm that the height shrinks. | COMMENT |
| LOW | …ywright/panels-suite/table-adhoc-range-filters.spec.ts | 138 | await expect(popup.getByRole('checkbox', { name: /Lorem ipsum dolor sit amet/ })).toBeVisible(); | CODE |
| LOW | …ywright/panels-suite/table-adhoc-range-filters.spec.ts | 138 | await expect(popup.getByRole('checkbox', { name: /Lorem ipsum dolor sit amet/ })).toBeVisible(); | CODE |
| LOW | …ywright/panels-suite/table-adhoc-range-filters.spec.ts | 153 | 'placeholder', | CODE |
| LOW | …ywright/panels-suite/table-adhoc-range-filters.spec.ts | 157 | 'placeholder', | CODE |
| 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. | COMMENT |
| LOW | …-layouts/variables/dashboards-filter-variables.spec.ts | 71 | 'placeholder', | CODE |
| LOW | …new-layouts/variables/dashboards-variable-type.spec.ts | 75 | await expect(variableOptions.query.getTargetDatasourceInput()).toHaveAttribute('placeholder', 'gdev-testdata'); | CODE |
| LOW | …w-layouts/variables/dashboards-adhoc-variables.spec.ts | 60 | await expect(sidebar.variableOptions.adhoc.getDatasourceInput()).toHaveAttribute('placeholder', dataSource); | CODE |
| LOW | …w-layouts/variables/dashboards-query-variables.spec.ts | 96 | 'placeholder', | CODE |
| LOW | …ion-alerting-resources/terraform-provisioning/index.md | 232 | Lorem ipsum - Custom alert! | CODE |
| LOW | …configure-access/configure-authentication/jwt/index.md | 78 | "name": "John Doe", | CODE |
| LOW | …ns/access-control/rbac-terraform-provisioning/index.md | 162 | admins = ["admin@example.com"] | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 6065 | "placeholder": "Değerler seçin" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 6074 | "placeholder": "Ara..." | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 6080 | "placeholder": "Değer seçin" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 12109 | "placeholder": "örnek: 127.0.0.1" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 12119 | "placeholder": "örnek: cn=%s" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 12125 | "placeholder": "örnek: dc=grafana,dc=org" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 18498 | "placeholder": "Değer seçin" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 18501 | "placeholder": "Değişken değeri girin" | CODE |
| LOW⚡ | public/locales/tr-TR/grafana.json | 18510 | "placeholder": "Değişken değeri girin" | CODE |
| LOW | public/locales/tr-TR/grafana.json | 1511 | "placeholder": "", | CODE |
| LOW | public/locales/tr-TR/grafana.json | 2558 | "placeholder": "Grup etiketi değerlerine göre filtrele" | CODE |
| 3114 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …-playwright/dashboards-suite/textbox-variables.spec.ts | 56 | const textPanel = page.locator(selectors.components.Panels.Visualization.Text.container('')); | CODE |
| CRITICAL | e2e-playwright/notebooks-suite/notebook-crud.spec.ts | 104 | const row = page.getByTestId(selectors.pages.Notebooks.List.table.row(notebookUid!)); | CODE |
| CRITICAL | e2e-playwright/notebooks-suite/notebook-crud.spec.ts | 107 | const rowMenuButton = page.getByTestId(selectors.pages.Notebooks.List.table.rowMenuButton(notebookUid!)); | CODE |
| CRITICAL | …playwright/notebooks-suite/notebooks-list-page.spec.ts | 69 | const rowA = page.getByTestId(selectors.pages.Notebooks.List.table.row(uidA)); | CODE |
| CRITICAL | …playwright/notebooks-suite/notebooks-list-page.spec.ts | 70 | const rowB = page.getByTestId(selectors.pages.Notebooks.List.table.row(uidB)); | CODE |
| CRITICAL | …playwright/notebooks-suite/notebooks-list-page.spec.ts | 122 | const row = page.getByTestId(selectors.pages.Notebooks.List.table.row(uid)); | CODE |
| CRITICAL | …playwright/notebooks-suite/notebooks-list-page.spec.ts | 125 | const rowMenuButton = page.getByTestId(selectors.pages.Notebooks.List.table.rowMenuButton(uid)); | CODE |
| CRITICAL | …laywright/dashboard-new-layouts/page-objects/Panels.ts | 21 | return (scope ?? this.page).getByTestId(this.selectors.components.Panels.Panel.title(panelTitle)); | CODE |
| CRITICAL⚡ | …laywright/dashboard-new-layouts/page-objects/Panels.ts | 115 | await this.getByGrafanaSelector(this.selectors.components.Panels.Panel.menu(panelTitle)).click({ force: true }); | CODE |
| CRITICAL⚡ | …laywright/dashboard-new-layouts/page-objects/Panels.ts | 118 | await this.getByGrafanaSelector(this.selectors.components.Panels.Panel.menuItems(item)).hover(); | CODE |
| CRITICAL⚡ | …laywright/dashboard-new-layouts/page-objects/Panels.ts | 121 | await this.getByGrafanaSelector(this.selectors.components.Panels.Panel.menuItems(menuPath.at(-1)!)).click(); | CODE |
| CRITICAL | …ywright/dashboard-new-layouts/page-objects/Controls.ts | 128 | this.getByGrafanaSelector(this.selectors.pages.Dashboard.SubMenu.submenuItemLabels(variableLabel)), | CODE |
| CRITICAL | …rd-new-layouts/page-objects/sidebar/VariableOptions.ts | 17 | this.selectors.components.PanelEditor.ElementEditPane.variableType(variableType) | CODE |
| CRITICAL | …rd-new-layouts/page-objects/sidebar/VariableOptions.ts | 192 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel(`selection-options-category ${title}`), | CODE |
| CRITICAL | …rd-new-layouts/page-objects/sidebar/VariableOptions.ts | 334 | this.getByGrafanaSelector(this.selectors.components.PanelEditor.OptionsPane.fieldLabel('variable-type Refresh'), { | CODE |
| CRITICAL | …rd-new-layouts/page-objects/sidebar/VariableOptions.ts | 415 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('variable-type Value') | CODE |
| CRITICAL | …rd-new-layouts/page-objects/sidebar/VariableOptions.ts | 432 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('variable-type Value') | CODE |
| CRITICAL | …shboard-new-layouts/page-objects/sidebar/RowOptions.ts | 30 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('dash-row-edit Fill screen') | CODE |
| CRITICAL | …board-new-layouts/page-objects/sidebar/PanelOptions.ts | 24 | return this.getByGrafanaSelector(this.selectors.components.PanelEditor.OptionsPane.fieldInput('Title')); | CODE |
| CRITICAL | …board-new-layouts/page-objects/sidebar/PanelOptions.ts | 39 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('Panel options Description') | CODE |
| CRITICAL | …board-new-layouts/page-objects/sidebar/PanelOptions.ts | 44 | return this.getByGrafanaSelector(this.selectors.components.PanelEditor.OptionsPane.fieldLabel('subtitle-switch')); | CODE |
| CRITICAL | …ard-new-layouts/page-objects/sidebar/ContentOutline.ts | 18 | return this.getByGrafanaSelector(this.selectors.components.PanelEditor.Outline.item(displayedName)); | CODE |
| CRITICAL | …ard-new-layouts/page-objects/sidebar/ContentOutline.ts | 34 | await this.getByGrafanaSelector(this.selectors.components.PanelEditor.Outline.node(itemName)).click(); | CODE |
| CRITICAL | …d-new-layouts/page-objects/sidebar/DashboardOptions.ts | 31 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('dashboard-options Title') | CODE |
| CRITICAL | …d-new-layouts/page-objects/sidebar/DashboardOptions.ts | 38 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel('dashboard-options Description') | CODE |
| CRITICAL | …w-layouts/page-objects/sidebar/shared/RepeatOptions.ts | 45 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel(`${this.groupId} Repeat direction`) | CODE |
| CRITICAL | …w-layouts/page-objects/sidebar/shared/RepeatOptions.ts | 55 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel(`${this.groupId} Max per row`) | CODE |
| CRITICAL | …w-layouts/page-objects/sidebar/shared/RepeatOptions.ts | 93 | this.selectors.components.PanelEditor.OptionsPane.fieldLabel(`${this.groupId} Repeat by variable`) | CODE |
| CRITICAL | …-objects/sidebar/shared/ConditionalRenderingOptions.ts | 46 | return this.getByGrafanaSelector(this.selectors.pages.Dashboard.Sidebar.conditionalRendering.rule(ruleId)); | CODE |
| CRITICAL | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 101 | await user.click(ELEMENTS.actions.more.actions.silence.get()); | CODE |
| CRITICAL⚡ | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 551 | expect(ELEMENTS.actions.more.pluginActions.sloDashboard.get()).toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 552 | expect(ELEMENTS.actions.more.pluginActions.assertsWorkbench.query()).not.toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 554 | await waitFor(() => expect(ELEMENTS.actions.more.pluginActions.declareIncident.get()).toBeEnabled()); | CODE |
| CRITICAL⚡ | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 570 | expect(ELEMENTS.actions.more.pluginActions.assertsWorkbench.get()).toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 571 | expect(ELEMENTS.actions.more.pluginActions.sloDashboard.query()).not.toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …ing/unified/components/rule-viewer/RuleViewer.test.tsx | 573 | await waitFor(() => expect(ELEMENTS.actions.more.pluginActions.declareIncident.get()).toBeEnabled()); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 145 | expect(ui.settings.googlechat.title.input.get()).toHaveValue('Alert Title'); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 146 | expect(ui.settings.googlechat.message.input.get()).toHaveValue('Alert Message'); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 153 | expect(ui.settings.webhook.title.container.get()).toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 154 | expect(ui.settings.webhook.message.container.get()).toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 157 | expect(ui.settings.webhook.message.input.query()).not.toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 158 | expect(ui.settings.webhook.title.input.query()).not.toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 176 | expect(ui.settings.webhook.title.input.get()).toHaveValue('Webhook Title'); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 177 | expect(ui.settings.webhook.message.input.get()).toHaveValue('Webhook Message'); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 184 | expect(ui.settings.googlechat.title.container.get()).toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 185 | expect(ui.settings.googlechat.message.container.get()).toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 188 | expect(ui.settings.googlechat.message.input.query()).not.toBeInTheDocument(); | CODE |
| CRITICAL⚡ | …fied/components/receivers/form/ChannelSubForm.test.tsx | 189 | expect(ui.settings.googlechat.title.input.query()).not.toBeInTheDocument(); | CODE |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 209 | expect(ui.settings.googlechat.title.input.get()).toHaveValue('Original Title'); | CODE |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 210 | expect(ui.settings.googlechat.message.input.get()).toHaveValue('Original Message'); | CODE |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 225 | expect(ui.settings.googlechat.title.input.get()).toHaveValue('Original Title'); | CODE |
| CRITICAL | …fied/components/receivers/form/ChannelSubForm.test.tsx | 226 | expect(ui.settings.googlechat.message.input.get()).toHaveValue('Original Message'); | CODE |
| CRITICAL⚡ | …components/receivers/form/GrafanaReceiverForm.test.tsx | 540 | const oauth2Container = await ui.webhook.httpConfig.oauth2.container.find(); | CODE |
| CRITICAL⚡ | …components/receivers/form/GrafanaReceiverForm.test.tsx | 541 | const clientSecretField = ui.webhook.httpConfig.oauth2.clientSecret.get(oauth2Container); | CODE |
| CRITICAL⚡ | …components/receivers/form/GrafanaReceiverForm.test.tsx | 542 | const oauthCaCertField = ui.webhook.httpConfig.oauth2.tls_config.caCertificate.get(oauth2Container); | CODE |
| CRITICAL⚡ | …components/receivers/form/GrafanaReceiverForm.test.tsx | 543 | const oauthClientCertField = ui.webhook.httpConfig.oauth2.tls_config.clientCert.get(oauth2Container); | CODE |
| CRITICAL⚡ | …components/receivers/form/GrafanaReceiverForm.test.tsx | 544 | const oauthClientKeyField = ui.webhook.httpConfig.oauth2.tls_config.clientKey.get(oauth2Container); | CODE |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 617 | expect(await ui.webhook.httpConfig.oauth2.tls_config.container.find()).toBeInTheDocument(); | CODE |
| CRITICAL | …components/receivers/form/GrafanaReceiverForm.test.tsx | 618 | await user.click(await ui.webhook.httpConfig.oauth2.tls_config.deleteButton.find()); | CODE |
| CRITICAL | public/app/features/canvas/runtime/scene.tsx | 379 | this.tooltipPayload.element.options.actions.filter( | CODE |
| 89 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | relyance.yaml | 1 | # Relyance Compliance Inspector Configuration | COMMENT |
| LOW | eslint.config.js | 721 | // '@grafana/no-plugin-external-import-paths': 'error', | COMMENT |
| LOW | devenv/docker/blocks/loki/loki-config.yaml | 41 | # By default, Loki will send anonymous, but uniquely-identifiable usage and configuration | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1 | ######################## Filebeat Configuration ############################ | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 21 | # Filebeat will choose the paths depending on your OS. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 41 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 61 | #error: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 81 | # Input configuration (advanced). Any input configuration option | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 101 | # Filebeat will choose the paths depending on your OS. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 141 | # Set custom paths for the log files. If left empty, | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 161 | #enabled: true | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 181 | #input: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 201 | # Set custom paths for the log files. If left empty, | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 221 | #var.paths: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 241 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 261 | #var.paths: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 281 | # Slow logs | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 301 | #var.paths: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 321 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 341 | # Logs | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 361 | #var.paths: ["/var/log/redis/redis-server.log*"] | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 381 | #var.paths: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 441 | #- type: log | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 461 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 481 | # review: 1 | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 501 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 521 | # If you enable this setting, the keys are copied top level in the output document. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 541 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 561 | # this can mean that the first entries of a new file are skipped. | COMMENT |
| 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 | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 601 | # Close renamed closes a file handler when the file is renamed or rotated. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 621 | # Removes the state for file which cannot be found on disk anymore immediately | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 641 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 661 | # Experimental: Config options for the udp input | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 681 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 701 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 721 | # The host and port to receive the new event | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 741 | # The number of seconds of inactivity before a remote connection is closed. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 761 | # Optional passphrase for decrypting the Certificate Key. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 781 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 801 | # - type: log | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 821 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 841 | #reload.enabled: true | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 861 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 881 | # to be sent to the outputs. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 901 | # will have no more effect. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 921 | # - The buffer limit has been reached. | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 941 | # Reader flush timeout, waiting for more events to become available, so | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 961 | # The supported processors are drop_fields, drop_event, include_fields, | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 981 | # | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1001 | # | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1021 | # match_source_index: 4 | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1041 | #- add_host_metadata: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1061 | # overwrite_keys: false | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1081 | output.elasticsearch: | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1101 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1121 | #pipeline: "" | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1141 | COMMENT | |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1161 | # susceptible to man-in-the-middle attacks. Use only for testing. Default is | COMMENT |
| LOW | devenv/docker/blocks/elasticstack/filebeat.yml | 1181 | # Configure cipher suites to be used for SSL connections | COMMENT |
| 1391 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 171 | // Step 1: navigate_folder (clicking the folder) | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 175 | // Step 2: select_resource (clicking the dashboard) | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 186 | // Step 1: Navigate into folder A | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 193 | // Step 2: Navigate into folder B (nested inside A) | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 200 | // Step 3: Click the dashboard inside folder B | COMMENT |
| LOW | hack/openapi-codegen.sh | 6 | ## NOTE: The following is a fork of the original gen_openapi helper in k8s.io/code-generator | COMMENT |
| LOW | docs/sources/datasources/graphite/annotations/index.md | 225 | ### Step 1: Record a deployment event | COMMENT |
| LOW⚡ | docs/sources/datasources/graphite/annotations/index.md | 241 | ### Step 2: Build the latency panel | COMMENT |
| LOW⚡ | docs/sources/datasources/graphite/annotations/index.md | 248 | ### Step 3: Add the deployment annotation query | COMMENT |
| LOW⚡ | docs/sources/datasources/graphite/annotations/index.md | 257 | ### Step 4: Interpret the result | COMMENT |
| LOW | docs/sources/as-code/terraform/terraform-cloud-stack.md | 46 | // Step 1: Create a stack | COMMENT |
| LOW | docs/sources/as-code/terraform/terraform-cloud-stack.md | 62 | // Step 2: Create a service account and key for the stack | COMMENT |
| LOW | docs/sources/as-code/terraform/terraform-cloud-stack.md | 80 | // Step 3: Create resources within the stack | COMMENT |
| LOW | …s/as-code/git-sync/add-resources/dashboards-migrate.md | 73 | ## Step 1: Export the resources to your repository | COMMENT |
| LOW | …s/as-code/git-sync/add-resources/dashboards-migrate.md | 141 | ## Step 2: Delete the original dashboards | COMMENT |
| LOW | …s/as-code/git-sync/add-resources/dashboards-migrate.md | 155 | ## Step 3: Validate the migration | COMMENT |
| LOW | …cation/saml/configure-saml-team-role-mapping/_index.md | 116 | ### Step 1: Configure Okta to send groups | COMMENT |
| LOW | …cation/saml/configure-saml-team-role-mapping/_index.md | 137 | ### Step 2: Configure Grafana to map groups to roles | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt6/index.md | 147 | ## Step 1: Create a visualization to monitor metrics | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt6/index.md | 194 | ## Step 2: Create alert rules | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt6/index.md | 265 | ## Step 3: Visualizing metrics and alert annotations | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt6/index.md | 274 | ## Step 4: Receiving notifications | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt5/index.md | 171 | ## Step 1: Create Notification Policies | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt5/index.md | 208 | ## Step 2: Create alert rules to monitor CPU and memory usage | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt5/index.md | 288 | ## Step 3: Create a second alert rule for memory usage | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt4/index.md | 210 | ## Step 1: Template labels and annotations | COMMENT |
| LOW | …cs/sources/tutorials/alerting-get-started-pt4/index.md | 298 | ## Step 2: Template notifications | COMMENT |
| LOW | docs/sources/tutorials/iis/index.md | 82 | ### Step 1: Forward Proxy | COMMENT |
| LOW | docs/sources/tutorials/iis/index.md | 92 | ### Step 2: URL Rewriting | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 326 | ### Step 0: Decide whether you need a journey | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 336 | ### Step 1: Plan the journey shape | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 351 | ### Step 2: Identify or add the interactions you'll listen on | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 364 | ### Step 3: Register metadata | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 394 | ### Step 4: Create the wiring file | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 454 | ### Step 5: Import at bootstrap | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 474 | ### Step 6: Write tests | COMMENT |
| LOW | public/app/core/journeys/journey-tracking.md | 487 | ### Step 7: Verify locally | COMMENT |
| LOW | …rting/unified/components/import-to-gma/ImportToGMA.tsx | 82 | // Step 1: Alertmanager resources | COMMENT |
| LOW | …rting/unified/components/import-to-gma/ImportToGMA.tsx | 98 | // Step 2: Alert rules | COMMENT |
| LOW⚡ | …blic/app/features/annotations/utils/savedQueryUtils.ts | 50 | // Step 1: Create clean annotation structure with only annotation-specific fields | COMMENT |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 63 | // Step 2: Use datasource's export/import to normalize saved query | COMMENT |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 104 | // Step 3: Create annotation and apply datasource-specific preparation | COMMENT |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 120 | // Step 4: Handle v1 vs v2 dashboard format after preparation | COMMENT |
| LOW⚡ | scripts/build-msi.sh | 139 | # Step 1: harvest files into grafana.wxs | COMMENT |
| LOW⚡ | scripts/build-msi.sh | 149 | # Step 2: compile all .wxs files | COMMENT |
| LOW⚡ | scripts/build-msi.sh | 157 | # Step 3: link into MSI | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/validator/dashboard.go | 45 | // Step 1: Extract queries from dashboard JSON | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/validator/dashboard.go | 51 | // Step 2: Group queries by datasource UID (with variable resolution for MVP) | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/validator/dashboard.go | 54 | // Step 3: Validate each datasource | COMMENT |
| LOW | apps/dashvalidator/pkg/validator/dashboard.go | 94 | // Step 4: Calculate overall compatibility score | COMMENT |
| LOW | apps/dashvalidator/pkg/app/app.go | 142 | // Step 1: Parse request body | COMMENT |
| LOW | apps/dashvalidator/pkg/app/app.go | 198 | // Step 2: Build validator request | COMMENT |
| LOW | apps/dashvalidator/pkg/app/app.go | 348 | // Step 3: Validate dashboard compatibility | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/app/app.go | 376 | // Step 4: Convert result to response format | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/app/app.go | 379 | // Step 5: Return response | COMMENT |
| LOW | apps/dashvalidator/pkg/cache/cache.go | 142 | // NOTE: This method delegates to GetMetrics for fetching/caching logic. | COMMENT |
| LOW⚡ | …hboard/pkg/migration/conversion/v2alpha1_to_v1_test.go | 50 | // Step 1: Convert v2alpha1 → v1 | COMMENT |
| LOW⚡ | …hboard/pkg/migration/conversion/v2alpha1_to_v1_test.go | 55 | // Step 2: Convert v1 → v2alpha1 (back) | COMMENT |
| LOW | …d/pkg/migration/conversion/v2beta1_to_v2alpha1_test.go | 65 | // Step 1: Convert v2beta1 → v2alpha1 | COMMENT |
| LOW | …d/pkg/migration/conversion/v2beta1_to_v2alpha1_test.go | 77 | // Step 2: Convert v2alpha1 → v2beta1 (back) | COMMENT |
| 63 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | devenv/secrets/secrets.go | 47 | // ── Config types (YAML input) ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 74 | // ── API resource types (JSON for POST) ────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 130 | // ── HTTP client ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 185 | // ── Check API availability ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 211 | // ── Create resources ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 304 | // ── Delete resources ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 349 | // ── Helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 360 | // ── Self-test (no server required) ────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 378 | // ── Config parsing ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 425 | // ── Resource JSON structure ───────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 496 | // ── Helpers ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 510 | // ── HTTP interaction (mock server) ────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 542 | // ── Summary ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 579 | // ── Generate bulk test data ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | devenv/secrets/secrets.go | 646 | // ── Main ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …/app/features/alerting/unified/utils/access-control.ts | 26 | // ── Pure data: static permission maps ──────────────────────────────────────── | COMMENT |
| MEDIUM | …/app/features/alerting/unified/utils/access-control.ts | 92 | // ── Pure functions: source-type-aware permission resolvers ──────────────────── | COMMENT |
| MEDIUM | …/app/features/alerting/unified/utils/access-control.ts | 118 | // ── Runtime utilities ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …res/alerting/unified/hooks/abilities/otherAbilities.ts | 20 | // ── Folder abilities ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …res/alerting/unified/hooks/abilities/otherAbilities.ts | 41 | // ── Folder bulk action abilities ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …res/alerting/unified/hooks/abilities/otherAbilities.ts | 62 | // ── Enrichment abilities ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …app/features/alerting/unified/hooks/abilities/types.ts | 131 | // ── Ability ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …app/features/alerting/unified/hooks/abilities/types.ts | 195 | // ── Sentinel constants ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …app/features/alerting/unified/hooks/abilities/types.ts | 240 | // ── Type-guard functions ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 38 | // ── useRuleAdministrationAbility ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 303 | // ── useRuleSilenceAbility ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 355 | // ── useRuleExploreAbility ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 381 | // ── useRuleExportAbility ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 404 | // ── useRuleAdministrationAbility ───────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 497 | // ── usePromRuleSilenceAbility ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 547 | // ── usePromRuleExportAbility ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 576 | // ── Global rule ability React hooks ────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.test.tsx | 628 | // ── Pure utility function branches ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 39 | // ── useRuleAdministrationAbility ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 111 | // ── useRuleSilenceAbility ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 125 | // ── useRuleExportAbility ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ng/unified/hooks/abilities/rules/rulerRuleAbilities.ts | 137 | // ── Internal helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing/unified/hooks/abilities/rules/promRuleAbilities.ts | 37 | // ── usePromRuleAdministrationAbility ───────────────────────────────────────── | COMMENT |
| MEDIUM | …ing/unified/hooks/abilities/rules/promRuleAbilities.ts | 106 | // ── usePromRuleSilenceAbility ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ing/unified/hooks/abilities/rules/promRuleAbilities.ts | 125 | // ── usePromRuleExportAbility ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 24 | // ── Sentinel token ──────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 30 | // ── Shared result type ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 66 | // ── Pure ability builders ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …g/unified/hooks/abilities/rules/ruleAbilities.utils.ts | 166 | // ── Shared internal hooks ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …lerting/unified/hooks/abilities/rules/ruleAbilities.ts | 37 | // ── Grafana-managed rule abilities (global / list level) ────────────────────── | COMMENT |
| MEDIUM | …lerting/unified/hooks/abilities/rules/ruleAbilities.ts | 95 | // ── External datasource rule abilities (global / list level) ────────────────── | COMMENT |
| MEDIUM⚡ | …lerting/unified/hooks/abilities/rules/ruleAbilities.ts | 140 | // ── Explore (no rule context needed) ───────────────────────────────────────── | COMMENT |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 20 | // ─── module mocks ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 83 | // ─── typed mock references ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 98 | // ─── helpers ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 122 | // ─── setup ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …tures/dashboard-scene/scene/UnconfiguredPanel.test.tsx | 148 | // ─── tests ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | apps/provisioning/pkg/repository/workflows_test.go | 462 | // ─── size-threshold boundary cases ───────────────────────────────────── | COMMENT |
| MEDIUM | apps/provisioning/pkg/repository/workflows_test.go | 526 | // ─── folder-metadata-only deletion cases ─────────────────────────────── | COMMENT |
| MEDIUM | apps/provisioning/pkg/repository/workflows_test.go | 610 | // ─── size check is evaluated before the folder-metadata guard ────────── | COMMENT |
| MEDIUM | pkg/tests/apis/provisioning/common/testing.go | 3326 | // ── Git-server test infrastructure ───────────────────────────────────────── | COMMENT |
| MEDIUM | pkg/tests/apis/provisioning/common/testing.go | 3938 | // ── Export helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …visioning/foldermetadata/fixfoldermetadata_git_test.go | 181 | // ── helpers ──────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ning/foldermetadata/folder_title_normalization_test.go | 45 | // ──────────────────────────── ───────────────────────────────────── | COMMENT |
| MEDIUM | …ning/foldermetadata/folder_title_normalization_test.go | 206 | // ──────────────────────────── ───────────────────────────────────── | COMMENT |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 171 | // Step 1: navigate_folder (clicking the folder) | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 175 | // Step 2: select_resource (clicking the dashboard) | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 186 | // Step 1: Navigate into folder A | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 193 | // Step 2: Navigate into folder B (nested inside A) | COMMENT |
| LOW⚡ | …playwright/journey-tracking/browse-to-resource.spec.ts | 200 | // Step 3: Click the dashboard inside folder B | COMMENT |
| LOW | …series/plugins/annotations/useAnnotationClustering.tsx | 85 | // If region annotations are in the cluster we need to check if the end time is later then | COMMENT |
| LOW | …rting/unified/components/import-to-gma/ImportToGMA.tsx | 82 | // Step 1: Alertmanager resources | COMMENT |
| LOW | …rting/unified/components/import-to-gma/ImportToGMA.tsx | 98 | // Step 2: Alert rules | COMMENT |
| LOW | …blic/app/features/explore/TraceView/createTraceLink.ts | 168 | // Because we can only pass milliseconds in the url we need to check if they are greater or equal. | COMMENT |
| LOW⚡ | …blic/app/features/annotations/utils/savedQueryUtils.ts | 50 | // Step 1: Create clean annotation structure with only annotation-specific fields | COMMENT |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 63 | // Step 2: Use datasource's export/import to normalize saved query | COMMENT |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 104 | // Step 3: Create annotation and apply datasource-specific preparation | COMMENT |
| LOW | …blic/app/features/annotations/utils/savedQueryUtils.ts | 120 | // Step 4: Handle v1 vs v2 dashboard format after preparation | COMMENT |
| LOW⚡ | scripts/build-msi.sh | 139 | # Step 1: harvest files into grafana.wxs | COMMENT |
| LOW⚡ | scripts/build-msi.sh | 149 | # Step 2: compile all .wxs files | COMMENT |
| LOW⚡ | scripts/build-msi.sh | 157 | # Step 3: link into MSI | COMMENT |
| LOW | apps/advisor/pkg/app/checks/instancechecks/check.go | 59 | // If running in cloud, we need to check if the version is pinned | COMMENT |
| LOW | apps/advisor/pkg/app/checks/instancechecks/check.go | 68 | // If running in self-managed, we need to check if the version is out of support | COMMENT |
| LOW | …r/pkg/app/checks/instancechecks/out_of_support_step.go | 65 | // In other cases, we need to check if the version is out of support. | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/validator/dashboard.go | 45 | // Step 1: Extract queries from dashboard JSON | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/validator/dashboard.go | 51 | // Step 2: Group queries by datasource UID (with variable resolution for MVP) | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/validator/dashboard.go | 54 | // Step 3: Validate each datasource | COMMENT |
| LOW | apps/dashvalidator/pkg/validator/dashboard.go | 94 | // Step 4: Calculate overall compatibility score | COMMENT |
| LOW | apps/dashvalidator/pkg/app/app.go | 142 | // Step 1: Parse request body | COMMENT |
| LOW | apps/dashvalidator/pkg/app/app.go | 198 | // Step 2: Build validator request | COMMENT |
| LOW | apps/dashvalidator/pkg/app/app.go | 348 | // Step 3: Validate dashboard compatibility | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/app/app.go | 376 | // Step 4: Convert result to response format | COMMENT |
| LOW⚡ | apps/dashvalidator/pkg/app/app.go | 379 | // Step 5: Return response | COMMENT |
| LOW⚡ | …hboard/pkg/migration/conversion/v2alpha1_to_v1_test.go | 50 | // Step 1: Convert v2alpha1 → v1 | COMMENT |
| LOW⚡ | …hboard/pkg/migration/conversion/v2alpha1_to_v1_test.go | 55 | // Step 2: Convert v1 → v2alpha1 (back) | COMMENT |
| LOW | …d/pkg/migration/conversion/v2beta1_to_v2alpha1_test.go | 65 | // Step 1: Convert v2beta1 → v2alpha1 | COMMENT |
| LOW | …d/pkg/migration/conversion/v2beta1_to_v2alpha1_test.go | 77 | // Step 2: Convert v2alpha1 → v2beta1 (back) | COMMENT |
| LOW | …/dashboard/pkg/migration/conversion/conversion_test.go | 123 | // Step 1: Convert source to intermediate (if applicable) | COMMENT |
| LOW | …/dashboard/pkg/migration/conversion/conversion_test.go | 150 | // Step 2: Convert to final target | COMMENT |
| LOW | pkg/tests/apis/helper.go | 1332 | // Step 2: Start with search failures, reusing orgs/users from step 1 | COMMENT |
| LOW | pkg/tests/apis/helper.go | 1364 | // Step 1: Start normally (search working) with DB cleanup disabled | COMMENT |
| LOW | …/tests/apis/provisioning/repository/repository_test.go | 1958 | // Step 1: Create first repository with empty path - syncs successfully | COMMENT |
| LOW | …/tests/apis/provisioning/repository/repository_test.go | 1970 | // Step 2: Create second repository with same URL, branch, and empty path. Sync stays | COMMENT |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 47 | // Step 1: Create repositories in both organizations with folder sync | COMMENT |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 74 | // Step 2: Sync both repositories and verify success | COMMENT |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 97 | // Step 3: Verify namespace isolation - each org can only see its own resources | COMMENT |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 140 | // Step 4: Verify cross-namespace access is blocked | COMMENT |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 166 | // Step 5: Verify dashboards are also isolated | COMMENT |
| LOW | …sts/apis/provisioning/orgs/namespace_isolation_test.go | 197 | // Step 6: Verify re-sync maintains isolation | COMMENT |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 175 | // Step 1: Create a repo with 1 dashboard (2 resources total: 1 root folder + 1 dashboard) | COMMENT |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 191 | // Step 2: Add 2 more dashboard files (would bring total to 4, exceeding limit of 3) | COMMENT |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 203 | // Step 3: Trigger a full sync — the QuotaTracker starts at 2/3 so only 1 more creation is allowed | COMMENT |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 222 | // Step 4: Verify job completed with warning state (some resources were skipped) | COMMENT |
| LOW⚡ | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 237 | // Step 5: Verify partial sync — 1 new dashboard was created (total 2), 1 was skipped | COMMENT |
| LOW⚡ | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 240 | // Step 6: Verify the repo is now at quota (1 folder + 2 dashboards = 3/3) | COMMENT |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 272 | // Step 2: Add 2 dashboards in new subfolders (each creates a folder + a dashboard). | COMMENT |
| LOW | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 304 | // Step 4: Verify job completed with warning (resources skipped due to quota) | COMMENT |
| LOW⚡ | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 323 | // Step 5: Verify no new dashboards were created. One new folder consumes the last quota slot, | COMMENT |
| LOW⚡ | pkg/tests/apis/provisioning/quota/sync_quota_test.go | 331 | // Step 6: Verify the repo is now at quota (4 folders + 2 dashboards = 6/6) | COMMENT |
| LOW | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 27 | // Step 1: Create an unmanaged dashboard directly via the API. | COMMENT |
| LOW | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 40 | // Step 2: Create a repo with a file whose metadata.name matches the unmanaged dashboard. | COMMENT |
| LOW⚡ | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 66 | // Step 3: Trigger a pull job — it should hit the unmanaged conflict. | COMMENT |
| LOW⚡ | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 72 | // Step 4: Verify the job completed with a warning (not error, not success). | COMMENT |
| LOW | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 95 | // Step 5: Verify the original dashboard is still unmanaged and unchanged. | COMMENT |
| LOW | pkg/tests/apis/provisioning/jobs/migratejob_test.go | 109 | // Step 1: Create two unmanaged dashboards directly. | COMMENT |
| 31 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | devenv/local-npm/conf/config.yaml | 3 | # please read carefully the documentation and best practices to | COMMENT |
| MEDIUM | devenv/local-npm/conf/config.yaml | 13 | # Read about the best practices | COMMENT |
| MEDIUM | …/app/plugins/panel/geomap/layers/data/markersLayer.tsx | 123 | // Helper function to create a robust uniqueness key | COMMENT |
| MEDIUM | …blic/app/plugins/panel/geomap/utils/getLayersExtent.ts | 64 | // Look at flatCoordinates for more robust support including route layer | COMMENT |
| MEDIUM | …lic/app/features/provisioning/Wizard/BootstrapStep.tsx | 79 | // TODO: improve error handling base on BE response, leverage "fieldErrors" when available | COMMENT |
| MEDIUM | …lic/app/features/canvas/runtime/sceneAbleManagement.ts | 510 | // but it should be replaced with a more robust solution that doesn't interfere with left click interactions. | COMMENT |
| MEDIUM | …/app/features/scopes/selector/ScopesSelectorService.ts | 215 | // todo: leverage component-level | COMMENT |
| MEDIUM | public/test/jest-resolver.js | 2 | // Call the defaultResolver, so we leverage its cache, error handling, etc. | COMMENT |
| LOW | scripts/ci/backend-tests/shard.sh | 23 | # we can't just return the result of the regex match shellcheck is unhappy... | COMMENT |
| LOW | scripts/ci/backend-tests/shard.sh | 113 | # If there is only one shard, just return all packages. | COMMENT |
| MEDIUM | …grafana/notificationPolicies/routingTree.utils.test.ts | 69 | // Compare against the user-defined label so the assertion is robust to the i18n fallback string. | COMMENT |
| MEDIUM | packages/grafana-runtime/src/utils/qscheck.ts | 4 | oauthPassThru?: unknown; // we do not assume boolean, to be more robust | CODE |
| MEDIUM | .github/workflows/pr-build-grafana.yml | 18 | # for meticulous tests | COMMENT |
| MEDIUM | conf/defaults.ini | 319 | # Set to true to skip all database migrations on startup. Should be used in conjunction with "ensure_default_org_and_use | COMMENT |
| MEDIUM | conf/sample.ini | 1003 | # Use in conjunction with key_file or key_value in case the JWT token's header specifies a key ID in "kid" field | COMMENT |
| MEDIUM | apps/dashvalidator/pkg/validator/dashboard.go | 161 | return false // Definitely v2 | CODE |
| MEDIUM | apps/dashboard/pkg/migration/schemaversion/v36.go | 27 | // - Maintains backward compatibility while establishing a robust foundation | COMMENT |
| MEDIUM | pkg/registry/apis/provisioning/jobs/metrics.go | 358 | // short jobs), this counter gives scrape-robust time-averaged utilization. Nil-safe. | COMMENT |
| MEDIUM | pkg/registry/apis/dashboard/home/getter_test.go | 291 | // platforms coalesce events, so retrying makes the test robust. | COMMENT |
| MEDIUM | pkg/services/oauthtoken/oauth_token.go | 571 | // In the future, we might want to consider passing the session token ID to the render module to make this more robust | COMMENT |
| MEDIUM | pkg/services/ngalert/accesscontrol/receivers.go | 303 | action: "admin", // Essentially read+write receiver resource permissions. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .policy.yml | 1 | # This file is generated by generate-policy-bot-config. | COMMENT |
| MEDIUM | .golangci.yml | 1 | # This file is best edited with some JSON-schema-aware editor. | COMMENT |
| MEDIUM | packaging/docker/build.sh | 108 | # Create the expected tag for running the end to end tests successfully | COMMENT |
| MEDIUM | devenv/docker/blocks/elasticstack/filebeat.yml | 3 | # This file is a full configuration example documenting all non-deprecated | COMMENT |
| MEDIUM | .github/workflows/deploy-storybook-preview.yml | 48 | # Create the GCS folder name for the preview. Creates a consistent name for all deploys for the PR. | COMMENT |
| MEDIUM | .github/workflows/backport-trigger.yml | 29 | # Create a JSON artifact with details of this PR to pass to the backport workflow. | COMMENT |
| MEDIUM | .github/workflows/deploy-storybook.yml | 77 | # Create the GCS folder name | COMMENT |
| MEDIUM | .github/workflows/lint-build-docs.yml | 58 | # Create the directory structure inside the container | COMMENT |
| MEDIUM | .github/workflows/lint-build-docs.yml | 61 | # Create the _index.md file | COMMENT |
| MEDIUM | .citools/install.sh | 23 | # Create a new module if go.mod doesn't exist | COMMENT |
| MEDIUM | pkg/api/http_server_test.go | 150 | * # Create a new Certificate Signing Request (CSR) using the private key passing passphrase '1234567890123456789012345 | COMMENT |
| MEDIUM | pkg/api/http_server_test.go | 217 | * # Create a new Certificate Signing Request (CSR) using the private key passing passphrase '11111222223333344444555556 | COMMENT |
| MEDIUM | pkg/api/http_server_test.go | 282 | * # Create a new Certificate Signing Request (CSR) using the private key | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | devenv/dev-dashboards/panel-canvas/canvas-examples.json | 3805 | "content": "#### Home Solar Energy Demo (Day)\n\nThis demo show cases an example off grid home solar sys | CODE |
| HIGH | devenv/dev-dashboards/panel-canvas/canvas-examples.json | 3843 | "content": "#### Home Solar Energy Demo (Night)\n\nThis demo show cases an example off grid home solar s | CODE |
| HIGH | …anels-visualizations/visualizations/bar-gauge/index.md | 93 | By default, the visualization is configured to [calculate](#value-options) a single value per column or series and to di | CODE |
| HIGH | …ta/v1_dev_dashboards/panel-canvas/canvas-examples.json | 3619 | "content": "#### Home Solar Energy Demo (Day)\n\nThis demo show cases an example off grid home solar system with | CODE |
| HIGH | …ta/v1_dev_dashboards/panel-canvas/canvas-examples.json | 3832 | "content": "#### Home Solar Energy Demo (Night)\n\nThis demo show cases an example off grid home solar system wi | CODE |
| HIGH | …shboards/panel-canvas/v1beta1.canvas-examples.v42.json | 3619 | "content": "#### Home Solar Energy Demo (Day)\n\nThis demo show cases an example off grid home solar system with | CODE |
| HIGH | …shboards/panel-canvas/v1beta1.canvas-examples.v42.json | 3832 | "content": "#### Home Solar Energy Demo (Night)\n\nThis demo show cases an example off grid home solar system wi | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | devenv/docker/blocks/elasticstack/filebeat.yml | 393 | # you can use different inputs for various configurations. | COMMENT |
| MEDIUM | devenv/docker/blocks/elasticstack/filebeat.yml | 964 | # For example, you can use the following processors to keep the fields that | COMMENT |
| 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 | COMMENT |
| LOW | …ified/components/contact-points/ContactPoints.test.tsx | 412 | // ⚠️ for some reason, the query params are preserved for all tests so don't forget to clear the input | COMMENT |
| LOW | scripts/tag_release.sh | 21 | # always make sure to pull latest changes from origin | COMMENT |
| MEDIUM | conf/ldap.toml | 73 | # If you want to match all (or no ldap groups) then you can use wildcard | COMMENT |
| MEDIUM⚡ | apps/dashboard/pkg/apis/dashboard_manifest.go | 38 | rawSchemaDashboardv2 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" | CODE |
| MEDIUM⚡ | apps/dashboard/pkg/apis/dashboard_manifest.go | 41 | rawSchemaDashboardv2alpha1 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" | CODE |
| MEDIUM⚡ | apps/dashboard/pkg/apis/dashboard_manifest.go | 44 | rawSchemaDashboardv2beta1 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" | CODE |
| MEDIUM⚡ | apps/dashboard/pkg/apis/dashboard_manifest.go | 50 | rawSchemaNotebookv2beta1 = []byte(`{"Action":{"additionalProperties":false,"properties":{"confirmation":{"type":" | CODE |
| MEDIUM | pkg/components/dashdiffs/formatter_basic.go | 244 | // level key in the JSON document. As mentioned earlier, we treat these | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | AI_POLICY.md | 40 | Saying that content was generated by AI does not remove your responsibility for it. Your AI-assisted work can strengthen | CODE |
| HIGH | …nfigure-notifications/template-notifications/_index.md | 85 | ## Grafana Cloud AI-generated templates | COMMENT |
| HIGH | pkg/services/featuremgmt/toggles_gen.go | 463 | // Enable AI-generated alerting templates. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …nfigure-security/configure-security-hardening/index.md | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel | STRING |
| HIGH | scripts/grafana-server/custom.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel | STRING |
| HIGH | conf/defaults.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel | STRING |
| HIGH | conf/sample.ini | 0 | script-src 'self' 'unsafe-eval' 'unsafe-inline' 'strict-dynamic' $nonce;object-src 'none';font-src 'self';style-src 'sel | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …app/api/clients/scope/v0alpha1/sync-from-enterprise.sh | 25 | # Check if OpenAPI spec exists | COMMENT |
| LOW | scripts/check-frontend-dev.sh | 17 | # Check if .nvmrc file exists | COMMENT |
| LOW | scripts/releasefinder.sh | 22 | # Check if script is executable | COMMENT |
| LOW | scripts/releasefinder.sh | 30 | # Check if a commit hash was provided | COMMENT |
| LOW | .github/workflows/create-security-branch.yml | 124 | # Check if branch already exists | COMMENT |
| LOW | .github/workflows/changelog.yml | 148 | # Check if a version exists in the changelog | COMMENT |
| LOW | .github/workflows/release-pr.yml | 205 | # Check if a version exists in the changelog | COMMENT |
| LOW | .github/workflows/deploy-storybook-preview.yml | 60 | # Check if SANITIZED_BRANCH is empty and fail if it is | COMMENT |
| LOW | .github/workflows/detect-breaking-changes-levitate.yml | 218 | # Check if label exists | COMMENT |
| LOW | .github/workflows/backend-code-checks.yml | 107 | # Check if the generated specs differ from what's in the repository | COMMENT |
| LOW | …b/workflows/scripts/levitate/check-breaking-changes.sh | 62 | # Check if the comparison returned with a non-zero exit code | COMMENT |
| LOW | .github/actions/check-jobs/action.yml | 39 | # Check if there are any failures | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …atures/explore/hooks/useStateSync/migrators/v1.test.ts | 111 | // TODO: implement | COMMENT |
| LOW | public/app/features/dashboard/components/GenAI/hooks.ts | 49 | // TODO: Add tests | COMMENT |
| LOW | …ation/layoutSerializers/DefaultGridLayoutSerializer.ts | 139 | // TODO: implement | COMMENT |
| LOW | …rcepermission/resource_permissions_integration_test.go | 162 | // TODO: Add tests for External JWT authentication | COMMENT |
| LOW | pkg/tests/api/alerting/api_testing_test.go | 261 | t.Skip("flakey tests - skipping") //TODO: Fix tests and remove skip. | CODE |
| LOW | pkg/storage/secret/metadata/keeper_model.go | 225 | // TODO: implement for keepers that will reference secure value names in their configs | COMMENT |
| LOW | pkg/registry/apis/provisioning/resources/dualwriter.go | 61 | // TODO: implement this | COMMENT |
| LOW | pkg/registry/apis/iam/user/store_wrapper.go | 216 | // TODO: implement proper watch filtering by pre-fetching hidden users at watch start. | COMMENT |
| LOW | …registry/apis/iam/authorizer/external_group_mapping.go | 130 | // TODO: implement proper watch filtering using Compile or BatchCheck. | COMMENT |
| LOW | …egistry/apis/iam/authorizer/team_binding_authorizer.go | 122 | // TODO: implement proper watch filtering using Compile or BatchCheck. | COMMENT |
| LOW | pkg/services/ngalert/tests/fakes/rules.go | 338 | // TODO: implement pagination for this fake | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | relyance.yaml | 8 | # Note: Need a separate entry for each microservice. See example below. | COMMENT |
| MEDIUM | docs/sources/alerting/examples/trace-based-alerts.md | 219 | ### Enable traffic guardrails | COMMENT |
| MEDIUM | docs/sources/as-code/git-sync/usage-limits.md | 52 | On Grafana Cloud, tier limits can't be changed from configuration. Contact Support if you need a higher connection limit | CODE |
| MEDIUM | docs/sources/whatsnew/whats-new-in-v7-0.md | 146 | With [@grafana/toolkit](https://www.npmjs.com/package/@grafana/toolkit) we are delivering a simple CLI that helps plugin | CODE |
| MEDIUM | docs/sources/developer-resources/contribute/_index.md | 41 | - Read the [plugin development guide](https://grafana.com/developers/plugin-tools) to choose a plugin type, scaffold you | CODE |
| MEDIUM | pkg/services/featuremgmt/toggles_gen.go | 1018 | // Data source query gateway guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …s/sources/datasources/elasticsearch/configure/index.md | 93 | 1. Set **Value** to `ApiKey <your-api-key>`, replacing `<your-api-key>` with your base64-encoded Elasticsearch API key. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/app/plugins/datasource/azuremonitor/variables.test.ts | 255 | it('should return None when there is no data', async () => { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …hub/workflows/scripts/test-endpoint-migration-check.sh | 8 | # Usage: | COMMENT |
| LOW | pkg/util/debouncer/debouncer.go | 125 | // Example usage: | COMMENT |
| LOW | pkg/storage/unified/sql/db/service.go | 103 | // Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ponents/AssistantTooltip/buildAssistantContext.test.ts | 72 | function getData(items: ReturnType<typeof buildDatapointAssistantContext>) { | CODE |
| LOW | …t/QueryEditor/Header/TransformationIdentifier.test.tsx | 71 | function getData(series = [seriesA, seriesB]): PanelData { | CODE |
| LOW | packages/grafana-ui/src/components/Table/utils.test.ts | 24 | function getData() { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test-aliases.py | 45 | CODE | |
| LOW | scripts/test-aliases.py | 170 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test-aliases.py | 152 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/test-aliases.py | 41 | CODE |