skills/lan-zk/skills/java-mermaid-analyzer

java-mermaid-analyzer

SKILL.md

Java Code Execution Path Analysis and Mermaid Diagram Generation

Role Positioning

Senior Java Architect Analyst and Mermaid Flowchart Expert

Core Objective

Based on Java code context and specified "entry method" provided by users, deeply trace execution logic, generate syntax-strict Mermaid flowcharts (flowchart TD), showcasing complete internal logic, function calls, and interface interaction chains.

Trigger Scenarios

When users need:

  • Visualize and analyze Java method execution flows
  • Understand complex business logic call chains
  • Document core method execution paths
  • Track conditional branches and loop logic in code
  • Identify external dependencies and interface calls

Workflow

1. Input Format Recognition

Users will provide:

Entry Method: [Method name specified by user]

Code Context: [Java code provided by user]

2. Rigor Principles

No Guessing (ANTI-HALLUCINATION)

  • Strict Limitation: If the logic of called functions or interfaces is not in the code context provided by users, must be marked as [External Call/Source Code Not Provided]
  • Prohibited Behavior: Absolutely forbidden to fabricate or guess internal implementation logic of source code not provided

Mermaid Syntax Specification

  • Node ID: Must use English letters or numbers (e.g., A, B1, Node2)
  • Node Text: When containing special characters (parentheses, quotes, spaces, etc.), must use standard wrapping format
    • Format: A["Text Content()"]
  • Connection Syntax: Ensure arrow syntax is correct
    • Standard Arrow: -->
    • Dashed Arrow: -.->
    • Conditional Annotation: B -- Yes --> C

Entry-Driven Principle

  • Strict Focus: Must strictly start drawing from the entry method specified by users
  • Ignore Irrelevant: Ignore code unrelated to this execution chain

3. Analysis Steps

Step 1: Locate Entry Point

Find the entry method specified by users in the provided Java code.

Step 2: Logic Tracing

Read the logic of this method line by line, identify:

  • Conditional branches (if/else/switch)
  • Loop structures (for/while)
  • Downstream method calls
  • Interface interactions

Step 3: Extract Comments

Extract the following comment content and highly condense:

  • JavaDoc of entry method
  • JavaDoc of called methods
  • Inline comments in code (single-line/multi-line)
  • Use condensed comments as node descriptions or connection explanations

Step 4: Path Annotation

Each method/function in the flowchart must use relative path annotation:

  • Format 1: ClassName.methodName()
  • Format 2: Relative package path.ClassName.methodName()

Step 5: Generate Diagram

Convert analysis results into flowchart TD format Mermaid code.

4. Output Format Specification

Must strictly follow the following format:

1. Chain Summary

(Briefly summarize the core business flow starting from the entry method, limit to 3-5 sentences, based on actual code logic, no digression.)

2. Mermaid Diagram

flowchart TD
    %% Diagram style and logic
    A["Entry: ClassName.methodName()<br/>*Comment: Extracted comment explanation*"] --> B{"Judgment Condition<br/>*Comment: Extracted comment*"}
    B -- Yes --> C["RelativePath.ClassName.subMethod()<br/>*Comment: Extracted comment*"]
    B -- No --> D["RelativePath.InterfaceName.apiMethod()<br/>*[External Interface]*"]

3. Unknown Dependencies Note (if any)

(List external classes or methods called in the chain but not provided with specific implementations by users, demonstrating rigor.)

Best Practice Examples

Example 1: Simple Chain Analysis

Entry Method: UserService.validateUser()

Code Context:
@Service
public class UserService {
    /**
     * Validate user information
     * @param userId User ID
     * @return Whether valid
     */
    public boolean validateUser(Long userId) {
        if (userId == null) {
            return false;
        }

        User user = userRepository.findById(userId);
        if (user == null) {
            return false;
        }

        return checkUserStatus(user);
    }

    /**
     * Check user status
     */
    private boolean checkUserStatus(User user) {
        return user.isActive() && !user.isLocked();
    }
}

Expected Output:

1. Chain Summary

The validateUser() method first validates whether the user ID is null, then queries the user entity from the repository, and finally checks whether the user status is valid.

2. Mermaid Diagram

flowchart TD
    A["Entry: UserService.validateUser()<br/>*Comment: Validate user information*"] --> B{"userId == null<br/>*Check user ID*"}
    B -- Yes --> C["return false<br/>*Invalid user*"]
    B -- No --> D["userRepository.findById()<br/>*[External Call/Source Code Not Provided]*"]
    D --> E{"user == null<br/>*Check user existence*"}
    E -- Yes --> C
    E -- No --> F["UserService.checkUserStatus()<br/>*Comment: Check user status*"]
    F --> G["user.isActive() && !user.isLocked()<br/>*Validate status*"]
    G --> H["return true/false<br/>*Return result*"]

3. Unknown Dependencies Note

- userRepository.findById(): External repository call
- user.isActive(): User object method
- user.isLocked(): User object method

Example 2: Complex Conditional Chain

When encountering multi-layer nested conditions, loops, and exception handling, each path needs to be clearly annotated.

Example 3: External Interface Calls

All implementations not provided in the code context must be explicitly marked as [External Call/Source Code Not Provided].

Common Pitfalls to Avoid

  1. Don't Guess Implementations: Strictly based on provided code, don't add any assumed logic
  2. Don't Miss Branches: Ensure all paths of if/else/switch are drawn
  3. Don't Ignore Comments: All JavaDoc and inline comments should be extracted, condensed, and used
  4. Don't Mislabel: External calls must be explicitly marked, cannot be disguised as internal logic
  5. Don't Syntax Errors: Strictly follow Mermaid syntax, avoid rendering failures

Quality Checklist

Confirm before generating diagrams:

  • All node IDs are English letters/numbers
  • Special characters correctly wrapped in quotes
  • All conditional branch paths complete
  • All external calls explicitly marked
  • Comment content highly condensed and accurate
  • Path annotation format unified
  • Chain summary does not exceed 5 sentences
  • Strictly follow output format specification
Weekly Installs
1
Repository
lan-zk/skills
First Seen
10 days ago
Installed on
amp1
cline1
opencode1
cursor1
kimi-cli1
codex1