Production-grade client-side tracing, profiling, and analysis for complex software systems.
This report summarizes scanner evidence for google/perfetto, a C++ project with 6,626 GitHub stars. SynthScan examined 799,552 lines of code across 4314 source files, recording 6152 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 7.8 (Moderate 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.
Can maintainers explain intent, assumptions, and trade-offs? 5407 finding(s).
Are imports declared and package/API names verified? 598 finding(s).
Are wrappers, guards, and repeated structures necessary? 1684 finding(s).
Which changes need focused human review? 6152 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 6152 distinct pattern matches across 22 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 | ui/.eslintrc.js | 61 | // Rest parameters are not equivalent to 'arguments'. | COMMENT |
| LOW | ui/playwright.config.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/eslint.config.js | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/vitest.setup.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/config/syntaqlite_mock.js | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/release/build_channel.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | ui/src/types/vitest.d.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/types/vite.d.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/types/vite.d.ts | 21 | // @types/* package (node, jest, chrome, mithril, ...) and break the build. | COMMENT |
| LOW | ui/src/engine_bench/index.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/engine_bench/bench.test.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/engine_bench/worker.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/protos/index.ts | 1 | // Copyright (C) 2018 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/command_manager.ts | 1 | // Copyright (C) 2023 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/cookie_consent.ts | 1 | // Copyright (C) 2020 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/plugin_manager.ts | 1 | // Copyright (C) 2022 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/plugin_manager.ts | 41 | // The feature flag used to allow users to change whether this plugin should | COMMENT |
| LOW | ui/src/core/statusbar_manager.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/feature_flags_unittest.ts | 1 | // Copyright (C) 2021 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/minimap_manager.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/analytics_impl.ts | 1 | // Copyright (C) 2020 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/sql_search.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/trace_source.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/trace_source.ts | 61 | readonly fileName?: string; | COMMENT |
| LOW | ui/src/core/trace_source.ts | 81 | // onTraceLoad() and can be used to trigger plugin-specific-behaviours (e.g. | COMMENT |
| LOW | ui/src/core/workspace_manager.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/scroll_helper.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/side_panel_manager.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/command_manager_unittest.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/metatracing_unittest.ts | 1 | // Copyright (C) 2023 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/event_set.ts | 1 | // Copyright (C) 2023 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/event_set.ts | 141 | export type UntypedEventSet = EventSet<any>; | COMMENT |
| LOW | ui/src/core/event_set.ts | 181 | } | COMMENT |
| LOW | ui/src/core/event_set.ts | 601 | // In more detail: | COMMENT |
| LOW | ui/src/core/event_set_nocompile_test.ts | 1 | // Copyright (C) 2023 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/router.ts | 1 | // Copyright (C) 2018 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/router.ts | 21 | COMMENT | |
| LOW | ui/src/core/router.ts | 41 | } | COMMENT |
| LOW | ui/src/core/router.ts | 81 | COMMENT | |
| LOW | ui/src/core/perf_manager.ts | 1 | // Copyright (C) 2018 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/channels.ts | 1 | // Copyright (C) 2021 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/fake_trace_impl.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/omnibox_manager.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/settings_manager.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/state_serialization.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/state_serialization.ts | 81 | } | COMMENT |
| LOW | ui/src/core/sidebar_manager.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/tab_manager.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/track_manager_unittest.ts | 1 | // Copyright (C) 2023 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/startup_command_allowlist.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/settings_manager_unittest.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/router_unittest.ts | 1 | // Copyright (C) 2018 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/storage.ts | 1 | // Copyright (C) 2025 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/color_unittest.ts | 1 | // Copyright (C) 2023 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/perf_stats.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/open_trace_files.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/trace_impl.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/initial_page_manager.ts | 1 | // Copyright (C) 2026 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/note_manager.ts | 1 | // Copyright (C) 2024 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/load_trace.ts | 1 | // Copyright (C) 2018 The Android Open Source Project | COMMENT |
| 3616 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/release/build_channel.py | 243 | def make_other_channel_updater(channel, new_version): | CODE |
| LOW | ui/src/core/event_set_nocompile_test.ts | 41 | export function eventMustNotHaveExtraKeys(): Event<KeySet> { | CODE |
| LOW | ui/src/core/fake_trace_impl.ts | 35 | export function initializeAppImplForTesting(): AppImpl { | CODE |
| LOW | ui/src/core/load_trace.ts | 119 | async function defineMaxLayoutDepthSqlFunction(engine: Engine): Promise<void> { | CODE |
| LOW | ui/src/core/load_trace.ts | 395 | function showStartupCommandIssuesDialog( | CODE |
| LOW | ui/src/core/load_trace.ts | 473 | async function computeTraceReliableRangeStart(engine: Engine): Promise<time> { | CODE |
| LOW | ui/src/core/load_trace.ts | 717 | async function getTracingMetadataTimeBounds(engine: Engine): Promise<TimeSpan> { | CODE |
| LOW | ui/src/core/dataset_search.ts | 78 | async function searchTracksUsingProvider( | CODE |
| LOW | ui/src/core/search_result_utils.ts | 136 | export function formatSearchResultDifference( | CODE |
| LOW | ui/src/core/timeline.ts | 532 | function getTraceMidnightInTimezone( | CODE |
| LOW | ui/src/core/metatracing.ts | 67 | export function disableMetatracingAndGetTrace(): Uint8Array { | CODE |
| LOW | ui/src/core/metatracing.ts | 76 | export function getEnabledMetatracingCategories(): | CODE |
| LOW | ui/src/frontend/post_message_handler.ts | 171 | function shouldGracefullyIgnoreMessage(messageEvent: MessageEvent) { | CODE |
| LOW | ui/src/frontend/rpc_http_dialog.ts | 48 | function getIncompatibleRpcMessage(tpStatus: protos.StatusResult): string { | CODE |
| LOW | ui/src/frontend/rpc_http_dialog.ts | 70 | function getVersionMismatchMessage(tpStatus: protos.StatusResult): string { | CODE |
| LOW | ui/src/frontend/rpc_http_dialog.ts | 235 | async function showDialogVersionMismatch( | CODE |
| LOW | ui/src/frontend/rpc_http_dialog.ts | 274 | async function showDialogIncompatibleRPC( | CODE |
| LOW | ui/src/frontend/rpc_http_dialog.ts | 307 | async function showDialogToUsePreloadedTrace( | CODE |
| LOW | ui/src/frontend/trace_url_handler.ts | 250 | function openTraceFromAndroidBugTool() { | CODE |
| LOW | ui/src/frontend/index.ts | 133 | function setupContentSecurityPolicy() { | CODE |
| LOW | ui/src/frontend/index.ts | 499 | function maybeChangeRpcPortFromFragment() { | CODE |
| LOW | ui/src/frontend/error_dialog.ts | 623 | function showWebsocketConnectionIssue(message: string): void { | CODE |
| LOW | ui/src/plugins/dev.perfetto.SqlModules/sql_modules.ts | 156 | export function isTableEffectivelyDisabled( | CODE |
| LOW | …tto.TraceProcessorTrack/trace_processor_state_track.ts | 42 | export async function createTraceProcessorStateTrack({ | CODE |
| LOW | …tto.TraceProcessorTrack/trace_processor_slice_track.ts | 59 | export async function createTraceProcessorSliceTrack({ | CODE |
| LOW | ui/src/plugins/dev.perfetto.JournaldLog/index.ts | 48 | function isJournaldLogFilteringCriteria( | CODE |
| LOW | ui/src/plugins/dev.perfetto.JournaldLog/index.ts | 66 | function migrateJournaldPluginState(init: unknown): JournaldLogPluginState { | CODE |
| LOW | …c/plugins/dev.perfetto.AutoPinAndExpandTracks/index.ts | 407 | function addOrReplaceNamedPinnedTracks({name, tracks}: SavedNamedPinnedTracks) { | CODE |
| LOW | …/plugins/dev.perfetto.WidgetsPage/demos/charts_demo.ts | 1504 | function generateLineChartSampleData(): LineChartData { | CODE |
| LOW | …/plugins/dev.perfetto.WidgetsPage/demos/charts_demo.ts | 1517 | function generateMultiSeriesLineData(): LineChartData { | CODE |
| LOW | …gins/dev.perfetto.HeapProfile/incomplete_flamegraph.ts | 33 | export function incompleteFlamegraphModal( | CODE |
| LOW | …gins/dev.perfetto.HeapProfile/oome_callstack_common.ts | 24 | export function buildOomeCallstackMetrics( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 597 | function flamegraphMetricsForHeapProfile( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 723 | function getHeapGraphDuplicateObjectsView( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 738 | function getHeapGraphNodeOptionalActions( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 768 | function getHeapGraphRootOptionalActions( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 696 | export async function fetchShortestPathFromRoot( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1956 | export async function enrichFieldsWithReachable( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1981 | export async function enrichArrayElemsWithReachable( | CODE |
| LOW | …ns/com.android.HeapDumpExplorer/views/overview_view.ts | 63 | function makeDuplicateBitmapSchema(navigate: NavFn): ColumnSchema { | CODE |
| LOW | …ns/com.android.HeapDumpExplorer/views/overview_view.ts | 143 | function makeDuplicateStringSchema(navigate: NavFn): ColumnSchema { | CODE |
| LOW | ui/src/plugins/dev.perfetto.Memscope/index.ts | 185 | function parseMemoryOverviewSubpage(subpage?: string): MemoryOverviewSubpage { | CODE |
| LOW | ui/src/plugins/dev.perfetto.Memscope/index.ts | 201 | function formatMemoryOverviewSubpage( | CODE |
| LOW | ui/src/plugins/dev.perfetto.Memscope/index.ts | 215 | function resolveMemoryOverviewRoute( | CODE |
| LOW | …gins/dev.perfetto.Memscope/sessions/profile_session.ts | 129 | function buildProcessProfileConfig( | CODE |
| LOW | ui/src/plugins/dev.perfetto.Memscope/views/dashboard.ts | 44 | function buildProcessMemoryBreakdown( | CODE |
| LOW | …plugins/dev.perfetto.Memscope/views/tabs/page_cache.ts | 94 | function buildFileCacheBreakdownTimeSeries( | CODE |
| LOW | …plugins/dev.perfetto.Memscope/views/tabs/page_cache.ts | 155 | function buildFileCacheActivityTimeSeries( | CODE |
| LOW | ui/src/plugins/dev.perfetto.Sched/thread_count.ts | 18 | async function threadLevelParallelismInit(trace: Trace): Promise<void> { | CODE |
| LOW | ui/src/plugins/dev.perfetto.Sched/index.ts | 67 | function uriForActiveCPUCountTrack( | CODE |
| LOW | ui/src/plugins/com.meta.GpuCompute/details.ts | 517 | export async function fetchSelectedKernelMetricData( | CODE |
| LOW | …ugins/com.meta.GpuCompute/section/launch_statistics.ts | 17 | export function registerLaunchStatisticsSection(reg: SectionRegistry): void { | CODE |
| LOW | …/plugins/com.meta.GpuCompute/section/speed_of_light.ts | 17 | export function registerSpeedOfLightSection(reg: SectionRegistry): void { | CODE |
| LOW | …m.meta.GpuCompute/section/compute_workload_analysis.ts | 17 | export function registerComputeWorkloadAnalysisSection( | CODE |
| LOW | ui/src/plugins/dev.perfetto.Frames/index_unittest.ts | 140 | function setExperimentalJankEnabled(enabled: boolean) { | CODE |
| LOW | ui/src/plugins/dev.perfetto.Frames/index.ts | 66 | export function getProcessFrameTimelineUris(upid: number): string[] { | CODE |
| LOW | …c/plugins/dev.perfetto.Frames/expected_frames_track.ts | 84 | export function createExpectedFramesTrack( | CODE |
| LOW | ui/src/plugins/org.kernel.Wattson/index.ts | 226 | async function addWattsonMarkersElements(ctx: Trace, group: TrackNode) { | CODE |
| LOW | …calUserInteractions/critical_user_interaction_track.ts | 24 | export function createCriticalUserInteractionTrack(trace: Trace, uri: string) { | CODE |
| LOW | …c/plugins/dev.perfetto.StackSamples/profiling_track.ts | 203 | function renderProfilingDetailsPanel( | CODE |
| 1473 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 16 | CODE | |
| LOW | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 17 | CODE | |
| LOW | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 18 | CODE | |
| LOW | infra/ci/common_utils.py | 26 | CODE | |
| LOW | infra/perfetto-get.appspot.com/main.py | 15 | CODE | |
| LOW | tools/check_sql_metrics.py | 19 | CODE | |
| LOW | tools/check_sql_metrics.py | 20 | CODE | |
| LOW | tools/check_sql_metrics.py | 21 | CODE | |
| LOW | tools/test_gen_amalgamated.py | 16 | CODE | |
| LOW | tools/serialize_test_trace.py | 16 | CODE | |
| LOW | tools/serialize_test_trace.py | 17 | CODE | |
| LOW | tools/serialize_test_trace.py | 18 | CODE | |
| LOW | tools/export_power_profiles.py | 7 | CODE | |
| LOW | tools/compat.py | 16 | CODE | |
| LOW | tools/compat.py | 19 | CODE | |
| LOW | tools/compat.py | 21 | CODE | |
| LOW | tools/run_buildtools_binary.py | 17 | CODE | |
| LOW | tools/gen_clickhouse_bigtrace_protos.py | 17 | CODE | |
| LOW | tools/gn_utils.py | 18 | CODE | |
| LOW | tools/pull_ftrace_format_files.py | 16 | CODE | |
| LOW | tools/pull_ftrace_format_files.py | 18 | CODE | |
| LOW | tools/get_llvm_flags.py | 3 | CODE | |
| LOW | tools/diff_test_trace_processor.py | 16 | CODE | |
| LOW | tools/diff_test_trace_processor.py | 17 | CODE | |
| LOW | tools/diff_test_trace_processor.py | 18 | CODE | |
| LOW | tools/diff_test_trace_processor.py | 30 | CODE | |
| LOW | tools/setup_all_configs.py | 16 | CODE | |
| LOW | tools/setup_all_configs.py | 17 | CODE | |
| LOW | tools/setup_all_configs.py | 18 | CODE | |
| LOW | tools/release/release_perfetto.py | 18 | CODE | |
| LOW | test/stress_test/gen_configs_blob.py | 25 | CODE | |
| LOW | test/stress_test/gen_configs_blob.py | 25 | CODE | |
| LOW | test/stress_test/gen_configs_blob.py | 25 | CODE | |
| LOW | test/trace_processor/PRESUBMIT.py | 15 | CODE | |
| LOW | test/trace_processor/PRESUBMIT.py | 17 | CODE | |
| LOW | test/trace_processor/PRESUBMIT.py | 18 | CODE | |
| LOW | test/trace_processor/diff_tests/include_index.py | 19 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/power/tests.py | 16 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/power/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/power/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/power/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/codecs/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/codecs/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/codecs/tests.py | 17 | CODE | |
| LOW | …ace_processor/diff_tests/metrics/memory/android_ion.py | 16 | CODE | |
| LOW | …ssor/diff_tests/metrics/memory/android_systrace_lmk.py | 16 | CODE | |
| LOW | …r/diff_tests/metrics/memory/android_mem_by_priority.py | 16 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/memory/tests.py | 17 | CODE | |
| LOW | …ocessor/diff_tests/metrics/memory/android_mem_delta.py | 16 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/camera/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/camera/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/irq/tests.py | 16 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/irq/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/irq/tests.py | 17 | CODE | |
| LOW | test/trace_processor/diff_tests/metrics/irq/tests.py | 17 | CODE | |
| LOW | …st/trace_processor/diff_tests/metrics/webview/tests.py | 16 | CODE | |
| LOW | …st/trace_processor/diff_tests/metrics/webview/tests.py | 17 | CODE | |
| LOW | …st/trace_processor/diff_tests/metrics/webview/tests.py | 17 | CODE | |
| LOW | …_tests/metrics/frame_timeline/frame_timeline_metric.py | 16 | CODE | |
| LOW | …e_processor/diff_tests/metrics/frame_timeline/tests.py | 16 | CODE | |
| 501 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | ui/src/frontend/index.ts | 75 | // Time ───────────────────────────────────────────────────────────────────> | COMMENT |
| MEDIUM⚡ | ui/src/frontend/index.ts | 79 | // ├─► main() ───────────────────────────────────────────────────────┐ | COMMENT |
| MEDIUM⚡ | ui/src/frontend/index.ts | 82 | // │ ├─ Start CSS load (async) ──────┐ │ | COMMENT |
| MEDIUM⚡ | ui/src/frontend/index.ts | 84 | // │ └─ Register window.onload ───────┼──────────┐ │ | COMMENT |
| MEDIUM⚡ | ui/src/frontend/index.ts | 90 | // │ onCssLoaded() ◄──────┘ │ │ | COMMENT |
| MEDIUM⚡ | ui/src/frontend/index.ts | 100 | // │ onWindowLoaded() ◄──────┘ │ | COMMENT |
| MEDIUM⚡ | ui/src/frontend/index.ts | 104 | // └─────────────────────────────────────────────────────────────────┘ | COMMENT |
| MEDIUM | …s/dev.perfetto.DataExplorer/query_builder/widgets.scss | 692 | // ─── Two-column drag-and-drop layout (Dimensions | Values) ────────────────── | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 24 | // ┌─────────┐ ┌─────────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 26 | // │ │ └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 28 | // └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 29 | // ┌─────────┐ ┌─────────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 32 | // │ │ └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 33 | // └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 36 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 40 | // └─────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 41 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 44 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 48 | // └─────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 49 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 52 | // └─────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 67 | // ┌─────────┐ ┌─────────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 69 | // │ │ └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 70 | // │ │ ┌─────────┐ <- This gap has disappeared | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 71 | // └─────────┘ │ D │ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 72 | // ┌─────────┐ │ │ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 73 | // │ C │ └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 76 | // └─────────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 79 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 83 | // └─────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 84 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 88 | // └─────┘ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 89 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 92 | // ┌─────┐ | COMMENT |
| MEDIUM⚡ | ui/src/widgets/grid_layout.ts | 95 | // └─────┘ | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 99 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 101 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 211 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 216 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 277 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 280 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 301 | # ============================================================================== | COMMENT |
| MEDIUM | test/trace_processor/diff_tests/stdlib/pixel/tests.py | 305 | # ============================================================================== | COMMENT |
| MEDIUM⚡ | ai/evals/run_evals.py | 591 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | ai/evals/run_evals.py | 593 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 73 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 75 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 128 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 139 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 391 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 396 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 448 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 450 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 730 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 732 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 901 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 903 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 1119 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM | ai/evals/run_evals.py | 1121 | # ---------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 45 | // │ │ Mapping 3 │ └──────┬─────┘ | COMMENT |
| 52 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | test/trace_processor/diff_tests/stdlib/slices/tests.py | 198 | 4,"monitor contention with owner InputReader (1421) at void com.android.server.power.PowerManagerService.acqui | CODE |
| CRITICAL⚡ | test/trace_processor/diff_tests/stdlib/slices/tests.py | 199 | 4,"monitor contention with owner InputReader (1421) at void com.android.server.power.PowerManagerService.acqui | CODE |
| CRITICAL⚡ | test/trace_processor/diff_tests/stdlib/slices/tests.py | 200 | 5,"monitor contention with owner main (1204) at void com.android.server.am.ActivityManagerService.onWakefulnes | CODE |
| CRITICAL⚡ | test/trace_processor/diff_tests/stdlib/slices/tests.py | 201 | 5,"monitor contention with owner main (1204) at void com.android.server.am.ActivityManagerService.onWakefulnes | CODE |
| CRITICAL⚡ | test/trace_processor/diff_tests/stdlib/slices/tests.py | 202 | 6,"monitor contention with owner main (1204) at void com.android.server.am.ActivityManagerService.onWakefulnes | CODE |
| CRITICAL | test/trace_processor/diff_tests/stdlib/android/tests.py | 459 | "boolean com.android.server.am.ActivityManagerService.forceStopPackageLocked(java.lang.String, int, boolean, b | CODE |
| CRITICAL | test/trace_processor/diff_tests/stdlib/android/tests.py | 556 | 949,"void com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied()","int com.android.server | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 200 | if (element && element.tagName === 'DETAILS') { | CODE |
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 227 | if (hasNoTags || hasMatchingTag) { | CODE |
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 240 | while (sibling && sibling.tagName !== 'H2') { | CODE |
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 248 | h2.style.display = (activeTags.size === 0 || hasVisibleModule) ? '' : 'none'; | CODE |
| HIGH | tools/gen_grpc_build_gn.py | 40 | assert(is_linux && current_cpu == "x64") | CODE |
| HIGH | test/trace_processor/diff_tests/parser/json/tests.py | 186 | "args": { "arg_null": null, "another_int": -5 } | CODE |
| HIGH | test/trace_processor/diff_tests/parser/json/tests.py | 304 | "args": { "arg_null": null, "another_int": -5 } | CODE |
| HIGH | test/trace_processor/diff_tests/parser/json/tests.py | 1853 | "ts": null, | CODE |
| HIGH | test/trace_processor/diff_tests/parser/gecko/tests.py | 157 | "data": [{"flow": 7}, null, {"target": "btn"}, null], | CODE |
| HIGH | test/trace_processor/diff_tests/parser/gecko/tests.py | 228 | "prefix": [null, 0, 1, 1], | CODE |
| HIGH⚡ | …t/trace_processor/diff_tests/stdlib/intervals/tests.py | 588 | (0, 10, 'A', null), | CODE |
| HIGH⚡ | …t/trace_processor/diff_tests/stdlib/intervals/tests.py | 590 | (5, 10, null, 1), | CODE |
| HIGH⚡ | …t/trace_processor/diff_tests/stdlib/intervals/tests.py | 592 | (10, 5, null, 1), | CODE |
| HIGH⚡ | …t/trace_processor/diff_tests/stdlib/intervals/tests.py | 593 | (15, 5, null, 1) | CODE |
| HIGH | python/test/resolver_unittest.py | 148 | self.assertEqual(_cs_list([1, 2], fn, 'FALSE', sep), '(col = 1 || col = 2)') | CODE |
| HIGH | python/generators/trace_processor_table/serialize.py | 634 | if (value < 0 || value >= row_count()) {{ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 277 | // Step 1: Materialize track metadata | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 370 | // Step 2: Create shared depth table by joining with | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 384 | // Step 3: Query materialized table and create tracks | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1446 | // Step 2: Follow dumpData reference from the class object. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1458 | // Step 3: Read format from DumpData's fields. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1472 | // Step 4: Get DumpData's references — natives (long[]) and buffers (Object[]). | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1491 | // Step 5: Decode natives long[] via JSON. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1505 | // Step 6: Get buffers Object[] references — array index → byte[] object ID. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1523 | // Step 7: Build nativePtr → buffer object ID map. | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 86 | // Step 1: Materialize track metadata | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 133 | // Step 2: Create shared depth table for slice tracks with multiple trackIds | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 533 | // Step 1: Declaratively ensure mipmap table exists | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 545 | // Step 2: Declaratively fetch data from the table with buffered bounds | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 397 | // Step 1: Declaratively ensure mipmap tables exist | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 407 | // Step 2: Declaratively fetch data from the tables with buffered bounds | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 789 | // Step 1: Apply JOIN if we have columns to join | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 806 | // Step 2: Add computed columns on top if we have any | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 647 | // Step 0: Call onInit with a constant key | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 657 | // Step 1: Get the mipmap table (created once per SQL source + options) | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 672 | // Step 2: Calculate buffered bounds and fetch counter data | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 681 | // Step 3: Fetch counter data using QuerySlot | COMMENT |
| LOW | ui/src/base/classnames.ts | 24 | // NOTE: This function is optimized for efficiency. Be very careful when | COMMENT |
| LOW | include/perfetto/ext/base/murmur_hash.h | 187 | // NOTE: This function intentionally has no else branch for non-builtin types, | COMMENT |
| LOW | docs/visualization/deep-linking-to-perfetto-ui.md | 50 | ### Step 1: Open ui.perfetto.dev via window.open | COMMENT |
| LOW | docs/visualization/deep-linking-to-perfetto-ui.md | 62 | ### Step 2: Wait for the UI to be ready via PING/PONG | COMMENT |
| LOW | docs/visualization/deep-linking-to-perfetto-ui.md | 69 | ### Step 3: Post the trace data | COMMENT |
| LOW | docs/visualization/embedding-the-ui.md | 24 | ## Step 1: Add the iframe | COMMENT |
| LOW | docs/visualization/embedding-the-ui.md | 42 | ## Step 2: Do the PING/PONG handshake | COMMENT |
| LOW | docs/visualization/embedding-the-ui.md | 70 | ## Step 3: Post the trace | COMMENT |
| LOW⚡ | docs/design-docs/pprof-support.md | 122 | #### Step 1: String Table Parsing | COMMENT |
| LOW⚡ | docs/design-docs/pprof-support.md | 126 | #### Step 2: Mapping and Function Creation | COMMENT |
| LOW⚡ | docs/design-docs/pprof-support.md | 133 | #### Step 3: Location Processing | COMMENT |
| LOW⚡ | docs/design-docs/pprof-support.md | 140 | #### Step 4: Sample Processing | COMMENT |
| LOW | docs/learning-more/multi-machine-tracing.md | 79 | ### Step 1: Start `traced` on the host, listening on TCP | COMMENT |
| LOW | docs/learning-more/multi-machine-tracing.md | 114 | ### Step 2: Start `traced_probes` on the host | COMMENT |
| LOW | docs/learning-more/multi-machine-tracing.md | 131 | ### Step 3: Start `traced_relay` on the guest | COMMENT |
| LOW | docs/learning-more/multi-machine-tracing.md | 153 | ### Step 4: Start `traced_probes` on the guest | COMMENT |
| LOW | docs/learning-more/multi-machine-tracing.md | 166 | ### Step 5: Record a trace from the host | COMMENT |
| LOW | docs/learning-more/multi-machine-tracing.md | 200 | ### Step 6: Verify both machines are in the trace | COMMENT |
| LOW | docs/getting-started/periodic-trace-snapshots.md | 68 | ## Step 1: Start a ring-buffer trace | COMMENT |
| LOW | docs/getting-started/periodic-trace-snapshots.md | 206 | ## Step 2: Take a snapshot | COMMENT |
| LOW | docs/getting-started/periodic-trace-snapshots.md | 252 | ## Step 3: Pull and analyze a snapshot | COMMENT |
| LOW | …perfetto/workflows/android_memory/heap_profile_diff.md | 15 | ## Step 1: Load both traces into warm sessions and check available profiles | COMMENT |
| LOW | …perfetto/workflows/android_memory/heap_profile_diff.md | 40 | ## Step 2: Diff profile totals, functions, and callstacks | COMMENT |
| LOW | …perfetto/workflows/android_memory/heap_profile_diff.md | 59 | ## Step 3: Inspect callstacks and attribute in code | COMMENT |
| LOW | …ls/perfetto/workflows/android_memory/heap_dump_diff.md | 6 | ## Step 1: Load both dumps into warm sessions | COMMENT |
| LOW | …ls/perfetto/workflows/android_memory/heap_dump_diff.md | 19 | ## Step 2: Find which classes grew | COMMENT |
| LOW | …ls/perfetto/workflows/android_memory/heap_dump_diff.md | 42 | ## Step 3: Inspect the classes that grew | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | infra/git_mirror_bot/mirror_aosp_to_ghub_repo.py | 65 | # Create a git repo that mirrors both the upstream and the mirror repos. | COMMENT |
| MEDIUM | infra/ci/worker/worker_entrypoint.sh | 38 | # Create the restricted bridge for the sandbox container. | COMMENT |
| MEDIUM | infra/ci/worker/gce-startup-script.sh | 24 | # Create a scratch /tmp for checkout + build + cache. We don't care about data | COMMENT |
| MEDIUM | infra/luci/recipes/perfetto.py | 135 | # Create the CIPD package definition from the artifact path. | COMMENT |
| MEDIUM | tools/gen_grpc_build_gn.py | 29 | # This file is generated with the command: | COMMENT |
| MEDIUM | …sor/diff_tests/metrics/startup/android_startup_slow.py | 75 | # Create an unrelated task | COMMENT |
| MEDIUM | …rocessor/diff_tests/metrics/startup/android_startup.py | 61 | # Create an unrelated task | COMMENT |
| MEDIUM | …processor/diff_tests/parser/parsing/rss_stat_legacy.py | 31 | # Create a kernel "thread", which is a single-thread process child of kthreadd. | COMMENT |
| MEDIUM | …_processor/diff_tests/parser/parsing/rss_stat_mm_id.py | 30 | # Create a kernel "thread", which is a single-thread process child of kthreadd. | COMMENT |
| MEDIUM | …ssor/diff_tests/parser/parsing/rss_stat_mm_id_reuse.py | 36 | # Create a new thread which reuses the pid and mm struct. | COMMENT |
| MEDIUM | …ssor/diff_tests/parser/parsing/rss_stat_mm_id_clone.py | 37 | # Create a newtask event emulating vfork/posix_spawn (i.e. CLONE_VM and | COMMENT |
| MEDIUM | …f_tests/parser/process_tracking/reused_thread_print.py | 27 | # Create a parent process which will be forked below. | COMMENT |
| MEDIUM | …ests/parser/process_tracking/synth_process_tracking.py | 27 | # Create the first process (pid=10) with three threads(tids=10,11,12). | COMMENT |
| MEDIUM | …rser/process_tracking/process_parent_pid_tracking_2.py | 31 | # Create a multi-threaded process which will be forked below. | COMMENT |
| MEDIUM | …ser/process_tracking/process_tracking_short_lived_1.py | 26 | # Create a parent process which will be forked below. | COMMENT |
| MEDIUM | …ser/process_tracking/process_tracking_short_lived_2.py | 27 | # Create a parent process which will be forked below. | COMMENT |
| MEDIUM | …tests/parser/process_tracking/process_tracking_exec.py | 25 | # Create a parent process which will be forked below. | COMMENT |
| MEDIUM | …rser/process_tracking/process_parent_pid_tracking_1.py | 26 | # Create a multi-threaded process which will be forked below. | COMMENT |
| MEDIUM | …race/protos/perfetto/bigtrace/orchestrator_pb2_grpc.py | 86 | # This class is part of an EXPERIMENTAL API. | COMMENT |
| MEDIUM | python/test/api_integrationtest.py | 372 | # Create a directory structure for the package. The root of the | COMMENT |
| MEDIUM⚡ | python/test/api_integrationtest.py | 617 | # Create a custom resolver that returns a single trace with known metadata | STRING |
| MEDIUM | python/test/api_integrationtest.py | 651 | # Create a two-level resolver to test metadata merging | STRING |
| MEDIUM | python/generators/trace_processor_table/util.py | 253 | # Create a mapping from the table to a "parsed" version of the table. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | infra/luci/recipes.py | 154 | CODE | |
| LOW | infra/luci/recipes/perfetto.py | 239 | CODE | |
| LOW | tools/test_gen_amalgamated.py | 72 | CODE | |
| LOW | tools/export_power_profiles.py | 12 | CODE | |
| LOW | tools/run_buildtools_binary.py | 29 | CODE | |
| LOW | tools/sync_android_to_github.py | 274 | CODE | |
| LOW | tools/gn_utils.py | 523 | CODE | |
| LOW | tools/download_changed_screenshots.py | 47 | CODE | |
| LOW | tools/check_sql_modules.py | 139 | CODE | |
| LOW | tools/check_sql_modules.py | 358 | CODE | |
| LOW | tools/diff_test_trace_processor.py | 56 | CODE | |
| LOW | tools/setup_all_configs.py | 70 | CODE | |
| LOW | test/synth_common.py | 96 | CODE | |
| LOW | gn/standalone/run_java_protoc.py | 32 | CODE | |
| LOW | gn/standalone/glob.py | 35 | CODE | |
| LOW | python/setup.py | 7 | CODE | |
| LOW | python/tools/heap_profile.py | 150 | CODE | |
| LOW | python/tools/record_android_trace.py | 243 | CODE | |
| LOW | python/tools/roll_pnpm.py | 68 | CODE | |
| LOW | python/tools/check_imports.py | 368 | CODE | |
| LOW | python/perfetto/bigtrace_clickhouse/bigtrace_query.py | 34 | CODE | |
| LOW | python/perfetto/bigtrace_clickhouse/bigtrace_query.py | 66 | CODE | |
| LOW | python/perfetto/trace_processor/shell.py | 39 | CODE | |
| LOW | python/perfetto/trace_processor/http.py | 49 | CODE | |
| LOW | python/perfetto/trace_uri_resolver/resolver.py | 140 | CODE | |
| LOW | python/perfetto/trace_uri_resolver/resolver.py | 188 | CODE | |
| LOW | python/test/api_integrationtest.py | 700 | CODE | |
| LOW | python/generators/diff_tests/runner.py | 83 | CODE | |
| LOW | python/generators/diff_tests/runner.py | 146 | CODE | |
| LOW | python/generators/diff_tests/trace_generator.py | 185 | CODE | |
| LOW | python/generators/diff_tests/testing.py | 187 | CODE | |
| LOW | python/generators/sql_processing/stdlib_parser.py | 45 | CODE | |
| LOW | python/generators/sql_processing/stdlib_tags.py | 323 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 54 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 121 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 159 | CODE | |
| LOW | ai/evals/run_evals.py | 165 | CODE | |
| LOW | ai/evals/run_evals.py | 941 | CODE | |
| LOW | ai/evals/run_evals.py | 1017 | CODE | |
| LOW | ai/evals/run_evals.py | 1216 | CODE | |
| LOW | ai/evals/run_evals.py | 205 | CODE | |
| LOW | ai/evals/run_evals.py | 278 | CODE | |
| LOW | ai/evals/run_evals.py | 344 | CODE | |
| LOW | …/trace_processor/plugins/wattson/gen_wattson_curves.py | 119 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/sync_android_to_github.py | 356 | except subprocess.CalledProcessError: | CODE |
| HIGH | tools/write_version_header.py | 73 | except subprocess.CalledProcessError: | CODE |
| HIGH | python/example.py | 60 | except Exception: | CODE |
| HIGH | python/tools/update_permalink.py | 136 | except: | CODE |
| HIGH | python/tools/batch_trace_processor_shell.py | 133 | except KeyboardInterrupt: | CODE |
| HIGH | python/perfetto/trace_processor/process_tree.py | 144 | except (ProcessLookupError, PermissionError): | CODE |
| HIGH | ai/evals/run_evals.py | 573 | except FileNotFoundError: | CODE |
| HIGH | ai/evals/run_evals.py | 173 | except json.JSONDecodeError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 277 | // Step 1: Materialize track metadata | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 370 | // Step 2: Create shared depth table by joining with | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 384 | // Step 3: Query materialized table and create tracks | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1446 | // Step 2: Follow dumpData reference from the class object. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1458 | // Step 3: Read format from DumpData's fields. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1472 | // Step 4: Get DumpData's references — natives (long[]) and buffers (Object[]). | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1491 | // Step 5: Decode natives long[] via JSON. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1505 | // Step 6: Get buffers Object[] references — array index → byte[] object ID. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1523 | // Step 7: Build nativePtr → buffer object ID map. | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 86 | // Step 1: Materialize track metadata | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 133 | // Step 2: Create shared depth table for slice tracks with multiple trackIds | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 533 | // Step 1: Declaratively ensure mipmap table exists | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 545 | // Step 2: Declaratively fetch data from the table with buffered bounds | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 397 | // Step 1: Declaratively ensure mipmap tables exist | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 407 | // Step 2: Declaratively fetch data from the tables with buffered bounds | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 789 | // Step 1: Apply JOIN if we have columns to join | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 806 | // Step 2: Add computed columns on top if we have any | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 647 | // Step 0: Call onInit with a constant key | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 657 | // Step 1: Get the mipmap table (created once per SQL source + options) | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 672 | // Step 2: Calculate buffered bounds and fetch counter data | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 681 | // Step 3: Fetch counter data using QuerySlot | COMMENT |
| LOW | ui/src/base/string_utils.ts | 90 | // The purpose of this function is to use in simple comparisons, to escape | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/src/trace_processor/engine.ts | 557 | // Example usage: | COMMENT |
| LOW | ui/src/trace_processor/query_result.ts | 422 | // Example usage: | COMMENT |
| LOW | ui/src/base/utils.ts | 24 | // Example usage: | COMMENT |
| LOW | ui/src/base/utils.ts | 96 | // Example usage: | COMMENT |
| LOW | ui/src/base/async_memo.ts | 31 | * ## Example usage: | COMMENT |
| LOW | tools/repackage_llvm_demangler.sh | 23 | # Usage example: | COMMENT |
| LOW | tools/print_descriptor.py | 23 | # Example usage: | COMMENT |
| LOW | …ude/perfetto/tracing/track_event_interned_data_index.h | 34 | // Example usage | COMMENT |
| LOW | include/perfetto/trace_processor/iterator.h | 36 | // Example usage: | COMMENT |
| LOW | include/perfetto/ext/base/string_utils.h | 282 | // Example usage: | COMMENT |
| LOW | include/perfetto/ext/base/intrusive_tree.h | 32 | // Usage example: | COMMENT |
| LOW | include/perfetto/ext/base/intrusive_list.h | 32 | // Usage example: | COMMENT |
| LOW | include/perfetto/protozero/proto_decoder.h | 483 | // Example usage: | COMMENT |
| LOW | include/perfetto/public/pb_macros.h | 32 | // Example usage: | COMMENT |
| LOW | include/perfetto/public/pb_decoder.h | 26 | // Example usage: | COMMENT |
| LOW | src/trace_processor/core/util/slab.h | 38 | // Usage example: | COMMENT |
| LOW | src/trace_processor/core/util/flex_vector.h | 54 | // Usage example: | COMMENT |
| LOW | src/trace_processor/util/simple_json_serializer.h | 47 | // Usage example: | COMMENT |
| LOW | src/trace_processor/util/simple_json_serializer.h | 83 | // Usage example: | COMMENT |
| LOW | src/trace_processor/util/simple_json_serializer.h | 116 | // Usage example: | COMMENT |
| LOW | src/trace_processor/util/simple_json_parser.h | 54 | // Example usage: | COMMENT |
| LOW | src/trace_processor/importers/common/metadata_tracker.h | 36 | // Example usage: | COMMENT |
| LOW | src/trace_processor/importers/common/metadata_tracker.h | 42 | // Example usage: | COMMENT |
| LOW | src/profiling/common/proc_cmdline.h | 39 | // Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …rocessor/diff_tests/parser/smoke/tests_sched_events.py | 0 | select ts, cpu, dur, end_state, priority, tid from sched join thread using(utid) order by ts limit 10; | STRING |
| HIGH | …/trace_processor/diff_tests/parser/smoke/tests_json.py | 0 | select ts, cpu, dur, end_state, priority, tid from sched join thread using(utid) order by ts limit 10; | STRING |
| HIGH | test/trace_processor/diff_tests/parser/smoke/tests.py | 0 | select ts, cpu, dur, end_state, priority, tid from sched join thread using(utid) order by ts limit 10; | STRING |
| HIGH | test/trace_processor/diff_tests/parser/fuchsia/tests.py | 0 | select ts, cpu, dur, end_state, priority, tid from sched join thread using(utid) order by ts limit 10; | STRING |
| HIGH | …diff_tests/parser/android/tests_inputmethod_service.py | 0 | include perfetto module android.winscope.inputmethod; select count(*) from __intrinsic_inputmethod_manager_service where | STRING |
| HIGH | …diff_tests/parser/android/tests_inputmethod_clients.py | 0 | include perfetto module android.winscope.inputmethod; select count(*) from __intrinsic_inputmethod_manager_service where | STRING |
| HIGH | …ts/parser/android/tests_inputmethod_manager_service.py | 0 | include perfetto module android.winscope.inputmethod; select count(*) from __intrinsic_inputmethod_manager_service where | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ui/src/plugins/dev.perfetto.Llm/config.ts | 25 | // - agentic models can be used converstaionally and use tools. | COMMENT |
| MEDIUM⚡ | ui/src/plugins/dev.perfetto.Intelletto/chat_panel.ts | 52 | // model is unavailable or undefined, we fall back to the first agentic | COMMENT |
| MEDIUM⚡ | ui/src/plugins/dev.perfetto.Intelletto/chat_panel.ts | 53 | // model. If no agentic models are registered, messages cannot be sent. | COMMENT |
| MEDIUM⚡ | ui/src/plugins/dev.perfetto.Intelletto/chat_panel.ts | 61 | // valididating it actually exists, OR the first agentic model otherwise. | COMMENT |
| MEDIUM | ui/src/plugins/dev.perfetto.Intelletto/chat_panel.ts | 72 | // agentic models. | COMMENT |
| MEDIUM | ui/src/plugins/dev.perfetto.Intelletto/chat_panel.ts | 223 | // All models with the 'agentic' role, for the picker dropdown. | COMMENT |
| MEDIUM | docs/getting-started/periodic-trace-snapshots.md | 86 | # CPU frequency (event-driven + polling fallback). | COMMENT |
| MEDIUM | docs/getting-started/periodic-trace-snapshots.md | 151 | # CPU frequency (event-driven + polling fallback). | COMMENT |
| MEDIUM | src/android_stats/perfetto_atoms.h | 114 | // kCmd* guardrails. | COMMENT |
| MEDIUM | src/android_stats/perfetto_atoms.h | 122 | // perfetto_cmd. Removed as perfetto no longer manages stateful guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | python/perfetto/batch_trace_processor/api.py | 218 | Executes the provided SQL statement (returning a single row). The execution happens in parallel across all the trac | STRING |
| HIGH | python/perfetto/batch_trace_processor/api.py | 235 | Executes the provided SQL statement and flattens the result. The execution happens in parallel across all the trace | STRING |
| HIGH | python/perfetto/batch_trace_processor/api.py | 275 | Executes the provided SQL statement across all traces. The execution happens in parallel across all the traces. | STRING |
| HIGH | python/perfetto/batch_trace_processor/api.py | 293 | Executes the provided SQL statement and flattens the result. The execution happens in parallel across all the trace | STRING |
| HIGH | python/perfetto/batch_trace_processor/api.py | 318 | Executes the provided SQL statement (returning a single row). The execution happens in parallel across all the trac | STRING |
| HIGH | python/perfetto/batch_trace_processor/api.py | 401 | Executes the provided function and flattens the result into a Polars dataframe. The execution happens in parall | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …lugins/dev.perfetto.RecordTraceV2/recording_manager.ts | 196 | // detection robust to any setting change without each widget having to | COMMENT |
| MEDIUM | ui/src/base/events.ts | 16 | // using void). API-wise it's more robust to wrap arguments in an interface, | COMMENT |
| MEDIUM | …ests/parser/process_tracking/synth_process_tracking.py | 30 | # leverage only the /proc/pid scraper. | COMMENT |
| MEDIUM | python/generators/diff_tests/runner.py | 236 | # code is part of the expectation, not a test harness failure. | COMMENT |
| MEDIUM | include/perfetto/tracing/traced_proto.h | 48 | // TracedProto also provides a seamless integration with writing untyped | COMMENT |
| MEDIUM | include/perfetto/tracing/internal/data_source_type.h | 272 | // kernel scheduler. The tracing service is robust against data commit | COMMENT |
| MEDIUM | include/perfetto/ext/base/string_utils.h | 289 | // - Makes the code more robust in case of snprintf truncations (len() and | COMMENT |
| MEDIUM⚡ | ai/evals/run_evals.py | 592 | # Transcript analysis (harness-neutral) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | infra/ci/frontend/main.py | 280 | except Exception as e: | CODE |
| LOW | tools/sync_android_to_github.py | 223 | except Exception as e: | CODE |
| LOW | tools/sync_android_to_github.py | 615 | except Exception as e: | STRING |
| LOW | tools/sync_android_to_github.py | 634 | except Exception as e: | STRING |
| MEDIUM | tools/sync_android_to_github.py | 111 | def get_original_branch(): | CODE |
| LOW | tools/check_sql_modules.py | 350 | except Exception as e: | CODE |
| MEDIUM | gn/standalone/build_tool_wrapper.py | 69 | print('Error running: "%s" (%s)' % (args.cmd[0], e.strerror)) | CODE |
| LOW | python/example.py | 60 | except Exception: | CODE |
| LOW | python/tools/cpu_profile.py | 72 | except Exception as error: | CODE |
| LOW | python/tools/cpu_profile.py | 401 | except Exception as error: | CODE |
| LOW | python/tools/cpu_profile.py | 458 | except Exception as error: | CODE |
| LOW | python/tools/cpu_profile.py | 478 | except Exception as error: | CODE |
| LOW | python/tools/cpu_profile.py | 500 | except Exception as error: | CODE |
| MEDIUM | python/perfetto/tools/download_trace.py | 131 | print('Error: %s' % e, file=sys.stderr) | CODE |
| LOW | …perfetto/bigtrace_clickhouse/bigtrace_output_schema.py | 38 | except Exception as e: | CODE |
| LOW | python/perfetto/batch_trace_processor/api.py | 480 | except Exception as ex: | CODE |
| LOW | ai/evals/run_evals.py | 844 | except Exception as ex: # pylint: disable=broad-except | CODE |
| LOW | ai/evals/run_evals.py | 880 | except Exception as ex: # pylint: disable=broad-except | CODE |
| MEDIUM | …etto/workflows/android_memory/scripts/cluster_paths.py | 63 | print("Error: Input CSV is empty.") | CODE |
| MEDIUM | …workflows/android_memory/scripts/summarize_clusters.py | 43 | print("Error: Invalid or empty clustered CSV.") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …c/plugins/dev.perfetto.WidgetsPage/demos/popup_demo.ts | 28 | const text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod | CODE |
| LOW | …c/plugins/dev.perfetto.WidgetsPage/demos/popup_demo.ts | 28 | const text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod | CODE |
| LOW | …plugins/dev.perfetto.WidgetsPage/demos/callout_demo.ts | 38 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' + | CODE |
| LOW | …plugins/dev.perfetto.WidgetsPage/demos/callout_demo.ts | 38 | 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ' + | CODE |
| LOW | …/dev.perfetto.WidgetsPage/demos/text_paragraph_demo.ts | 37 | text: `Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW | …/dev.perfetto.WidgetsPage/demos/text_paragraph_demo.ts | 37 | text: `Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW | …/dev.perfetto.WidgetsPage/demos/text_paragraph_demo.ts | 58 | text: `Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW | …/dev.perfetto.WidgetsPage/demos/text_paragraph_demo.ts | 58 | text: `Lorem ipsum dolor sit amet, consectetur adipiscing | CODE |
| LOW | …dev.perfetto.WidgetsPage/demos/middle_ellipsis_demo.ts | 35 | text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …dev.perfetto.WidgetsPage/demos/middle_ellipsis_demo.ts | 35 | text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit', | CODE |
| LOW | …plugins/dev.perfetto.WidgetsPage/demos/tooltip_demo.ts | 22 | const text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod | CODE |
| LOW | …plugins/dev.perfetto.WidgetsPage/demos/tooltip_demo.ts | 22 | const text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod | CODE |
| LOW | ui/src/public/omnibox.ts | 85 | * const name = await omnibox.prompt('Enter your name', 'John Doe'); | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | infra/perfetto-get.appspot.com/appengine_config.py | 3 | # Set PATH to your libraries folder. | COMMENT |
| LOW | tools/sync_android_to_github.py | 424 | am_path): # Check if CHERRY_PICK_HEAD is gone | CODE |
| LOW | tools/get_llvm_flags.py | 68 | # Print output in GN-compatible format | COMMENT |
| LOW | tools/check_sql_modules.py | 422 | # Check if from an explicitly included module | COMMENT |
| LOW | python/run_tests.py | 40 | # Set paths to trace_processor_shell and root directory as environment | COMMENT |
| LOW | python/tools/check_imports.py | 326 | # Check if there is a dependency declared by plugins, via | COMMENT |
| LOW | python/perfetto/bigtrace_clickhouse/bigtrace_query.py | 94 | # Output values directly from the row to be typed by | COMMENT |
| LOW | …ithub/workflows/require-two-reviewers-for-fork-prs.yml | 75 | # Check if user is a member of Google organization | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | examples/sdk/CMakeLists.txt | 23 | # Define a static library for Perfetto. In this example, we expect the SDK | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | gn/standalone/wasm_typescript_declaration.d.ts | 79 | print(s: string): void; | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/sync_android_to_github.py | 48 | CODE | |
| LOW | tools/pull_ftrace_format_files.py | 38 | CODE | |
| LOW | python/perfetto/trace_processor/api.py | 114 | CODE | |
| LOW | …race/protos/perfetto/bigtrace/orchestrator_pb2_grpc.py | 96 | CODE |