You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
151 lines
3.4 KiB
Markdown
151 lines
3.4 KiB
Markdown
---
|
|
name: analyze-structure
|
|
description: Analyze Java project structure, package hierarchy, and code organization. Use when user wants to understand project architecture, identify modules, or map code organization.
|
|
version: 1.0.0
|
|
---
|
|
|
|
# Java Project Structure Analysis
|
|
|
|
This skill analyzes Java project structure and organization.
|
|
|
|
## When to Use
|
|
|
|
- User wants to understand project architecture
|
|
- User needs to identify modules and packages
|
|
- User wants to map code organization
|
|
- User needs to find specific code components
|
|
|
|
## Analysis Steps
|
|
|
|
### 1. Package Hierarchy
|
|
|
|
Map the package structure:
|
|
|
|
```bash
|
|
# Get all packages
|
|
find <dir> -name "*.java" -o -name "*.class" | \
|
|
sed 's|/[^/]*\.\(java\|class\)$||' | \
|
|
sort -u | \
|
|
sed 's|/|.|g'
|
|
```
|
|
|
|
### 2. Module Identification
|
|
|
|
Identify logical modules:
|
|
|
|
| Pattern | Likely Module |
|
|
|---------|---------------|
|
|
| `*.domain` | Data models/entities |
|
|
| `*.dao` | Data access layer |
|
|
| `*.service` | Business logic |
|
|
| `*.action` | Web controllers (Struts) |
|
|
| `*.util` | Utility classes |
|
|
| `*.common` | Shared components |
|
|
| `*.framework` | Framework code |
|
|
|
|
### 3. Class Distribution
|
|
|
|
Count classes per package:
|
|
|
|
```bash
|
|
find <dir> -name "*.java" | \
|
|
sed 's|/[^/]*\.java$||' | \
|
|
sort | uniq -c | sort -rn
|
|
```
|
|
|
|
### 4. Architecture Layers
|
|
|
|
Identify architecture patterns:
|
|
|
|
```
|
|
Presentation Layer
|
|
├── Actions (Struts)
|
|
├── Controllers (Spring MVC)
|
|
└── View (JSP/HTML)
|
|
|
|
Business Layer
|
|
├── Services
|
|
├── Service Implementations
|
|
└── Business Logic
|
|
|
|
Data Access Layer
|
|
├── DAOs
|
|
├── DAO Implementations
|
|
└── ORM (iBatis/Hibernate)
|
|
|
|
Domain Layer
|
|
├── Domain Objects
|
|
├── Value Objects
|
|
└── Entities
|
|
```
|
|
|
|
### 5. Dependency Flow
|
|
|
|
Analyze package dependencies:
|
|
|
|
```bash
|
|
# Find imports in each file
|
|
grep -r "^import" <dir> | \
|
|
sed 's|:.*import |: |' | \
|
|
sed 's|;||'
|
|
```
|
|
|
|
## Structure Report
|
|
|
|
Generate a structure report:
|
|
|
|
```bash
|
|
# Run the analysis script
|
|
bash C:/Users/K/.claude/plugins/cache/claude-plugins-official/plugin-dev/9eae436aa296/scripts/analyze-deps.sh <classes_dir>
|
|
```
|
|
|
|
## Common Patterns
|
|
|
|
### Enterprise Java (EJB/J2EE)
|
|
```
|
|
com.company.project
|
|
├── ejb/ # Enterprise beans
|
|
├── web/ # Web components
|
|
├── common/ # Shared code
|
|
└── util/ # Utilities
|
|
```
|
|
|
|
### Spring Application
|
|
```
|
|
com.company.project
|
|
├── controller/ # Spring MVC controllers
|
|
├── service/ # Service interfaces
|
|
├── service/impl/ # Service implementations
|
|
├── repository/ # Data repositories
|
|
├── model/ # Domain models
|
|
└── config/ # Configuration
|
|
```
|
|
|
|
### Struts Application
|
|
```
|
|
com.company.project
|
|
├── action/ # Struts actions
|
|
├── form/ # Action forms
|
|
├── bo/ # Business objects
|
|
├── dao/ # Data access
|
|
└── domain/ # Domain objects
|
|
```
|
|
|
|
## Output Format
|
|
|
|
The analysis should produce:
|
|
|
|
1. **Package Map**: Visual hierarchy of packages
|
|
2. **Module List**: Identified modules with descriptions
|
|
3. **Class Count**: Statistics per package
|
|
4. **Dependency Graph**: Package dependencies
|
|
5. **Architecture Diagram**: Layer structure
|
|
|
|
## Integration
|
|
|
|
After structure analysis:
|
|
|
|
1. Use `generate-project` to create build structure
|
|
2. Use `understand-code` to dive into specific modules
|
|
3. Use `analyze-dependencies` for detailed dependency mapping
|