Skip to content

Latest commit

ย 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ OpenCode Code Analyzer / ไปฃ็ ๅˆ†ๆžๅ™จ

English | ไธญๆ–‡

A desktop code analysis tool that visualizes code structure as interactive logic graphs. Built with Rust (Tauri) backend and SolidJS frontend, it automatically extracts variables, functions, classes, and their relationships from your source code and displays them as node-link diagrams.


โœจ Features

๐Ÿ“Š Code Structure Visualization

  • Variable Declarations - Detects let, const, var declarations across languages
  • Function Call Graph - Maps functionA() โ†’ functionB() call relationships
  • Variable References - Traces where variables are read/written throughout the codebase
  • Import/Dependency - Visualizes file-to-file import dependencies
  • Class/Module Hierarchy - Shows contains/implements/extends relationships

๐ŸŽจ Multi-Language Support

  • ๐Ÿฆ€ Rust - let x, fn foo(), mod, struct, impl
  • ๐Ÿ“˜ TypeScript / JavaScript - const x, function foo(), class, import
  • ๐Ÿ Python - x = val, def foo(), class, import
  • ๐Ÿน Go - x := val, func Foo(), type, import

๐Ÿ–ผ๏ธ Graph Layouts (4 types)

  • Force-Directed - Physics-based simulation with attraction + repulsion forces
  • Hierarchical - Top-down tree layout for clear parent-child relationships
  • Circular - Entities arranged in a circle for balanced overview
  • Grid - Organized grid layout for dense codebases

๐Ÿ–ฅ๏ธ Rendering Backends (3 options)

  • SVG - Vector-based, scalable, interactive elements
  • Canvas - 2D canvas rendering for medium-sized graphs
  • WebGL - GPU-accelerated rendering for large graphs

๐Ÿ“‹ Analysis Metrics

  • Total files, lines, entities count
  • Language breakdown statistics
  • Complexity score calculation
  • Entity type distribution

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              SolidJS Frontend               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚  Toolbar  โ”‚  โ”‚   Graph   โ”‚  โ”‚  Legend  โ”‚ โ”‚
โ”‚  โ”‚           โ”‚  โ”‚  Canvas   โ”‚  โ”‚  Panel   โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”               โ”‚
โ”‚  โ”‚ Entities  โ”‚  โ”‚  Metrics  โ”‚               โ”‚
โ”‚  โ”‚    List   โ”‚  โ”‚   Panel   โ”‚               โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ”‚ Tauri invoke
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚               Rust Backend                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚   parser.rs  โ”‚  โ”‚    graph.rs       โ”‚   โ”‚
โ”‚  โ”‚              โ”‚  โ”‚                   โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Variables  โ”‚  โ”‚ โ€ข Force-Directed  โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Functions  โ”‚  โ”‚ โ€ข Hierarchical    โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Calls      โ”‚  โ”‚ โ€ข Circular        โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Imports    โ”‚  โ”‚ โ€ข Grid            โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚    ast.rs    โ”‚  โ”‚   renderer.rs     โ”‚   โ”‚
โ”‚  โ”‚              โ”‚  โ”‚                   โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Dependency โ”‚  โ”‚ โ€ข SVG Generation  โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Cycle      โ”‚  โ”‚ โ€ข Canvas          โ”‚   โ”‚
โ”‚  โ”‚ โ€ข Metrics    โ”‚  โ”‚ โ€ข WebGL           โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Quick Start

Prerequisites

  • Node.js >= 18
  • npm >= 9 (with catalog: protocol support)
  • Rust >= 1.75
  • Tauri CLI (cargo install tauri-cli)

Install & Run

# Install dependencies
cd packages/code-analyzer && npm install

# Run desktop app
cd packages/desktop && npm run tauri dev

Using as Standalone Web App

cd packages/code-analyzer && npm run dev

๐Ÿ“ Project Structure

