# Quick Start
This guide will help you get started with AUTOSAR Call Tree Analyzer in just a few minutes.
## Basic Usage
### 1. List All Functions
First, let's see what functions are in your codebase:
```bash
calltree -l -i /path/to/your/source
```
This will scan all C files in the directory and list all functions found.
**Example output:**
```
Database Statistics:
┌──────────────────┬─────┐
│ Files Scanned │ 15 │
│ Functions Found │ 127 │
│ Unique Names │ 124 │
│ Static Functions │ 3 │
│ Parse Errors │ 0 │
└──────────────────┴─────┘
Available Functions:
1. CanIf_Init
2. CanIf_Transmit
3. CanIf_MainFunction
...
```
### 2. Generate a Call Tree
Now let's generate a call tree for a specific function:
```bash
calltree -s CanIf_Transmit -i /path/to/your/source -o call_tree.md
```
This creates a Mermaid sequence diagram showing the function call tree.
**Example output (call_tree.md):**
```markdown
# Call Tree: CanIf_Transmit
## Sequence Diagram
\`\`\`mermaid
sequenceDiagram
participant CanIf_Transmit
participant CanIf_TransmitInternal
CanIf_Transmit->>CanIf_TransmitInternal: call(TxPduId, PduInfoPtr)
\`\`\`
## Function Details
| Function | File | Line | Return Type | Parameters |
|----------|------|------|-------------|------------|
| `CanIf_Transmit` | CanIf.c | 356 | `Std_ReturnType` | `PduIdType TxPduId`
`const PduInfoType *PduInfoPtr` |
```
### 3. Control Depth
By default, the call tree goes 3 levels deep. You can control this:
```bash
# Only 1 level deep
calltree -s main -i /path/to/source -d 1 -o call_tree.md
# Go 5 levels deep
calltree -s main -i /path/to/source -d 5 -o call_tree.md
```
### 4. Search for Functions
Search for functions matching a pattern:
```bash
calltree --search Can -i /path/to/source
```
**Example output:**
```
Search Results for 'Can':
CanIf_Init (CanIf.c:246)
CanIf_Transmit (CanIf.c:356)
CanNm_MainFunction (CanNm.c:1139)
Can_Write (Can.c:102)
Found 4 matches
```
## Advanced Features
### Enable Loop Detection
Detect and visualize loops in the call tree:
```bash
calltree -s main -i /path/to/source --enable-loops -o call_tree.md
```
### Enable Conditional Branches
Show if-else branches in the diagram:
```bash
calltree -s main -i /path/to/source --enable-conditionals -o call_tree.md
```
### Use Module Names
If you have a module configuration file:
```bash
calltree -s main -i /path/to/source --module-config module_mapping.yaml -o call_tree.md
```
### Generate Rhapsody XMI
For IBM Rhapsody integration:
```bash
calltree -s main -i /path/to/source -f rhapsody -o output.xmi
```
## Working with AUTOSAR Projects
AUTOSAR Call Tree Analyzer is designed to work with AUTOSAR codebases:
### Auto-detection of Include Directories
The tool automatically detects include directories in common AUTOSAR project structures:
- `/include`
- `/../include`
- `/../../include`
- `/../../infras/include` (AUTOSAR pattern)
### AUTOSAR Macro Support
The clang parser handles AUTOSAR-specific macros:
- `FUNC()` declarations
- `P2VAR()`, `P2CONST()` type definitions
- `RTE_CALL()` invocations
- Standard AUTOSAR types
### Example: Analyzing AUTOSAR Communication Stack
```bash
# Analyze the entire communication stack
calltree -l -i /path/to/autosar/infras/communication
# Generate call tree for CanIf module
calltree -s CanIf_MainFunction -i /path/to/autosar/infras/communication/CanIf -d 3
```
## Using Cache
For large codebases, use caching to speed up analysis:
```bash
# First run builds the cache
calltree -l -i /path/to/large/codebase
# Subsequent runs use the cache
calltree -s main -i /path/to/large/codebase # Fast!
# Force rebuild cache
calltree -l -i /path/to/large/codebase --rebuild-cache
# Disable cache
calltree -l -i /path/to/large/codebase --no-cache
```
## Common Patterns
### Analyze a Single File
```bash
calltree -l -i /path/to/single/file.c
```
### Analyze Multiple Directories
```bash
# Just specify the parent directory
calltree -l -i /path/to/project/src
```
### Find Entry Points
```bash
# List all functions and grep for main or init functions
calltree -l -i /path/to/source | grep -E "(main|init)"
```
## Next Steps
- {doc}`/getting_started/configuration` - Learn about configuration options
- {doc}`/user_guide/basic_usage` - Detailed usage examples
- {doc}`/tutorials/analyzing_autosar` - AUTOSAR-specific tutorials