CodeBuddy

Read-Only
GitHub

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

{{ fn.type }} {{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.project_name }} / {{ fn.filename }}:{{ fn.start_line }}
{{ fn.type }} {{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.project_name }} / {{ fn.filename }}:{{ fn.start_line }}
No results found

{{ 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.
{{ selectedGraphNode.symbol }}{{ selectedGraphNode.parameters || '' }}
Location
{{ selectedGraphNode.filename }}:{{ selectedGraphNode.start_line }}
Return Type
{{ selectedGraphNode.return_type }}
Comment
{{ selectedGraphNode.comment }}
Source
{{ selectedGraphNode.source }}

Search Results

for "{{ globalSearchQuery }}"
Searching...
No results found for "{{ globalSearchQuery }}"
Type Name Project File Line
{{ result.type }} {{ result.symbol }}{{ result.parameters || '' }} {{ result.project_name }} {{ result.filename }} {{ result.start_line }}
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.
{{ formatJobTitle(job) }}
{{ job.status }}
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 }}%)
Error:
{{ job.error }}
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
Loading metrics...
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

FunctionFileCyclomaticLOCRating
{{ 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!
FunctionFileLines
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.lines }}

Potential Entry Points (may not be dead)

FunctionFileReason
{{ 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

File AFile B
{{ dep.file_a }} {{ dep.file_b }}

File Coupling Metrics

FileAfferent (In)Efferent (Out)Instability
{{ 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!
FunctionFileVulnerabilitySeverity
{{ 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)

FunctionFileLines
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.lines }}

High Complexity (>15)

FunctionFileCyclomatic
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.cyclomatic }}

Long Parameter Lists (>5)

FunctionFileParameters
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.parameter_count }}

Deep Nesting (>4 levels)

FunctionFileDepth
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.nesting_depth }}

God Functions (>200 lines)

FunctionFileLines
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.lines }}

Duplicate Code Suspects

Base NameOccurrencesSeverity
{{ dup.base_name }}* {{ dup.occurrence_count }} {{ dup.severity }}
Loading type analysis...
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!
FunctionFileInferred Type
{{ 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

FunctionFileCallers
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }} {{ fn.caller_count }}

Entry Points

No obvious entry points detected.
FunctionFileCallers
{{ 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

FileDocumentedTotalCoverage
{{ file.filename }} {{ file.documented }} {{ file.total }} {{ file.coverage }}%

Undocumented Functions

FunctionFile
{{ 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

FunctionFile
{{ fn.symbol }} {{ fn.filename }}:{{ fn.start_line }}

Variable Shadowing

FunctionFileVariable
{{ 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

FunctionFileWarning
{{ warn.symbol }} {{ warn.filename }}:{{ warn.start_line }} {{ warn.description }}
And {{ analysisDetail.warnings.length - 10 }} more...

Async/Await Patterns

{{ group.type }} {{ group.count }} occurrences
FunctionFileLine
{{ loc.symbol }} {{ loc.filename }} {{ loc.line }}
And {{ group.locations.length - 10 }} more...

Thread Patterns

{{ group.type }} {{ group.count }} occurrences
FunctionFileLine
{{ loc.symbol }} {{ loc.filename }} {{ loc.line }}
And {{ group.locations.length - 10 }} more...

Synchronization Patterns

{{ group.type }} {{ group.count }} occurrences
FunctionFileLine
{{ 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.name }} {{ group.count }} occurrences
{{ group.description }}
FunctionFileLine
{{ loc.symbol }} {{ loc.filename }} {{ loc.line }}
And {{ group.locations.length - 10 }} more...

Resource Warnings

FunctionFileWarning
{{ warn.symbol }} {{ warn.filename }}:{{ warn.start_line }} {{ warn.description }}
And {{ analysisDetail.warnings.length - 10 }} more...

Resource Releases

{{ group.name }} {{ group.count }} occurrences
FunctionFileLine
{{ loc.symbol }} {{ loc.filename }} {{ loc.line }}
And {{ group.locations.length - 10 }} more...

Resource Acquisitions

{{ group.name }} {{ group.count }} occurrences
FunctionFileLine
{{ 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

PatternFileLineSymbol
{{ loc.pattern_name }} {{ loc.filename }} {{ loc.line }} {{ loc.symbol }}
And {{ analysisDetail.pattern_locations.length - 20 }} more...

Anti-Patterns Detected

Anti-PatternFileLineSymbol
{{ 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

FileAssertionsMocks
{{ 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.
Source FileMessage
{{ 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

IdentifierFileExpectedDetected
{{ 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

FunctionFileScoreRating
{{ 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

Visualizations

Files ({{ formatNumber(projectInfo?.files?.length || 0) }}) - Click to view entities

📁 Root
📁 .. Parent directory
📁 {{ dir.name }} {{ formatNumber(dir.fileCount) }} files, {{ formatNumber(dir.entityCount) }} entities
{{ currentDirectory ? file.filename.split('/').pop() : file.filename }} {{ formatNumber(file.function_count) }} functions

{{ 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

All Entities ({{ formatNumber(allFunctions.length) }})

Loading entities...
{{ fn.type }} {{ fn.symbol }}{{ fn.parameters || '' }}
{{ fn.language }} {{ getFileName(fn.filename) }}:{{ fn.start_line }}
No entities found

{{ 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

{{ getFileName(selectedFunction.filename) }}:{{ selectedFunction.start_line }}-{{ selectedFunction.end_line }}

Return Type

{{ selectedFunction.return_type }}

Comment

{{ selectedFunction.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 || '...' }})
No source available
Loading call graph...
{{ inlineCallGraphError }}
{{ selectedInlineGraphNode.symbol }}{{ selectedInlineGraphNode.parameters || '' }}
Location
{{ selectedInlineGraphNode.filename }}:{{ selectedInlineGraphNode.start_line }}
Return Type
{{ selectedInlineGraphNode.return_type }}
Root (depth 0)
Depth 1
Depth 2
Depth 3+
→ Arrow shows call direction
No call graph data available
Loading flowchart...
{{ flowchartError }}
{{ selectedFlowchartNode.type }} Line {{ selectedFlowchartNode.line }}
{{ selectedFlowchartNode.full_label }}
{{ selectedFlowchartNode.source_snippet }}
Start/End
Process
Decision
Loop
Return
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 }}

Job Queue {{ jobQueueStats.running }} running {{ jobQueueStats.queued }} queued

No jobs in queue
{{ formatJobTitle(job) }} {{ job.status }}
{{ job.error }}
Completed: {{ jobQueueStats.completed }} Failed: {{ jobQueueStats.failed }} Total: {{ jobQueueStats.total }}