OpenCode-Code-Analyzer/
โ”œโ”€โ”€ packages/
โ”‚   โ”œโ”€โ”€ code-analyzer/       # SolidJS frontend
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ app.tsx             # Main application component
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ types.ts            # TypeScript type definitions
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ graph-canvas.tsx   # Graph visualization + legend
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ entity-list.tsx    # Entity browser
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ metrics-panel.tsx  # Statistics display
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ toolbar.tsx        # Layout & renderer controls
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ styles.css            # Global styles
โ”‚   โ”‚   โ”œโ”€โ”€ index.html
โ”‚   โ”‚   โ”œโ”€โ”€ vite.config.ts
โ”‚   โ”‚   โ””โ”€โ”€ package.json
โ”‚   โ””โ”€โ”€ desktop/
โ”‚       โ”œโ”€โ”€ src/                      # Desktop app entry
โ”‚       โ””โ”€โ”€ src-tauri/
โ”‚           โ””โ”€โ”€ src/
โ”‚               โ”œโ”€โ”€ code_analyzer/
โ”‚               โ”‚   โ”œโ”€โ”€ mod.rs         # Core data structures
โ”‚               โ”‚   โ”œโ”€โ”€ parser.rs      # Code parser (multi-language)
โ”‚               โ”‚   โ”œโ”€โ”€ ast.rs         # AST analysis
โ”‚               โ”‚   โ”œโ”€โ”€ graph.rs       # Graph layout engine
โ”‚               โ”‚   โ”œโ”€โ”€ renderer.rs    # Graph renderer
โ”‚               โ”‚   โ””โ”€โ”€ commands.rs    # Tauri commands
โ”‚               โ”œโ”€โ”€ lib.rs
โ”‚               โ””โ”€โ”€ main.rs
โ””โ”€โ”€ README.md

๐ŸŽฏ Legend System

Relationship Types

Type Color Description
Calls ๐Ÿ”ด Red Function A calls function B
Imports ๐Ÿ”ต Blue File imports another file
Contains ๐ŸŸข Green Class/Module contains function
References ๐ŸŸ  Orange Code references a variable
Extends ๐ŸŸฃ Purple Class extends another class
Implements ๐Ÿ’œ Light Purple Class implements an interface
Depends On โšซ Gray File-to-file dependency

Entity Types

Category Color Entities
Structure Purple Module, Class, Interface
Behavior Green Function, Method
Data Orange Variable, Constant
Boundary Blue Import, Export

๐Ÿ”ง Configuration

Available Commands (Tauri IPC)

Command Description Input Output
analyze_code_directory Scan directory for code analysis {path, parser_type} AnalysisResult
get_analysis_result Get cached analysis result {dir_path} AnalysisResult
generate_code_graph Generate graph visualization GenerateGraphRequest string (SVG/JSON)
get_analyze_languages List supported languages - string[]
check_linux_app Linux app availability check - bool

๐Ÿ“„ License

This project is licensed under the MIT License.



๐Ÿš€ OpenCode Code Analyzer / ไปฃ็ ๅˆ†ๆžๅ™จ

English | ไธญๆ–‡

ไธ€ๆฌพๆกŒ้ข็ซฏไปฃ็ ๅˆ†ๆžๅทฅๅ…ท๏ผŒๅฐ†ไปฃ็ ็ป“ๆž„ไปฅไบคไบ’ๅผ้€ป่พ‘ๅ›พ็š„ๅฝขๅผๅฏ่ง†ๅŒ–ๅฑ•็คบใ€‚ๅŸบไบŽ Rust (Tauri) ๅŽ็ซฏๅ’Œ SolidJS ๅ‰็ซฏๆž„ๅปบ๏ผŒ่‡ชๅŠจไปŽๆบไปฃ็ ไธญๆๅ–ๅ˜้‡ใ€ๅ‡ฝๆ•ฐใ€็ฑปๅŠๅ…ถๅ…ณ็ณป๏ผŒๅนถไปฅ่Š‚็‚น่ฟž็บฟๅ›พ็š„ๅฝขๅผๅ‘ˆ็Žฐใ€‚


โœจ ๅŠŸ่ƒฝ็‰นๆ€ง

