135 lines
4.6 KiB
Markdown
135 lines
4.6 KiB
Markdown
---
|
|
name: roslyn-api
|
|
description: Use this for C# code analysis, querying .NET projects, finding symbols, getting diagnostics, or any Roslyn/semantic analysis tasks using the bridge server
|
|
---
|
|
|
|
# Roslyn API Testing Guide
|
|
|
|
Use this guide when testing or accessing the Claude Roslyn Bridge HTTP endpoints.
|
|
|
|
## Server Info
|
|
- **Base URL**: `http://localhost:59123/query`
|
|
- **Method**: POST
|
|
- **Content-Type**: application/json
|
|
|
|
## Correct Command Syntax
|
|
|
|
### Using curl (Recommended on Windows)
|
|
|
|
```bash
|
|
# Test if server is running
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getprojects\"}"
|
|
|
|
# Get document info
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getdocument\",\"filePath\":\"C:\\\\path\\\\to\\\\file.cs\"}"
|
|
|
|
# Get symbol at position
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getsymbol\",\"filePath\":\"C:\\\\Users\\\\AJ\\\\Desktop\\\\PepLib\\\\PepLib\\\\Program.cs\",\"line\":10,\"column\":5}"
|
|
```
|
|
|
|
**IMPORTANT curl syntax rules:**
|
|
- Use `-X POST` (NOT `-Method POST`)
|
|
- Use `-H` for headers (NOT `-Headers`)
|
|
- Use `-d` for data (NOT `-Body`)
|
|
- Escape backslashes in file paths: `\\\\` becomes `\\` in JSON
|
|
|
|
### Using PowerShell (Alternative)
|
|
|
|
Run these commands **directly in PowerShell**, NOT via `powershell -Command`:
|
|
|
|
```powershell
|
|
# Test server
|
|
$body = @{queryType='getprojects'} | ConvertTo-Json
|
|
Invoke-RestMethod -Uri 'http://localhost:59123/query' -Method Post -Body $body -ContentType 'application/json'
|
|
|
|
# Get document
|
|
$body = @{
|
|
queryType='getdocument'
|
|
filePath='C:\path\to\file.cs'
|
|
} | ConvertTo-Json
|
|
Invoke-RestMethod -Uri 'http://localhost:59123/query' -Method Post -Body $body -ContentType 'application/json'
|
|
```
|
|
|
|
**IMPORTANT PowerShell rules:**
|
|
- Run directly in PowerShell console, NOT via `bash -c` or `powershell -Command`
|
|
- Use single quotes around URI and content type
|
|
- File paths don't need escaping in PowerShell hash tables
|
|
|
|
## Quick Reference: All Endpoints
|
|
|
|
### Query Endpoints
|
|
|
|
| Endpoint | Required Fields | Optional Fields |
|
|
|----------|----------------|-----------------|
|
|
| `getprojects` | - | - |
|
|
| `getdocument` | `filePath` | - |
|
|
| `getsymbol` | `filePath`, `line`, `column` | - |
|
|
| `getdiagnostics` | - | `filePath` |
|
|
| `findreferences` | `filePath`, `line`, `column` | - |
|
|
| `findsymbol` | `symbolName` | `parameters.kind` |
|
|
| `gettypemembers` | `symbolName` | `parameters.includeInherited` |
|
|
| `gettypehierarchy` | `symbolName` | `parameters.direction` |
|
|
| `findimplementations` | `symbolName` OR `filePath`+`line`+`column` | - |
|
|
| `getnamespacetypes` | `symbolName` | - |
|
|
| `getcallhierarchy` | `filePath`, `line`, `column` | `parameters.direction` |
|
|
| `getsolutionoverview` | - | - |
|
|
| `getsymbolcontext` | `filePath`, `line`, `column` | - |
|
|
| `searchcode` | `symbolName` (regex) | `parameters.scope` |
|
|
|
|
### Editing Endpoints
|
|
|
|
| Endpoint | Required Fields | Optional Fields |
|
|
|----------|----------------|-----------------|
|
|
| `formatdocument` | `filePath` | - |
|
|
| `organizeusings` | `filePath` | - |
|
|
| `renamesymbol` | `filePath`, `line`, `column`, `parameters.newName` | - |
|
|
| `addmissingusing` | `filePath`, `line`, `column` | - |
|
|
| `applycodefix` | `filePath`, `line`, `column` | - |
|
|
|
|
## Common Test Examples
|
|
|
|
```bash
|
|
# Get all projects in solution
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getprojects\"}"
|
|
|
|
# Get solution overview
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getsolutionoverview\"}"
|
|
|
|
# Get diagnostics for entire solution
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"getdiagnostics\"}"
|
|
|
|
# Find all classes containing "Helper"
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"searchcode\",\"symbolName\":\".*Helper\",\"parameters\":{\"scope\":\"classes\"}}"
|
|
|
|
# Format a document
|
|
curl -X POST http://localhost:59123/query -H "Content-Type: application/json" -d "{\"queryType\":\"formatdocument\",\"filePath\":\"C:\\\\path\\\\to\\\\file.cs\"}"
|
|
```
|
|
|
|
## Response Format
|
|
|
|
Success:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "Optional message",
|
|
"data": { /* Response data */ }
|
|
}
|
|
```
|
|
|
|
Error:
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "Error message",
|
|
"data": null
|
|
}
|
|
```
|
|
|
|
## Notes
|
|
|
|
- Line numbers are **1-based**
|
|
- Column numbers are **0-based**
|
|
- File paths in JSON need escaped backslashes: `C:\\path\\to\\file.cs`
|
|
- All workspace modifications use VS threading model (`JoinableTaskFactory.SwitchToMainThreadAsync()`)
|
|
- The Visual Studio extension must be running for endpoints to work
|