Files
monkeycode-ai 80b4718568 docs: 生成完整项目文档
创建以下文档:
- INDEX.md - 项目索引和概览
- ARCHITECTURE.md - 系统架构设计文档
- INTERFACES.md - 接口和类型定义文档
- DEVELOPER_GUIDE.md - 开发者指南

文档覆盖内容:
- 项目结构和模块说明
- 技术栈和依赖
- 核心组件设计
- API 接口定义
- 数据模型
- 开发环境配置
- 代码规范
- 测试指南
- 调试技巧
- Git 工作流
Co-authored-by: monkeycode-ai <monkeycode-ai@chaitin.com>
2026-06-03 04:17:14 +00:00

632 lines
13 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CodePlay 接口和类型定义
## 命名空间概览
### CodePlay.Core.Common
包含公共枚举类型。
### CodePlay.Core.Models
包含数据模型类。
### CodePlay.Core.Interfaces
包含核心接口定义。
## 枚举类型
### LanguageType
定义支持的编程语言。
```csharp
public enum LanguageType
{
None = 0, // 未指定
CSharp = 1, // C#
Java = 2, // Java
CPlusPlus = 3 // C++
}
```
### ConversionStatus
定义转换任务的状态。
```csharp
public enum ConversionStatus
{
Pending = 0, // 等待中
InProgress = 1, // 进行中
Completed = 2, // 已完成
PartiallyCompleted = 3, // 部分完成(需要人工检查)
Failed = 4, // 失败
Cancelled = 5 // 已取消
}
```
### ProjectStatus
定义项目的状态。
```csharp
public enum ProjectStatus
{
InProgress = 0, // 进行中
Completed = 1, // 已完成
Verified = 2, // 已验证
Archived = 3 // 已归档
}
```
### ValidationResult
定义验证结果的状态。
```csharp
public enum ValidationResult
{
NotValidated = 0, // 未验证
Passed = 1, // 验证通过
Failed_NeedsManualReview = 2, // 验证失败 - 需要人工检查
Failed_CompilationError = 3, // 验证失败 - 编译错误
Failed_TestFailed = 4 // 验证失败 - 测试失败
}
```
### SyntaxNodeType
定义语法节点的类型。
```csharp
public enum SyntaxNodeType
{
Unknown = 0,
CompilationUnit = 1, // 编译单元
Namespace = 2, // 命名空间
Class = 3, // 类
Interface = 4, // 接口
Method = 5, // 方法
Property = 6, // 属性
Field = 7, // 字段
Constructor = 8, // 构造函数
Statement = 9, // 语句
Expression = 10, // 表达式
Type = 11, // 类型
Parameter = 12, // 参数
Comment = 13, // 注释
DocumentationComment = 14 // 文档注释
}
```
### CommentType
定义注释的类型。
```csharp
public enum CommentType
{
SingleLine = 0, // 单行注释 //
MultiLine = 1, // 多行注释 /* */
XmlDoc = 2, // XML 文档注释 ///
JavaDoc = 3, // JavaDoc /** */
Doxygen = 4 // Doxygen /// 或 /** */
}
```
### DocFormat
定义文档格式。
```csharp
public enum DocFormat
{
XmlDoc = 0, // C# XML Doc
JavaDoc = 1, // Java JavaDoc
Doxygen = 2 // C++ Doxygen
}
```
### IssueType
定义转换问题的类型。
```csharp
public enum IssueType
{
UnconvertibleSyntax = 0, // 不可转换语法
TypeMappingWarning = 1, // 类型映射警告
ApiDifference = 2, // API 差异
SemanticDifference = 3, // 语义差异
PerformanceConsideration = 4 // 性能考虑
}
```
### LogLevel
定义日志级别。
```csharp
public enum LogLevel
{
Info = 0,
Warning = 1,
Error = 2,
Debug = 3
}
```
## 核心模型类
### ConversionRequest
转换请求模型。
```csharp
public class ConversionRequest
{
public string SourceCode { get; set; }
public LanguageType SourceLanguage { get; set; }
public LanguageType TargetLanguage { get; set; }
public string? ProjectId { get; set; }
public int ValidationRounds { get; set; } = 2;
public ConversionOptions? Options { get; set; }
}
```
### ConversionOptions
转换配置选项。
```csharp
public class ConversionOptions
{
public bool KeepComments { get; set; } = true;
public bool KeepDocStrings { get; set; } = true;
public bool KeepFormatting { get; set; } = true;
public int IndentSize { get; set; } = 4;
public bool UseTabs { get; set; } = false;
public bool EnableAutoFix { get; set; } = true;
}
```
### ConversionResult
转换结果模型。
```csharp
public class ConversionResult
{
public bool Success { get; set; }
public string TransformedCode { get; set; }
public ConversionReport? Report { get; set; }
public List<ConversionWarning> Warnings { get; set; }
public ValidationSummary? ValidationSummary { get; set; }
public string? ErrorMessage { get; set; }
}
```
### ConversionReport
转换报告。
```csharp
public class ConversionReport
{
public int LinesConverted { get; set; }
public int ClassesConverted { get; set; }
public int MethodsConverted { get; set; }
public TimeSpan Duration { get; set; }
public List<ConversionIssue> Issues { get; set; }
public List<TransformationLog> TransformationLog { get; set; }
public List<TodoItem> TodoItems { get; set; }
}
```
### ConversionWarning
转换警告。
```csharp
public class ConversionWarning
{
public string Code { get; set; }
public string Message { get; set; }
public int LineNumber { get; set; }
public int ColumnNumber { get; set; }
public string? Suggestion { get; set; }
}
```
### ValidationSummary
验证摘要。
```csharp
public class ValidationSummary
{
public bool Passed { get; set; }
public int RoundsExecuted { get; set; }
public bool NeedsManualReview { get; set; }
public List<CompilationError> CompilationErrors { get; set; }
public List<string> ValidationLog { get; set; }
}
```
### ConversionIssue
转换问题。
```csharp
public class ConversionIssue
{
public IssueType Type { get; set; }
public string Description { get; set; }
public int LineNumber { get; set; }
public string? OriginalCode { get; set; }
public string? Suggestion { get; set; }
}
```
### TransformationLog
转换日志。
```csharp
public class TransformationLog
{
public DateTime Timestamp { get; set; }
public string Operation { get; set; }
public string Details { get; set; }
public LogLevel Level { get; set; }
}
```
### TodoItem
TODO 项(用于不可转换的语法)。
```csharp
public class TodoItem
{
public string Description { get; set; }
public int LineNumber { get; set; }
public string OriginalSyntax { get; set; }
public string WhyNotDirect { get; set; }
public string RecommendedAlternative { get; set; }
public string? ReferenceLocation { get; set; }
}
```
### CompilationError
编译错误。
```csharp
public class CompilationError
{
public string ErrorId { get; set; }
public string Message { get; set; }
public int LineNumber { get; set; }
public int ColumnNumber { get; set; }
public bool IsError { get; set; } = true;
}
```
### Project
项目模型。
```csharp
public class Project
{
public string Id { get; set; } = Guid.NewGuid().ToString("N");
public string Name { get; set; }
public LanguageType SourceLanguage { get; set; }
public LanguageType TargetLanguage { get; set; }
public ProjectStatus Status { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime UpdatedAt { get; set; }
public List<ConversionTask> Tasks { get; set; }
public ProjectConfiguration? Configuration { get; set; }
}
```
### ConversionTask
转换任务。
```csharp
public class ConversionTask
{
public string Id { get; set; } = Guid.NewGuid().ToString("N");
public string SourceFilePath { get; set; }
public string TargetFilePath { get; set; }
public string? SourceCode { get; set; }
public string? TransformedCode { get; set; }
public ConversionStatus Status { get; set; }
public DateTime CreatedAt { get; set; }
public DateTime? CompletedAt { get; set; }
public ConversionResult? Result { get; set; }
}
```
### ProjectConfiguration
项目配置。
```csharp
public class ProjectConfiguration
{
public int ValidationRounds { get; set; } = 2;
public bool EnableAutoFix { get; set; } = true;
public bool KeepComments { get; set; } = true;
public bool KeepDocStrings { get; set; } = true;
public int IndentSize { get; set; } = 4;
public string? OutputDirectory { get; set; }
}
```
## 语法树模型
### SyntaxTree
语法树模型。
```csharp
public class SyntaxTree
{
public LanguageType Language { get; set; }
public SyntaxNode Root { get; set; }
public string? SourceFilePath { get; set; }
public string? SourceCode { get; set; }
public List<SyntaxComment> Comments { get; set; }
public List<SyntaxDocumentation> Documentation { get; set; }
}
```
### SyntaxNode
语法节点。
```csharp
public class SyntaxNode
{
public SyntaxNodeType Type { get; set; }
public string Text { get; set; }
public List<SyntaxNode> Children { get; set; }
public Dictionary<string, object?> Metadata { get; set; }
public SyntaxNode? Parent { get; set; }
public bool IsUnconvertible { get; set; }
public string? TodoDescription { get; set; }
}
```
### SyntaxComment
语法注释。
```csharp
public class SyntaxComment
{
public CommentType Type { get; set; }
public string Text { get; set; }
public int LineNumber { get; set; }
}
```
### SyntaxDocumentation
语法文档。
```csharp
public class SyntaxDocumentation
{
public string ElementName { get; set; }
public string Content { get; set; }
public DocFormat Format { get; set; }
}
```
## 核心接口
### IParser
语言解析器接口。
```csharp
public interface IParser
{
Task<SyntaxTree> ParseAsync(string sourceCode, CancellationToken cancellationToken = default);
}
```
**实现**
- `BaseParser` - 抽象基类
- `CSharpParser` - C# 解析器
### IConverter
代码转换器接口。
```csharp
public interface IConverter
{
Task<ConversionResult> ConvertAsync(
SyntaxTree syntaxTree,
LanguageType targetLanguage,
ConversionOptions? options = null,
CancellationToken cancellationToken = default);
}
```
**实现**
- `CSharpToJavaConverter` - C# → Java 转换器
### ICodeGenerator
代码生成器接口。
```csharp
public interface ICodeGenerator
{
string Generate(SyntaxTree syntaxTree);
}
```
**实现**
- `JavaCodeGenerator` - Java 代码生成器
### IConversionStrategy
转换策略接口。
```csharp
public interface IConversionStrategy
{
LanguageType SourceLanguage { get; }
LanguageType TargetLanguage { get; }
SyntaxNode ConvertNode(SyntaxNode node, ConversionContext context);
string MapType(string sourceType);
}
```
**实现**
- `CSharpToJavaStrategy` - C# → Java 转换策略
### ICompilerValidator
编译验证器接口。
```csharp
public interface ICompilerValidator
{
Task<ValidationResult> ValidateAsync(string code, LanguageType language, CancellationToken cancellationToken = default);
}
```
### IAutoFixEngine
自动修复引擎接口。
```csharp
public interface IAutoFixEngine
{
Task<FixResult> FixAsync(string code, List<CompilationError> errors, int round, CancellationToken cancellationToken = default);
}
```
## 辅助类
### TypeMapping
类型映射。
```csharp
public class TypeMapping
{
public string SourceType { get; set; }
public string TargetType { get; set; }
}
```
### ConversionContext
转换上下文。
```csharp
public class ConversionContext
{
public LanguageType SourceLanguage { get; set; }
public LanguageType TargetLanguage { get; set; }
public ConversionOptions? Options { get; set; }
public List<ConversionIssue> Issues { get; set; }
public List<TodoItem> TodoItems { get; set; }
public List<TransformationLog> Logs { get; set; }
}
```
### FixResult
修复结果。
```csharp
public class FixResult
{
public bool CanFix { get; set; }
public string? FixedCode { get; set; }
public string? FixDescription { get; set; }
public List<CompilationError> RemainingErrors { get; set; }
}
```
### CompilationResult
编译结果。
```csharp
public class CompilationResult
{
public bool Success { get; set; }
public string Output { get; set; }
public List<CompilationError> Errors { get; set; }
public List<CompilationError> Warnings { get; set; }
}
```
## API DTO 类
### LanguagePairDto
语言对数据传输对象。
```csharp
public class LanguagePairDto
{
public string SourceLanguage { get; set; }
public string TargetLanguage { get; set; }
public bool Supported { get; set; }
}
```
## 使用示例
### 创建转换请求
```csharp
var request = new ConversionRequest
{
SourceCode = "public class Test { }",
SourceLanguage = LanguageType.CSharp,
TargetLanguage = LanguageType.Java,
ValidationRounds = 2,
Options = new ConversionOptions
{
KeepComments = true,
KeepDocStrings = true
}
};
```
### 使用转换服务
```csharp
var service = new ConversionService();
var result = await service.ConvertAsync(request);
if (result.Success)
{
Console.WriteLine(result.TransformedCode);
}
```
### 检查转换支持
```csharp
if (service.IsConversionSupported(LanguageType.CSharp, LanguageType.Java))
{
Console.WriteLine("C# to Java conversion is supported");
}
```