๐Ÿ“Š ไปฃ็ ็ป“ๆž„ๅฏ่ง†ๅŒ–

  • ๅ˜้‡ๅฃฐๆ˜Ž - ่ทจ่ฏญ่จ€ๆฃ€ๆต‹ letใ€constใ€var ๅฃฐๆ˜Ž
  • ๅ‡ฝๆ•ฐ่ฐƒ็”จๅ›พ - ๆ˜ ๅฐ„ functionA() โ†’ functionB() ่ฐƒ็”จๅ…ณ็ณป
  • ๅ˜้‡ๅผ•็”จ่ฟฝ่ธช - ่ฟฝ่ธชๅ˜้‡ๅœจๆ•ดไธชไปฃ็ ๅบ“ไธญ็š„่ฏปๅ†™ไฝ็ฝฎ
  • ๅฏผๅ…ฅ/ไพ่ต– - ๅฏ่ง†ๅŒ–ๆ–‡ไปถ้—ด็š„ๅฏผๅ…ฅไพ่ต–
  • ็ฑป/ๆจกๅ—ๅฑ‚็บง - ๅฑ•็คบๅŒ…ๅซ/ๅฎž็Žฐ/็ปงๆ‰ฟๅ…ณ็ณป

๐ŸŽจ ๅคš่ฏญ่จ€ๆ”ฏๆŒ

  • ๐Ÿฆ€ Rust - let xใ€fn foo()ใ€modใ€structใ€impl
  • ๐Ÿ“˜ TypeScript / JavaScript - const xใ€function foo()ใ€classใ€import
  • ๐Ÿ Python - x = valใ€def foo()ใ€classใ€import
  • ๐Ÿน Go - x := valใ€func Foo()ใ€typeใ€import

๐Ÿ–ผ๏ธ ๅ››็งๅ›พๅธƒๅฑ€

  • ๅŠ›ๅฏผๅ‘ๅธƒๅฑ€ - ๅŸบไบŽ็‰ฉ็†ๆจกๆ‹Ÿ็š„ๅธๅผ•ๅŠ›ๅ’ŒๆŽ’ๆ–ฅๅŠ›
  • ๅฑ‚็บงๅธƒๅฑ€ - ่‡ชไธŠ่€Œไธ‹็š„ๆ ‘ๅฝขๅธƒๅฑ€๏ผŒ็ˆถๅญๅ…ณ็ณปๆธ…ๆ™ฐ
  • ็Žฏๅฝขๅธƒๅฑ€ - ๅฎžไฝ“ๅ‡ๅŒ€ๅˆ†ๅธƒๅœจๅœ†็ŽฏไธŠ๏ผŒๆ•ดไฝ“ๅ‡่กก
  • ็ฝ‘ๆ ผๅธƒๅฑ€ - ๆœ‰ๅบ็ฝ‘ๆ ผๆŽ’ๅˆ—๏ผŒ้€‚ๅˆๅฏ†้›†ไปฃ็ ๅบ“

๐Ÿ–ฅ๏ธ ไธ‰็งๆธฒๆŸ“ๆ–นๅผ

  • SVG - ็Ÿข้‡ๆธฒๆŸ“๏ผŒๅฏ็ผฉๆ”พ๏ผŒๆ”ฏๆŒไบคไบ’ๅ…ƒ็ด 
  • Canvas - 2D ็”ปๅธƒๆธฒๆŸ“๏ผŒ้€‚ๅˆไธญ็ญ‰่ง„ๆจกๅ›พ
  • WebGL - GPU ๅŠ ้€ŸๆธฒๆŸ“๏ผŒ้€‚ๅˆๅคง่ง„ๆจกๅ›พ

๐Ÿ“‹ ๅˆ†ๆžๆŒ‡ๆ ‡

  • ๆ–‡ไปถๆ•ฐใ€ไปฃ็ ่กŒๆ•ฐใ€ๅฎžไฝ“ๆ•ฐ้‡
  • ่ฏญ่จ€ๅˆ†ๅธƒ็ปŸ่ฎก
  • ๅคๆ‚ๅบฆ่ฏ„ๅˆ†
  • ๅฎžไฝ“็ฑปๅž‹ๅˆ†ๅธƒ

