Añadir Home
commit
8c901f9e1d
|
@ -0,0 +1,111 @@
|
|||
# CodeMerger Documentation
|
||||
|
||||
## Overview
|
||||
CodeMerger is a tool designed to intelligently merge C# code modifications from LLM (Language Learning Model) outputs with existing source code. It preserves original code structure while incorporating changes and additions proposed by the LLM.
|
||||
|
||||
## Features
|
||||
- Merges code changes while maintaining original namespaces and class structures
|
||||
- Handles partial code updates using continuation markers
|
||||
- Supports adding new members (fields, properties, methods)
|
||||
- Preserves code formatting and structure
|
||||
- Provides detailed logging of merge operations
|
||||
|
||||
## Core Components
|
||||
|
||||
### `cCodeMerger`
|
||||
The main class responsible for code merging operations. Uses the Roslyn API for C# syntax analysis and manipulation.
|
||||
|
||||
#### Key Features
|
||||
- Namespace preservation and mapping
|
||||
- Class member merging
|
||||
- Method body combining with continuation support
|
||||
- Detailed merge logging
|
||||
|
||||
### Usage Example
|
||||
```csharp
|
||||
var merger = new cCodeMerger();
|
||||
var logger = new LogViewModel();
|
||||
var result = merger.MergeCode(
|
||||
originalCode: File.ReadAllText("original.cs"),
|
||||
llmCode: File.ReadAllText("llm.cs"),
|
||||
outputPath: "merged.cs",
|
||||
logger: logger
|
||||
);
|
||||
```
|
||||
|
||||
## Special Markers
|
||||
|
||||
### Continuation Marker
|
||||
```csharp
|
||||
// ... resto del código ...
|
||||
```
|
||||
Used in LLM code to indicate where original code should be preserved after the modifications.
|
||||
|
||||
### Section Markers
|
||||
The merger adds these markers automatically to highlight changes:
|
||||
```csharp
|
||||
// ----------------------------------------
|
||||
// Added: New method
|
||||
```
|
||||
```csharp
|
||||
// ----------------------------------------
|
||||
// Modified: Updated implementation
|
||||
```
|
||||
|
||||
## Merging Process
|
||||
|
||||
### 1. Code Analysis
|
||||
- Parses both original and LLM code using Roslyn
|
||||
- Maps namespaces and classes
|
||||
- Identifies matching methods and members
|
||||
|
||||
### 2. Member Processing
|
||||
1. **Fields**
|
||||
- Updates existing fields if modified in LLM code
|
||||
- Adds new fields from LLM code
|
||||
|
||||
2. **Properties**
|
||||
- Preserves original properties unless modified
|
||||
- Incorporates new properties from LLM code
|
||||
|
||||
3. **Methods**
|
||||
- Merges method bodies using continuation markers
|
||||
- Preserves original code after continuation points
|
||||
- Adds new methods from LLM code
|
||||
|
||||
### 3. Code Organization
|
||||
- Maintains original namespace structure
|
||||
- Preserves class hierarchies
|
||||
- Adds clear separation markers for changes
|
||||
|
||||
## Best Practices
|
||||
|
||||
### Code Structure
|
||||
- Keep namespace declarations consistent between original and LLM code
|
||||
- Use continuation markers for partial updates
|
||||
- Maintain consistent method signatures
|
||||
|
||||
### Error Handling
|
||||
The merger provides detailed error information through:
|
||||
- Success/failure status in `MergeResult`
|
||||
- Diagnostic messages in the log
|
||||
- Detailed debug information during merging
|
||||
|
||||
## Technical Requirements
|
||||
- .NET 9.0 or later
|
||||
- Microsoft.CodeAnalysis.CSharp package
|
||||
- AvalonEdit (for UI components)
|
||||
|
||||
## Limitations
|
||||
- Only supports C# code
|
||||
- Requires syntactically valid input code
|
||||
- Best results with matching namespace structures
|
||||
|
||||
## Logging
|
||||
The merger provides detailed logging through the `LogViewModel` with different log levels:
|
||||
- Debug: Detailed processing information
|
||||
- Info: General operation status
|
||||
- Warning: Potential issues
|
||||
- Error: Operation failures
|
||||
|
||||
This documentation covers the main aspects of the CodeMerger tool. For more specific details, refer to the inline code comments and XML documentation.
|
Loading…
Reference in New Issue