Production-grade client-side tracing, profiling, and analysis for complex software systems.
This report presents the forensic synthetic code analysis of google/perfetto, a C++ project with 6,213 GitHub stars. SynthScan v2.0 examined 741,208 lines of code across 4025 source files, recording 5739 pattern matches distributed across 21 syntactic categories. The overall adjusted score of 7.8 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 5739 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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/flow_types.ts | 1 | // Copyright (C) 2024 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 url?: string; | 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/flow_manager.ts | 1 | // Copyright (C) 2020 The Android Open Source Project | COMMENT |
| LOW | ui/src/core/flow_manager.ts | 181 | // - In the case of aysnc tracks however the mapping is | 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 | 21 | type SerializedAppState, | 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 |
| 3332 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 | 112 | async function defineMaxLayoutDepthSqlFunction(engine: Engine): Promise<void> { | CODE |
| LOW | ui/src/core/load_trace.ts | 379 | function showStartupCommandIssuesDialog( | CODE |
| LOW | ui/src/core/load_trace.ts | 457 | async function computeTraceReliableRangeStart(engine: Engine): Promise<time> { | CODE |
| LOW | ui/src/core/load_trace.ts | 691 | 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 | 129 | 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_converter.ts | 95 | export function convertTraceToJsonAndDownload(trace: Blob): Promise<void> { | CODE |
| LOW | ui/src/frontend/trace_converter.ts | 103 | export function convertTraceToSystraceAndDownload(trace: Blob): Promise<void> { | CODE |
| LOW | ui/src/frontend/trace_converter.ts | 131 | export function convertTraceToPprofAndDownload( | 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 | 620 | 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 | ui/src/plugins/dev.perfetto.LinuxPerf/index.ts | 601 | async function selectPerfTracksIfSingleProcess(trace: Trace) { | CODE |
| LOW | ui/src/plugins/dev.perfetto.LinuxPerf/index.ts | 615 | function getSelectedProcessTrackTags(currentSelection: AreaSelection) { | CODE |
| LOW | ui/src/plugins/dev.perfetto.LinuxPerf/index.ts | 633 | function getSelectedThreadTrackTags(currentSelection: AreaSelection) { | CODE |
| LOW | …src/plugins/dev.perfetto.CpuProfile/profiling_track.ts | 188 | function renderProfilingDetailsPanel( | 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 | 20 | export function buildOomeCallstackMetrics( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 563 | function flamegraphMetricsForHeapProfile( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 659 | function getHeapGraphDuplicateObjectsView( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 674 | function getHeapGraphNodeOptionalActions( | CODE |
| LOW | …dev.perfetto.HeapProfile/heap_profile_details_panel.ts | 704 | function getHeapGraphRootOptionalActions( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 744 | export async function fetchShortestPathFromRoot( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1755 | export async function getObjectsByFlamegraphSelection( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 2089 | export async function enrichFieldsWithReachable( | CODE |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 2114 | export async function enrichArrayElemsWithReachable( | CODE |
| LOW | …ns/com.android.HeapDumpExplorer/views/overview_view.ts | 59 | function makeDuplicateBitmapSchema(navigate: NavFn): SchemaRegistry { | CODE |
| LOW | …ns/com.android.HeapDumpExplorer/views/overview_view.ts | 146 | function makeDuplicateStringSchema(navigate: NavFn): SchemaRegistry { | CODE |
| LOW | …gins/dev.perfetto.Memscope/sessions/profile_session.ts | 129 | function buildProcessProfileConfig( | CODE |
| LOW | ui/src/plugins/dev.perfetto.Memscope/views/dashboard.ts | 43 | 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 | 68 | function uriForActiveCPUCountTrack(cpuType?: CPUType): string { | CODE |
| LOW | ui/src/plugins/com.meta.GpuCompute/details.ts | 519 | export async function fetchSelectedKernelMetricData( | CODE |
| LOW | …ugins/com.meta.GpuCompute/section/workload_analysis.ts | 17 | export function registerWorkloadAnalysisSection(reg: SectionRegistry): void { | 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 | …c/plugins/dev.perfetto.Frames/expected_frames_track.ts | 25 | export function createExpectedFramesTrack( | CODE |
| 1343 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/git_rename_branch.py | 5 | CODE | |
| LOW | tools/git_sync_stack.py | 5 | CODE | |
| LOW | tools/git_sync_stack.py | 5 | CODE | |
| LOW | tools/git_sync_stack.py | 6 | 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/git_update_all.py | 4 | CODE | |
| LOW | tools/git_update_stack.py | 4 | CODE | |
| LOW | tools/git_update_stack.py | 4 | CODE | |
| LOW | tools/git_update_stack.py | 5 | 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 | |
| 506 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⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 45 | // │ │ Mapping 3 │ └──────┬─────┘ | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 49 | // │ │ └────────────┬────────┘ | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 51 | // │ └────────────────┘ | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 52 | // └──────────────────────────────────────────────────────→ address | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 73 | // │ │ │ │ │ │ ├──────┼─────┘ | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 77 | // │ ┊ │ ├────┼───────┼─┴──────┘ ┊ | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 79 | // │ ┊ └───┴────┴───────┘ ┊ ┊ ┊ | COMMENT |
| MEDIUM⚡ | …/trace_processor/importers/etm/virtual_address_space.h | 81 | // └─┴──┴───┴────┴───────┴─┴──────┴─────┴──────────────→ address | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 107 | // ── Cflag index constants ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 139 | // ── Named bitfield struct ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 176 | // ── Indexed accessor ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 190 | // ── Compile-time cflag pinning ────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 368 | // ── Position / length / index typedefs ─────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 437 | // ── Span flags ─────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 499 | // ── Custom include ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 525 | // ── _with_dialect API gate ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 552 | // ── Token category ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 570 | // ── Macro invocation style ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 582 | // ── Types used by the parser vtable ───────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 607 | // ── Dialect template (static dialect data) ──────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 688 | // ── Configured dialect handle ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.h | 700 | // ── Dynamic dialect loading ─────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.c | 5486 | // ── Configuration ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.c | 5489 | // ── Callback registration ────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …rocessor/perfetto_sql/syntaqlite/syntaqlite_perfetto.c | 5493 | // ── Per-invocation state (set before callback, cleared after) ────────── | COMMENT |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | infra/ci/frontend/main.py | 265 | 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 |
| MEDIUM | tools/git_prune_all.py | 44 | print(f"Error: {e}", file=sys.stderr) | CODE |
| LOW | tools/git_prune_all.py | 46 | except Exception as e: | CODE |
| LOW | tools/git_prune_all.py | 73 | except Exception as e: | CODE |
| LOW | tools/git_prune_all.py | 138 | except Exception as e: | CODE |
| MEDIUM | tools/git_prune_all.py | 139 | print(f"Error updating config for '{child}': {e}", file=sys.stderr) | CODE |
| MEDIUM | tools/git_prune_all.py | 156 | print(f"Error switching to '{new_parent}': {e}", file=sys.stderr) | CODE |
| LOW | tools/git_prune_all.py | 177 | except Exception as e: | CODE |
| MEDIUM | tools/git_new_branch.py | 36 | print('Error: --current-parent and --parent are mutually exclusive.') | CODE |
| MEDIUM | tools/git_new_branch.py | 45 | print('Error: Unable to determine the current branch.') | CODE |
| MEDIUM | tools/git_set_parent.py | 34 | print("Error: Cannot determine target branch.", file=sys.stderr) | CODE |
| MEDIUM | tools/git_set_parent.py | 41 | print(f"Error: Branch '{parent_branch}' does not exist.", file=sys.stderr) | CODE |
| LOW | tools/gen_stdlib_docs_json.py | 107 | except Exception as e: | CODE |
| MEDIUM | tools/gen_stdlib_docs_json.py | 108 | print(f"Error generating docs JSON: {e}", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_rename_branch.py | 43 | print("Error: Cannot determine branch to rename.", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_rename_branch.py | 48 | print(f"Error: Branch '{old_name}' does not exist.", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_rename_branch.py | 51 | print(f"Error: New name is the same as the old name.", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_rename_branch.py | 54 | print(f"Error: Branch '{new_name}' already exists.", file=sys.stderr) | CODE |
| LOW | tools/check_sql_modules.py | 325 | except Exception as e: | CODE |
| LOW | tools/git_sync_stack.py | 40 | except Exception as e: | CODE |
| MEDIUM⚡ | tools/git_sync_stack.py | 77 | print('Error: Cannot determine target branch.', file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_sync_stack.py | 85 | print(f"Error: Target branch '{start_branch}' not local.", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_sync_stack.py | 94 | print(f"Error determining stack order: {e}", file=sys.stderr) | CODE |
| MEDIUM⚡ | tools/git_sync_stack.py | 98 | print('Error: Could not determine stack branches.', file=sys.stderr) | CODE |
| MEDIUM | tools/git_sync_stack.py | 149 | print(f'Error: Pushing {branch} failed.', file=sys.stderr) | CODE |
| LOW | tools/git_sync_stack.py | 184 | except Exception as e: | CODE |
| MEDIUM | tools/git_sync_stack.py | 193 | print('Error: One or more errors occurred.', file=sys.stderr) | CODE |
| MEDIUM | tools/git_goto_child.py | 33 | print("Error: Cannot determine target branch.", file=sys.stderr) | CODE |
| MEDIUM | tools/git_update_all.py | 33 | print(f"Error: {e}", file=sys.stderr) | CODE |
| LOW | tools/git_update_all.py | 36 | except Exception as e: | CODE |
| LOW | tools/git_update_all.py | 65 | except Exception as e: | CODE |
| LOW | tools/git_update_all.py | 86 | except Exception as e: | CODE |
| MEDIUM | tools/git_update_stack.py | 41 | print("Error: Cannot determine target branch.", file=sys.stderr) | CODE |
| MEDIUM | tools/git_update_stack.py | 57 | print(f"Error determining stack order (Cycle?): {e}", file=sys.stderr) | CODE |
| LOW | tools/git_update_stack.py | 87 | except Exception as e: | CODE |
| LOW | tools/git_update_stack.py | 108 | except Exception as e: | CODE |
| MEDIUM | tools/git_goto_parent.py | 28 | print("Error: Cannot determine target branch.", file=sys.stderr) | 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 |
| MEDIUM⚡ | python/tools/git_utils.py | 36 | print(f"Error running: {' '.join(cmd)}", file=sys.stderr) | CODE |
| MEDIUM⚡ | python/tools/git_utils.py | 45 | print(f"Error: '{executable}' not found.", file=sys.stderr) | CODE |
| LOW⚡ | python/tools/git_utils.py | 47 | except Exception as e: | CODE |
| MEDIUM⚡ | python/tools/git_utils.py | 48 | print(f"Error running {' '.join(cmd)}: {e}", file=sys.stderr) | CODE |
| LOW | python/tools/git_utils.py | 70 | 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 |
| 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 |
|---|---|---|---|---|
| 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 | 319 | "boolean com.android.server.am.ActivityManagerService.forceStopPackageLocked(java.lang.String, int, boolean, b | CODE |
| CRITICAL | test/trace_processor/diff_tests/stdlib/android/tests.py | 416 | 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 | 186 | if (element && element.tagName === 'DETAILS') { | CODE |
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 213 | if (hasNoTags || hasMatchingTag) { | CODE |
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 226 | while (sibling && sibling.tagName !== 'H2') { | CODE |
| HIGH | infra/perfetto.dev/src/gen_stdlib_docs_md.py | 234 | 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⚡ | …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 | ui/src/test/chrome_scroll_jank_plugin.test.ts | 60 | // Step 1: Find the ID of the slice. | COMMENT |
| LOW | ui/src/test/chrome_scroll_jank_plugin.test.ts | 71 | // Step 2: Select the slice. | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 265 | // Step 1: Materialize track metadata | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 346 | // Step 2: Create shared depth table by joining with | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 360 | // Step 3: Query materialized table and create tracks | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1530 | // Step 2: Follow dumpData reference from the class object. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1542 | // Step 3: Read format from DumpData's fields. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1556 | // Step 4: Get DumpData's references — natives (long[]) and buffers (Object[]). | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1575 | // Step 5: Decode natives long[] via JSON. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1587 | // Step 6: Get buffers Object[] references — array index → byte[] object ID. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1605 | // Step 7: Build nativePtr → buffer object ID map. | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 91 | // Step 1: Materialize track metadata | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 127 | // Step 2: Create shared depth table for slice tracks with multiple trackIds | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 525 | // Step 1: Declaratively ensure mipmap table exists | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 537 | // Step 2: Declaratively fetch data from the table with buffered bounds | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 392 | // Step 1: Declaratively ensure mipmap tables exist | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 402 | // Step 2: Declaratively fetch data from the tables with buffered bounds | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 791 | // Step 1: Apply JOIN if we have columns to join | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 808 | // Step 2: Add computed columns on top if we have any | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 649 | // Step 0: Call onInit with a constant key | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 659 | // Step 1: Get the mipmap table (created once per SQL source + options) | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 674 | // Step 2: Calculate buffered bounds and fetch counter data | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 683 | // 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 | 205 | ## Step 2: Take a snapshot | COMMENT |
| LOW | docs/getting-started/periodic-trace-snapshots.md | 251 | ## Step 3: Pull and analyze a snapshot | 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 | 322 | # Create a directory structure for the package. The root of the | COMMENT |
| MEDIUM⚡ | python/test/api_integrationtest.py | 567 | # Create a custom resolver that returns a single trace with known metadata | STRING |
| MEDIUM | python/test/api_integrationtest.py | 601 | # 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 | 235 | 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/git_prune_all.py | 24 | CODE | |
| LOW | tools/gn_utils.py | 523 | CODE | |
| LOW | tools/download_changed_screenshots.py | 58 | CODE | |
| LOW | tools/check_sql_modules.py | 140 | CODE | |
| LOW | tools/check_sql_modules.py | 333 | CODE | |
| LOW | tools/check_sql_modules.py | 585 | CODE | |
| LOW | tools/check_sql_modules.py | 622 | CODE | |
| LOW | tools/git_sync_stack.py | 47 | CODE | |
| LOW | tools/git_goto_child.py | 20 | CODE | |
| LOW | tools/diff_test_trace_processor.py | 56 | CODE | |
| LOW | tools/git_update_all.py | 21 | CODE | |
| LOW | tools/git_update_stack.py | 25 | CODE | |
| LOW | tools/setup_all_configs.py | 70 | CODE | |
| LOW | test/synth_common.py | 95 | 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/check_imports.py | 369 | CODE | |
| LOW | python/tools/git_utils.py | 296 | 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 | 48 | CODE | |
| LOW | python/perfetto/trace_uri_resolver/resolver.py | 140 | CODE | |
| LOW | python/perfetto/trace_uri_resolver/resolver.py | 188 | 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 | 64 | CODE | |
| LOW | python/generators/sql_processing/stdlib_tags.py | 335 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 54 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 515 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 121 | CODE | |
| LOW | python/generators/sql_processing/docs_parse.py | 159 | CODE | |
| LOW | …/trace_processor/plugins/wattson/gen_wattson_curves.py | 119 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ui/src/test/chrome_scroll_jank_plugin.test.ts | 60 | // Step 1: Find the ID of the slice. | COMMENT |
| LOW | ui/src/test/chrome_scroll_jank_plugin.test.ts | 71 | // Step 2: Select the slice. | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 265 | // Step 1: Materialize track metadata | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 346 | // Step 2: Create shared depth table by joining with | COMMENT |
| LOW | …/src/plugins/dev.perfetto.TraceProcessorTrack/index.ts | 360 | // Step 3: Query materialized table and create tracks | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1530 | // Step 2: Follow dumpData reference from the class object. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1542 | // Step 3: Read format from DumpData's fields. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1556 | // Step 4: Get DumpData's references — natives (long[]) and buffers (Object[]). | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1575 | // Step 5: Decode natives long[] via JSON. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1587 | // Step 6: Get buffers Object[] references — array index → byte[] object ID. | COMMENT |
| LOW | ui/src/plugins/com.android.HeapDumpExplorer/queries.ts | 1605 | // Step 7: Build nativePtr → buffer object ID map. | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 91 | // Step 1: Materialize track metadata | COMMENT |
| LOW | ui/src/plugins/dev.perfetto.TrackEvent/index.ts | 127 | // Step 2: Create shared depth table for slice tracks with multiple trackIds | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 525 | // Step 1: Declaratively ensure mipmap table exists | COMMENT |
| LOW | …ins/dev.perfetto.ProcessSummary/group_summary_track.ts | 537 | // Step 2: Declaratively fetch data from the table with buffered bounds | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 392 | // Step 1: Declaratively ensure mipmap tables exist | COMMENT |
| LOW⚡ | ui/src/plugins/dev.perfetto.CpuFreq/cpu_freq_track.ts | 402 | // Step 2: Declaratively fetch data from the tables with buffered bounds | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 791 | // Step 1: Apply JOIN if we have columns to join | COMMENT |
| LOW | …DataExplorer/query_builder/structured_query_builder.ts | 808 | // Step 2: Add computed columns on top if we have any | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 649 | // Step 0: Call onInit with a constant key | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 659 | // Step 1: Get the mipmap table (created once per SQL source + options) | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 674 | // Step 2: Calculate buffered bounds and fetch counter data | COMMENT |
| LOW⚡ | ui/src/components/tracks/counter_track.ts | 683 | // 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| LOW | ui/src/trace_processor/engine.ts | 557 | // Example usage: | COMMENT |
| LOW | ui/src/trace_processor/query_result.ts | 244 | // Example usage: | COMMENT |
| LOW | ui/src/base/utils.ts | 24 | // Example usage: | COMMENT |
| LOW | ui/src/base/utils.ts | 96 | // 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 | 462 | // Example usage: | COMMENT |
| LOW | include/perfetto/public/pb_macros.h | 28 | // Example usage: | COMMENT |
| LOW | include/perfetto/public/pb_decoder.h | 26 | // Example usage: | COMMENT |
| LOW | src/trace_processor/core/util/slab.h | 36 | // Usage example: | COMMENT |
| LOW | src/trace_processor/core/util/flex_vector.h | 52 | // 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 | 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 | 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/agent.ts | 105 | // 'agentic' role. Looked up per turn so adding/removing a provider between | COMMENT |
| MEDIUM | ui/src/plugins/dev.perfetto.Intelletto/chat_panel.ts | 58 | // the 'agentic' role (matches Agent.sendMessage). | 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 | 110 | // kCmd* guardrails. | COMMENT |
| MEDIUM | src/android_stats/perfetto_atoms.h | 118 | // perfetto_cmd. Removed as perfetto no longer manages stateful guardrails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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 |
| 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 | 397 | # Check if from an explicitly included module | COMMENT |
| LOW | python/run_tests.py | 39 | # Set paths to trace_processor_shell and root directory as environment | COMMENT |
| LOW | python/tools/check_imports.py | 327 | # 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 | 65 | 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 | 109 | CODE | |
| LOW | …race/protos/perfetto/bigtrace/orchestrator_pb2_grpc.py | 96 | CODE |