๐Ÿ—๏ธ ๆžถๆž„่ฎพ่ฎก

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              SolidJS ๅ‰็ซฏ                    โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚   ๅทฅๅ…ทๆ    โ”‚  โ”‚   ๅ›พ็”ปๅธƒ   โ”‚  โ”‚  ๅ›พไพ‹้ขๆฟ โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”               โ”‚
โ”‚  โ”‚  ๅฎžไฝ“ๅˆ—่กจ  โ”‚  โ”‚  ๆŒ‡ๆ ‡้ขๆฟ  โ”‚               โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                    โ”‚ Tauri invoke
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚               Rust ๅŽ็ซฏ                      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚   parser.rs  โ”‚  โ”‚    graph.rs       โ”‚   โ”‚
โ”‚  โ”‚              โ”‚  โ”‚                   โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ๅ˜้‡       โ”‚  โ”‚ โ€ข ๅŠ›ๅฏผๅ‘ๅธƒๅฑ€       โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ๅ‡ฝๆ•ฐ       โ”‚  โ”‚ โ€ข ๅฑ‚็บงๅธƒๅฑ€         โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ่ฐƒ็”จ       โ”‚  โ”‚ โ€ข ็Žฏๅฝขๅธƒๅฑ€         โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ๅฏผๅ…ฅ       โ”‚  โ”‚ โ€ข ็ฝ‘ๆ ผๅธƒๅฑ€         โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚    ast.rs    โ”‚  โ”‚   renderer.rs     โ”‚   โ”‚
โ”‚  โ”‚              โ”‚  โ”‚                   โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ไพ่ต–ๅˆ†ๆž   โ”‚  โ”‚ โ€ข SVG ็”Ÿๆˆ        โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ๅพช็Žฏๆฃ€ๆต‹   โ”‚  โ”‚ โ€ข Canvas ๆธฒๆŸ“     โ”‚   โ”‚
โ”‚  โ”‚ โ€ข ๆŒ‡ๆ ‡่ฎก็ฎ—   โ”‚  โ”‚ โ€ข WebGL ๆธฒๆŸ“      โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

ๅ‰็ฝฎ่ฆๆฑ‚

  • Node.js >= 18
  • npm >= 9๏ผˆๆ”ฏๆŒ catalog: ๅ่ฎฎ๏ผ‰
  • Rust >= 1.75
  • Tauri CLI (cargo install tauri-cli)

ๅฎ‰่ฃ…ไธŽ่ฟ่กŒ

# ๅฎ‰่ฃ…ไพ่ต–
cd packages/code-analyzer && npm install

# ่ฟ่กŒๆกŒ้ขๅบ”็”จ
cd packages/desktop && npm run tauri dev

ไฝœไธบ็‹ฌ็ซ‹ Web ๅบ”็”จ่ฟ่กŒ

cd packages/code-analyzer && npm run dev

๐Ÿ“ ้กน็›ฎ็ป“ๆž„

OpenCode-Code-Analyzer/
โ”œโ”€โ”€ packages/
โ”‚   โ”œโ”€โ”€ code-analyzer/       # SolidJS ๅ‰็ซฏ
โ”‚   โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ app.tsx             # ไธปๅบ”็”จ็ป„ไปถ
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ types.ts            # TypeScript ็ฑปๅž‹ๅฎšไน‰
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ graph-canvas.tsx   # ๅ›พๅฏ่ง†ๅŒ– + ๅ›พไพ‹
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ entity-list.tsx    # ๅฎžไฝ“ๆต่งˆๅ™จ
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ metrics-panel.tsx  # ็ปŸ่ฎกไฟกๆฏๅฑ•็คบ
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ toolbar.tsx        # ๅธƒๅฑ€ไธŽๆธฒๆŸ“ๆŽงๅˆถ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ styles.css            # ๅ…จๅฑ€ๆ ทๅผ
โ”‚   โ”‚   โ”œโ”€โ”€ index.html
โ”‚   โ”‚   โ”œโ”€โ”€ vite.config.ts
โ”‚   โ”‚   โ””โ”€โ”€ package.json
โ”‚   โ””โ”€โ”€ desktop/
โ”‚       โ”œโ”€โ”€ src/                      # ๆกŒ้ขๅบ”็”จๅ…ฅๅฃ
โ”‚       โ””โ”€โ”€ src-tauri/
โ”‚           โ””โ”€โ”€ src/
โ”‚               โ”œโ”€โ”€ code_analyzer/
โ”‚               โ”‚   โ”œโ”€โ”€ mod.rs         # ๆ ธๅฟƒๆ•ฐๆฎ็ป“ๆž„
โ”‚               โ”‚   โ”œโ”€โ”€ parser.rs      # ไปฃ็ ่งฃๆžๅ™จ๏ผˆๅคš่ฏญ่จ€๏ผ‰
โ”‚               โ”‚   โ”œโ”€โ”€ ast.rs         # AST ๅˆ†ๆž
โ”‚               โ”‚   โ”œโ”€โ”€ graph.rs       # ๅ›พๅธƒๅฑ€ๅผ•ๆ“Ž
โ”‚               โ”‚   โ”œโ”€โ”€ renderer.rs    # ๅ›พๆธฒๆŸ“ๅ™จ
โ”‚               โ”‚   โ””โ”€โ”€ commands.rs    # Tauri ๅ‘ฝไปค
โ”‚               โ”œโ”€โ”€ lib.rs
โ”‚               โ””โ”€โ”€ main.rs
โ””โ”€โ”€ README.md

