CodeBuddy
Your intelligent code analysis companion
{{ formatNumber(globalStats.projects) }}
Projects
{{ formatNumber(globalStats.files) }}
Files
{{ formatNumber(globalStats.entities) }}
Entities
{{ globalStats.languages.length }}
Languages
{{ globalStats.languages.join(', ') }}
Get started by importing a project using the
+ Import button in the sidebar.
Select a project from the sidebar to explore its code.
Search
0"
@blur="onSearchBlur"
placeholder="Search functions, classes, structs..."
autocomplete="off"
/>
{{ fn.type }}
{{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.project_name }} /
{{ fn.filename }}:{{ fn.start_line }}
Search
{{ fn.type }}
{{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.project_name }} /
{{ fn.filename }}:{{ fn.start_line }}
No results found
{{ selectedProject?.name }}
›
{{ graphViewType === 'callgraph' ? 'Call Graph' :
graphViewType === 'callers' ? 'Caller Tree' : 'Callee Tree'
}}: {{ callGraphRoot }}
Call Graph
Caller Tree
Callee Tree
Depth:
1
2
3
4
5
Unlimited
Depth:
2
3
4
5
6
7
8
9
10
15
20
Unlimited
{{ graphViewType === 'callgraph' ? 'Call Graph' : graphViewType
=== 'callers' ? 'Caller Tree' : 'Callee Tree' }}: {{
callGraphRoot }}
Loading {{ graphViewType === 'callgraph' ? 'call graph' : 'tree'
}}...
Function Not Found
Error Loading Graph
The function {{ callGraphRoot }} does not
exist in this project.
This project may not have a main entry point, or it may use
a different naming convention.
{{ callGraphData.error }}
No Call Graph Data
This function has no calls to or from other functions in the
project.
No {{ graphViewType === 'callers' ? 'Callers' : 'Callees' }}
Found
No functions in this project call
{{ callGraphRoot }} .
{{ callGraphRoot }} does not call any other
functions in this project.
Zoom In
Zoom Out
Reset
{{ callGraphFullscreen ? '✕ Close' : '⛶ Fullscreen' }}
Location
{{ selectedGraphNode.filename }}:{{
selectedGraphNode.start_line }}
Return Type
{{ selectedGraphNode.return_type }}
Comment
{{ selectedGraphNode.comment }}
Source
{{ selectedGraphNode.source }}
View Details
Recenter Graph
Recenter Tree
→ Arrow shows call direction
{{ graphViewType === 'callers' ? 'Callers' : 'Callees'
}}
Searching...
No results found for "{{ globalSearchQuery }}"
{{ result.type }}
{{ result.symbol }}{{ result.parameters || '' }}
{{ result.project_name }}
{{ result.filename }}
{{ result.start_line }}
{{ globalSearchLoading ? 'Loading...' : 'Load More Results'
}}
Showing {{ globalSearchResults.length }} results
Job Queue
{{ jobQueueStats.running }}
Running
{{ jobQueueStats.queued }}
Queued
{{ jobQueueStats.completed }}
Completed
{{ jobQueueStats.failed }}
Failed
No jobs in queue. Import or refresh a project to see jobs here.
Path:
{{ job.metadata.path }}
Created:
{{ formatDate(job.created_at) }}
Started:
{{ formatDate(job.started_at) }}
Completed:
{{ formatDate(job.completed_at) }}
Duration:
{{ formatDuration(job.started_at, job.completed_at)
}}
{{ job.message }} ({{ job.progress }}%)
Loading analysis...
Analysis Overview
Overall code quality score based on multiple analysis
factors.
M
Code Metrics
{{
formatNumber(analysisData.summaries.metrics.total_functions)
}} functions
Maintainability: {{
analysisData.summaries.metrics.maintainability_rating
}}
D
Dead Code
{{
formatNumber(analysisData.summaries.dead_code.dead_function_count)
}} unused functions
{{
analysisData.summaries.dead_code.dead_code_percentage
}}% dead code
2x
Code Duplication
{{
formatNumber(analysisData.summaries.duplication.duplicate_group_count)
}} duplicate groups
{{
analysisData.summaries.duplication.duplication_percentage
}}% duplicated
⇄
Dependencies
{{
formatNumber(analysisData.summaries.dependencies.total_dependencies)
}} dependencies
{{
formatNumber(analysisData.summaries.dependencies.circular_dependency_count)
}} circular
!
Security
{{
formatNumber(analysisData.summaries.security.total_vulnerabilities)
}} issues found
{{
formatNumber(analysisData.summaries.security.high_severity)
}} high severity
~
Code Smells
{{
formatNumber(analysisData.summaries.code_smells.total_smells)
}} smells detected
{{ analysisData.summaries.code_smells.smell_density
}}% smell density
M
No Data Available
Unable to load metrics analysis. Please try again.
{{ analysisDetail.maintainability_index }}
Maintainability Index
{{ analysisDetail.maintainability_rating }}
{{ formatNumber(analysisDetail.function_count) }}
Functions
{{
formatNumber(analysisDetail.aggregate.total_loc)
}}
Total LOC
{{
formatNumber(analysisDetail.aggregate.avg_cyclomatic)
}}
Avg Cyclomatic
{{
formatNumber(analysisDetail.aggregate.max_cyclomatic)
}}
Max Cyclomatic
{{ formatNumber(analysisDetail.aggregate.avg_loc)
}}
Avg LOC
{{
formatNumber(analysisDetail.aggregate.max_nesting_depth)
}}
Max Nesting
Most Complex Functions
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.cyclomatic }}
{{ fn.loc }}
{{ fn.label }}
Loading dead code analysis...
🚫
No Data Available
Unable to load dead code analysis. Please try again.
{{
formatNumber(analysisDetail.summary.dead_function_count)
}} Dead Functions
{{
formatNumber(analysisDetail.summary.dead_lines_of_code)
}} Dead LOC
{{ analysisDetail.summary.dead_code_percentage
}}% Dead Code
Unreferenced Functions
No dead code detected!
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.lines }}
Potential Entry Points (may not be dead)
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.reason }}
Loading duplication analysis...
📋
No Data Available
Unable to load duplication analysis. Please try again.
{{
formatNumber(analysisDetail.summary.duplicate_group_count)
}} Duplicate Groups
{{
formatNumber(analysisDetail.summary.total_clone_count)
}} Total Clones
{{ analysisDetail.summary.duplication_percentage
}}% Duplication
No code duplication detected!
Original:
{{ group.original.symbol }}
{{ group.original.filename }}:{{
group.original.start_line }}
{{ group.original.lines }} lines
Clone ({{ clone.similarity }}% similar):
{{ clone.symbol }}
{{ clone.filename }}:{{ clone.start_line
}}
Loading dependency analysis...
🔗
No Data Available
Unable to load dependency analysis. Please try again.
{{ formatNumber(analysisDetail.summary.total_files)
}} Files
{{
formatNumber(analysisDetail.summary.total_dependencies)
}} Dependencies
{{
formatNumber(analysisDetail.summary.circular_dependency_count)
}} Circular Deps
Circular Dependencies
{{ dep.file_a }}
⇄
{{ dep.file_b }}
File Coupling Metrics
{{ file.filename }}
{{ file.afferent_coupling }}
{{ file.efferent_coupling }}
{{ file.instability }}
Loading security analysis...
🔒
No Data Available
Unable to load security analysis. Please try again.
{{
formatNumber(analysisDetail.summary.high_severity)
}} High Severity
{{
formatNumber(analysisDetail.summary.medium_severity)
}} Medium Severity
{{
formatNumber(analysisDetail.summary.low_severity)
}} Low Severity
No security vulnerabilities detected!
{{ vuln.symbol }}
{{ vuln.filename }}:{{ vuln.start_line }}
{{ vuln.vulnerability_name }}
{{ vuln.severity }}
Loading code smell analysis...
🚫
No Data Available
Unable to load code smell analysis. Please try again.
{{
formatNumber(analysisDetail.summary.total_smells)
}} Total Smells
{{ analysisDetail.summary.smell_density }}% Smell Density
{{
formatNumber(analysisDetail.summary.god_functions)
}} God Functions
No code smells detected!
Long Methods (>50 lines)
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.lines }}
High Complexity (>15)
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.cyclomatic }}
Long Parameter Lists (>5)
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.parameter_count }}
Deep Nesting (>4 levels)
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.nesting_depth }}
God Functions (>200 lines)
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.lines }}
Duplicate Code Suspects
{{ dup.base_name }}*
{{ dup.occurrence_count }}
{{ dup.severity }}
T
No Data Available
Unable to load type analysis. Please try again.
{{
formatNumber(analysisDetail.summary.total_dynamic_functions)
}} Dynamic Functions
{{
formatNumber(analysisDetail.summary.with_type_hints)
}} With Types
{{ analysisDetail.summary.type_coverage_percentage
}}% Type Coverage
No dynamically-typed functions to analyze.
Functions Without Type Hints
All functions have type hints!
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.inferred_return_type }}
Loading API surface analysis...
🔌
No Data Available
Unable to load API surface analysis. Please try again.
{{
formatNumber(analysisDetail.summary.public_count)
}} Public Functions
{{
formatNumber(analysisDetail.summary.private_count)
}} Private Functions
{{ analysisDetail.summary.documentation_coverage
}}% API Doc Coverage
Undocumented Public Functions
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.caller_count }}
Entry Points
No obvious entry points detected.
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
{{ fn.caller_count }}
Loading documentation analysis...
📄
No Data Available
Unable to load documentation analysis. Please try again.
{{ analysisDetail.summary.coverage_percentage
}}% Doc Coverage
{{
formatNumber(analysisDetail.summary.fully_documented)
}} Documented
{{
formatNumber(analysisDetail.summary.undocumented)
}} Undocumented
Documentation by File
{{ file.filename }}
{{ file.documented }}
{{ file.total }}
{{ file.coverage }}%
Undocumented Functions
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
Loading scope analysis...
🔍
No Data Available
Unable to load scope analysis. Please try again.
{{
formatNumber(analysisDetail.summary.total_issues)
}} Total Issues
{{
formatNumber(analysisDetail.summary.global_variable_issues)
}} Global Vars
{{
formatNumber(analysisDetail.summary.shadowing_issues)
}} Shadowing
No variable scope issues detected!
Global Variable Usage
{{ fn.symbol }}
{{ fn.filename }}:{{ fn.start_line }}
Variable Shadowing
{{ issue.symbol }}
{{ issue.filename }}:{{ issue.start_line
}}
{{ issue.variable }}
Analyzing concurrency patterns...
Scanning for async/await, threads, and synchronization
primitives
||
No Data Available
Unable to load concurrency analysis. Please try again.
✓
No Concurrency Patterns Found
This project doesn't appear to use concurrency features
like async/await, threads, or synchronization
primitives.
{{
formatNumber(analysisDetail.summary.functions_with_concurrency)
}} Functions
{{
formatNumber(analysisDetail.summary.total_async_patterns)
}} Async/Await
{{
formatNumber(analysisDetail.summary.total_thread_patterns)
}} Thread Patterns
{{
formatNumber(analysisDetail.summary.total_sync_patterns)
}} Sync Primitives
{{
formatNumber(analysisDetail.summary.total_warnings)
}} Warnings
Concurrency Warnings
{{ warn.symbol }}
{{ warn.filename }}:{{ warn.start_line }}
{{ warn.description }}
And {{ analysisDetail.warnings.length - 10 }}
more...
Async/Await Patterns
{{ loc.symbol }}
{{ loc.filename }}
{{ loc.line }}
And {{ group.locations.length - 10 }} more...
Thread Patterns
{{ loc.symbol }}
{{ loc.filename }}
{{ loc.line }}
And {{ group.locations.length - 10 }} more...
Synchronization Patterns
{{ loc.symbol }}
{{ loc.filename }}
{{ loc.line }}
And {{ group.locations.length - 10 }} more...
Analyzing resource patterns...
Scanning for memory allocations, file handles, and
potential leaks
R
No Data Available
Unable to load resource analysis. Please try again.
✓
No Resource Patterns Found
This project doesn't appear to use manual resource
management patterns like memory allocation or file
handles.
{{
formatNumber(analysisDetail.summary.functions_with_resources)
}} Functions
{{
formatNumber(analysisDetail.summary.total_acquisitions)
}} Acquisitions
{{
formatNumber(analysisDetail.summary.total_releases)
}} Releases
{{
formatNumber(analysisDetail.summary.total_potential_leaks)
}} Potential Leaks
{{
formatNumber(analysisDetail.summary.total_warnings)
}} Warnings
Potential Resource Leaks
{{ group.description }}
{{ loc.symbol }}
{{ loc.filename }}
{{ loc.line }}
And {{ group.locations.length - 10 }} more...
Resource Warnings
{{ warn.symbol }}
{{ warn.filename }}:{{ warn.start_line }}
{{ warn.description }}
And {{ analysisDetail.warnings.length - 10 }}
more...
Resource Releases
{{ loc.symbol }}
{{ loc.filename }}
{{ loc.line }}
And {{ group.locations.length - 10 }} more...
Resource Acquisitions
{{ loc.symbol }}
{{ loc.filename }}
{{ loc.line }}
And {{ group.locations.length - 10 }} more...
Analyzing design patterns...
Detecting Singleton, Factory, Observer, and other
patterns
P
No Data Available
Unable to load pattern analysis. Please try again.
P
No Patterns Detected
No common design patterns or anti-patterns were detected
in this project.
{{
formatNumber(analysisDetail.summary.total_patterns_detected)
}} Design Patterns
{{ formatNumber(
analysisDetail.summary.patterns_by_category['anti-pattern']
|| 0) }} Anti-Patterns
{{
formatNumber(analysisDetail.summary.total_functions)
}} Functions Analyzed
{{ formatNumber(
analysisDetail.summary.error_handling.functions_with_error_handling)
}} Error Handlers
Design Patterns Detected
{{ loc.pattern_name }}
{{ loc.filename }}
{{ loc.line }}
{{ loc.symbol }}
And {{ analysisDetail.pattern_locations.length - 20
}} more...
Anti-Patterns Detected
{{ loc.pattern }}
{{ loc.filename }}
{{ loc.line }}
{{ loc.symbol }}
And {{ analysisDetail.anti_patterns.length - 20 }}
more...
Error Handling Analysis
{{ formatNumber(
analysisDetail.summary.error_handling.total_try_catch)
}} Try/Catch
{{ formatNumber(
analysisDetail.summary.error_handling.total_empty_catch)
}} Empty Catch
{{ formatNumber(
analysisDetail.summary.error_handling.total_finally)
}} Finally Blocks
Analyzing test coverage...
Scanning for test files, assertions, and mocks
T
No Data Available
Unable to load test analysis. Please try again.
!
No Test Files Found
This project doesn't appear to have any test files.
Consider adding tests to improve code quality.
{{ formatNumber(analysisDetail.summary.test_files)
}} Test Files
{{
formatNumber(analysisDetail.summary.total_assertions)
}} Assertions
{{ formatNumber(analysisDetail.summary.total_mocks)
}} Mocks/Stubs
{{ analysisDetail.summary.test_to_code_ratio
}}% Test Ratio
Test Files
{{ file.filename }}
{{ file.assertions }}
{{ file.mocks }}
And {{ analysisDetail.test_files.length - 20 }}
more...
Potential Coverage Gaps
Source files that may not have corresponding test
files.
{{ gap.filename }}
{{ gap.message }}
And {{ analysisDetail.coverage_gaps.length - 15 }}
more...
Analyzing naming conventions...
Checking camelCase, snake_case, and PascalCase usage
N
No Data Available
Unable to load naming analysis. Please try again.
{{
formatNumber(analysisDetail.summary.total_identifiers)
}} Identifiers
{{ analysisDetail.summary.compliance_rate }}% Compliance
{{
formatNumber(analysisDetail.summary.non_compliant)
}} Violations
Convention Usage
{{ convention }}
{{ count }}
Naming Violations
{{ violation.symbol }}
{{ violation.filename }}:{{ violation.line
}}
{{ violation.expected.join(', ') }}
{{ violation.detected.join(', ') }}
And {{ analysisDetail.violations.length - 20 }}
more...
Calculating readability scores...
Analyzing code structure, comments, and complexity
R
No Data Available
Unable to load readability analysis. Please try again.
{{ analysisDetail.summary.avg_score }}
{{ analysisDetail.summary.avg_score >= 85 ?
'Excellent' : analysisDetail.summary.avg_score >= 70 ?
'Good' : analysisDetail.summary.avg_score >= 55 ?
'Acceptable' : 'Poor' }}
{{
formatNumber(analysisDetail.summary.total_functions)
}} Functions
{{
formatNumber(analysisDetail.metrics?.avg_line_length
|| 0) }} Avg Line Length
{{
formatNumber(analysisDetail.metrics?.avg_nesting_depth
|| 0) }} Avg Nesting
{{
formatNumber(analysisDetail.metrics?.total_magic_numbers
|| 0) }} Magic Numbers
Score Distribution
Excellent (85+)
{{ formatNumber(
analysisDetail.summary.score_distribution.excellent
|| 0) }}
Good (70-84)
{{
formatNumber(analysisDetail.summary.score_distribution.good
|| 0) }}
Acceptable (55-69)
{{ formatNumber(
analysisDetail.summary.score_distribution.acceptable
|| 0) }}
Poor (<55)
{{
formatNumber((analysisDetail.summary.score_distribution.poor
|| 0) +
(analysisDetail.summary.score_distribution.very_poor
|| 0)) }}
Functions Needing Improvement
{{ fn.symbol }}
{{ fn.filename }}
{{ fn.score }}
{{ fn.rating }}
And {{ analysisDetail.worst_functions.length - 15 }}
more...
Project: {{ selectedProject.name }}
Loading project information...
Path
{{ projectInfo?.path }}
Code Complexity
{{ formatNumber(projectInfo.complexity.total_functions)
}}
Functions
{{ formatNumber(projectInfo.complexity.avg_cyclomatic)
}}
Avg Cyclomatic
{{ formatNumber(projectInfo.complexity.max_cyclomatic)
}}
Max Cyclomatic
{{ formatNumber(projectInfo.complexity.total_loc) }}
Total LOC
{{ formatNumber(projectInfo.complexity.avg_loc) }}
Avg LOC
{{
formatNumber(projectInfo.complexity.max_nesting_depth)
}}
Max Nesting
Browse
☰
All Entities
Browse all functions, classes, and structs
Visualizations
◉
Call Graph
View function call relationships from main
↑
Caller Tree
See what calls a function
↓
Callee Tree
See what a function calls
Files ({{ formatNumber(projectInfo?.files?.length || 0) }})
- Click to view entities
📁 Root
›
{{ part }}
📁 ..
Parent directory
📁 {{ dir.name
}}
{{ formatNumber(dir.fileCount) }} files, {{
formatNumber(dir.entityCount) }} entities
{{ currentDirectory ? file.filename.split('/').pop() :
file.filename }}
{{ formatNumber(file.function_count) }} functions
{{ selectedProject.name }}
›
{{ part }}
›
{{ getFileName(selectedFile) }}
{{ selectedFile.split('/').pop() }}
Loading analytics...
File Complexity
{{ formatNumber(fileAnalytics.entity_count) }}
Entities
{{ formatNumber(fileAnalytics.complexity.total_functions)
}}
Functions
{{ fileAnalytics.complexity.avg_cyclomatic }}
Avg Cyclomatic
{{ fileAnalytics.complexity.max_cyclomatic }}
Max Cyclomatic
{{ formatNumber(fileAnalytics.complexity.total_loc) }}
Total LOC
{{ fileAnalytics.complexity.avg_loc }}
Avg LOC
{{ fileAnalytics.complexity.max_nesting_depth }}
Max Nesting
{{ fileAnalytics.complexity.avg_parameters }}
Avg Params
Entity Types
{{ type }}: {{ count }}
Most Complex Functions
{{ fn.symbol }}
{{ fn.complexity.cyclomatic }}
Line {{ fn.start_line }}
Entities ({{ formatNumber(fileFunctions.length) }})
Loading entities...
{{ fn.type }}
{{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.language }}
Line {{ fn.start_line }}
No entities in this file
{{ isMarkdownFile(selectedFile) ? 'Content' : 'Source Code' }}
Loading content...
Content not available for this file
{{ selectedProject.name }}
›
All Entities
All Entities ({{ formatNumber(allFunctions.length) }})
Loading entities...
{{ fn.type }}
{{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.language }}
{{ part }} / {{ getFileName(fn.filename) }} :{{ fn.start_line }}
Show More ({{ formatNumber(remainingFunctionsCount) }}
remaining)
Show All
No entities found
{{ selectedProject?.name || 'Projects' }}
›
{{ part }}
›
{{ getFileName(selectedFile) }}
›
{{ selectedFunction.symbol }}
{{ selectedFunction.symbol }}{{ selectedFunction.parameters ||
'' }}
{{ selectedFunction.complexity.label }}
Complexity Metrics
{{ selectedFunction.complexity.cyclomatic }}
Cyclomatic
{{ selectedFunction.complexity.loc }}
Lines of Code
{{ selectedFunction.complexity.nesting_depth }}
Nesting Depth
{{ selectedFunction.complexity.parameter_count }}
Parameters
Location
{{ part }} / {{ getFileName(selectedFunction.filename) }} :{{ selectedFunction.start_line }}-{{
selectedFunction.end_line }}
Return Type
{{ selectedFunction.return_type }}
Comment
Members ({{ classMembers.length }})
Loading members...
method
{{ member.symbol }}{{ member.parameters || '' }}
Line {{ member.start_line }}
→ {{ member.return_type }}
No member functions found
Source
Call Graph
Flowchart
Callers ({{ callers.length || '...' }})
Callees ({{ callees.length || '...' }})
References ({{ entityReferences.length || '...' }})
Depth:
2
3
4
5
6
7
8
9
10
15
20
Unlimited
Loading call graph...
{{ inlineCallGraphError }}
Zoom In
Zoom Out
Reset
{{ inlineGraphFullscreen ? '✕ Close' : '⛶ Fullscreen' }}
Location
{{ selectedInlineGraphNode.filename }}:{{
selectedInlineGraphNode.start_line }}
Return Type
{{ selectedInlineGraphNode.return_type }}
View Details
Recenter Graph
→ Arrow shows call direction
No call graph data available
Loading flowchart...
{{ flowchartError }}
Zoom In
Zoom Out
Reset
{{ flowchartFullscreen ? '✕ Close' : '⛶ Fullscreen' }}
{{ selectedFlowchartNode.full_label }}
{{ selectedFlowchartNode.source_snippet }}
No flowchart data available
Loading...
{{ caller.caller_symbol }} ({{ caller.caller_filename }}:{{
caller.caller_start_line }})
No callers found
Loading...
{{ callee.callee_symbol }}{{ callee.callee_parameters || ''
}} ({{ callee.callee_filename }}:{{ callee.callee_start_line
}})
No callees found
Loading references...
Found {{ entityReferences.length }} reference(s) to {{
selectedFunction.symbol }}
({{ referenceDefinitions.length }} definitions found
across projects)
Definitions
{{ def.type }}
{{ def.symbol }}
{{ def.project_name }} / {{ def.filename }}:{{
def.start_line }}
{{ formatReferenceType(refType) }} ({{ refs.length }})
{{ ref.filename }}:{{ ref.line }}
{{ ref.context }}
No references found for this {{ selectedFunction.type }}