๐ŸŽฏ ๅ›พไพ‹็ณป็ปŸ

ๅ…ณ็ณป็ฑปๅž‹

็ฑปๅž‹ ้ขœ่‰ฒ ่ฏดๆ˜Ž
ๅ‡ฝๆ•ฐ่ฐƒ็”จ (Calls) ๐Ÿ”ด ็บข่‰ฒ ๅ‡ฝๆ•ฐ A ่ฐƒ็”จๅ‡ฝๆ•ฐ B
ๅฏผๅ…ฅ (Imports) ๐Ÿ”ต ่“่‰ฒ ๆ–‡ไปถๅฏผๅ…ฅๅฆไธ€ไธชๆ–‡ไปถ
ๅŒ…ๅซ (Contains) ๐ŸŸข ็ปฟ่‰ฒ ็ฑป/ๆจกๅ—ๅŒ…ๅซๅ‡ฝๆ•ฐ
ๅ˜้‡ๅผ•็”จ (References) ๐ŸŸ  ๆฉ™่‰ฒ ไปฃ็ ๅผ•็”จไบ†ไธ€ไธชๅ˜้‡
็ปงๆ‰ฟ (Extends) ๐ŸŸฃ ็ดซ่‰ฒ ็ฑป็ปงๆ‰ฟๅฆไธ€ไธช็ฑป
ๅฎž็Žฐ (Implements) ๐Ÿ’œ ๆต…็ดซ ็ฑปๅฎž็Žฐไธ€ไธชๆŽฅๅฃ
ไพ่ต– (Depends On) โšซ ็ฐ่‰ฒ ๆ–‡ไปถ้—ดไพ่ต–

ๅฎžไฝ“็ฑปๅž‹

ๅˆ†็ฑป ้ขœ่‰ฒ ๅฎžไฝ“
็ป“ๆž„ๅฑ‚ ็ดซ่‰ฒ ๆจกๅ—ใ€็ฑปใ€ๆŽฅๅฃ
่กŒไธบๅฑ‚ ็ปฟ่‰ฒ ๅ‡ฝๆ•ฐใ€ๆ–นๆณ•
ๆ•ฐๆฎๅฑ‚ ๆฉ™่‰ฒ ๅ˜้‡ใ€ๅธธ้‡
่พน็•Œๅฑ‚ ่“่‰ฒ ๅฏผๅ…ฅใ€ๅฏผๅ‡บ

๐Ÿ”ง ้…็ฝฎ

ๅฏ็”จๅ‘ฝไปค (Tauri IPC)

ๅ‘ฝไปค ่ฏดๆ˜Ž ่พ“ๅ…ฅ ่พ“ๅ‡บ
analyze_code_directory ๆ‰ซๆ็›ฎๅฝ•่ฟ›่กŒไปฃ็ ๅˆ†ๆž {path, parser_type} AnalysisResult
get_analysis_result ่Žทๅ–็ผ“ๅญ˜็š„ๅˆ†ๆž็ป“ๆžœ {dir_path} AnalysisResult
generate_code_graph ็”Ÿๆˆๅ›พๅฏ่ง†ๅŒ– GenerateGraphRequest string (SVG/JSON)
get_analyze_languages ๅˆ—ๅ‡บๆ”ฏๆŒ็š„่ฏญ่จ€ - string[]
check_linux_app Linux ๅบ”็”จๅฏ็”จๆ€งๆฃ€ๆŸฅ - bool

๐Ÿ“„ ่ฎธๅฏ่ฏ

ๆœฌ้กน็›ฎๅŸบไบŽ MIT ่ฎธๅฏ่ฏๅผ€ๆบใ€‚

About

A desktop code analysis tool that visualizes code structure as interactive logic graphs

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages