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

13 KiB
Raw Permalink Blame History

CodePlay 接口和类型定义

命名空间概览

CodePlay.Core.Common

包含公共枚举类型。

CodePlay.Core.Models

包含数据模型类。

CodePlay.Core.Interfaces

包含核心接口定义。

枚举类型

LanguageType

定义支持的编程语言。

public enum LanguageType
{
    None = 0,          // 未指定
    CSharp = 1,        // C#
    Java = 2,          // Java
    CPlusPlus = 3      // C++
}

ConversionStatus

定义转换任务的状态。

public enum ConversionStatus
{
    Pending = 0,              // 等待中
    InProgress = 1,           // 进行中
    Completed = 2,            // 已完成
    PartiallyCompleted = 3,   // 部分完成(需要人工检查)
    Failed = 4,               // 失败
    Cancelled = 5             // 已取消
}

ProjectStatus

定义项目的状态。

public enum ProjectStatus
{
    InProgress = 0,      // 进行中
    Completed = 1,       // 已完成
    Verified = 2,        // 已验证
    Archived = 3         // 已归档
}

ValidationResult

定义验证结果的状态。

public enum ValidationResult
{
    NotValidated = 0,                    // 未验证
    Passed = 1,                          // 验证通过
    Failed_NeedsManualReview = 2,        // 验证失败 - 需要人工检查
    Failed_CompilationError = 3,         // 验证失败 - 编译错误
    Failed_TestFailed = 4                // 验证失败 - 测试失败
}

SyntaxNodeType

定义语法节点的类型。

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

定义注释的类型。

public enum CommentType
{
    SingleLine = 0,           // 单行注释 //
    MultiLine = 1,            // 多行注释 /* */
    XmlDoc = 2,               // XML 文档注释 ///
    JavaDoc = 3,              // JavaDoc /** */
    Doxygen = 4               // Doxygen /// 或 /** */
}

DocFormat

定义文档格式。

public enum DocFormat
{
    XmlDoc = 0,      // C# XML Doc
    JavaDoc = 1,     // Java JavaDoc
    Doxygen = 2      // C++ Doxygen
}

IssueType

定义转换问题的类型。

public enum IssueType
{
    UnconvertibleSyntax = 0,       // 不可转换语法
    TypeMappingWarning = 1,        // 类型映射警告
    ApiDifference = 2,             // API 差异
    SemanticDifference = 3,        // 语义差异
    PerformanceConsideration = 4   // 性能考虑
}

LogLevel

定义日志级别。

public enum LogLevel
{
    Info = 0,
    Warning = 1,
    Error = 2,
    Debug = 3
}

核心模型类

ConversionRequest

转换请求模型。

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

转换配置选项。

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

转换结果模型。

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

转换报告。

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

转换警告。

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

验证摘要。

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

转换问题。

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

转换日志。

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 项(用于不可转换的语法)。

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

编译错误。

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

项目模型。

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

转换任务。

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

项目配置。

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

语法树模型。

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

语法节点。

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

语法注释。

public class SyntaxComment
{
    public CommentType Type { get; set; }
    public string Text { get; set; }
    public int LineNumber { get; set; }
}

SyntaxDocumentation

语法文档。

public class SyntaxDocumentation
{
    public string ElementName { get; set; }
    public string Content { get; set; }
    public DocFormat Format { get; set; }
}

核心接口

IParser

语言解析器接口。

public interface IParser
{
    Task<SyntaxTree> ParseAsync(string sourceCode, CancellationToken cancellationToken = default);
}

实现

  • BaseParser - 抽象基类
  • CSharpParser - C# 解析器

IConverter

代码转换器接口。

public interface IConverter
{
    Task<ConversionResult> ConvertAsync(
        SyntaxTree syntaxTree, 
        LanguageType targetLanguage, 
        ConversionOptions? options = null, 
        CancellationToken cancellationToken = default);
}

实现

  • CSharpToJavaConverter - C# → Java 转换器

ICodeGenerator

代码生成器接口。

public interface ICodeGenerator
{
    string Generate(SyntaxTree syntaxTree);
}

实现

  • JavaCodeGenerator - Java 代码生成器

IConversionStrategy

转换策略接口。

public interface IConversionStrategy
{
    LanguageType SourceLanguage { get; }
    LanguageType TargetLanguage { get; }
    SyntaxNode ConvertNode(SyntaxNode node, ConversionContext context);
    string MapType(string sourceType);
}

实现

  • CSharpToJavaStrategy - C# → Java 转换策略

ICompilerValidator

编译验证器接口。

public interface ICompilerValidator
{
    Task<ValidationResult> ValidateAsync(string code, LanguageType language, CancellationToken cancellationToken = default);
}

IAutoFixEngine

自动修复引擎接口。

public interface IAutoFixEngine
{
    Task<FixResult> FixAsync(string code, List<CompilationError> errors, int round, CancellationToken cancellationToken = default);
}

辅助类

TypeMapping

类型映射。

public class TypeMapping
{
    public string SourceType { get; set; }
    public string TargetType { get; set; }
}

ConversionContext

转换上下文。

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

修复结果。

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

编译结果。

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

语言对数据传输对象。

public class LanguagePairDto
{
    public string SourceLanguage { get; set; }
    public string TargetLanguage { get; set; }
    public bool Supported { get; set; }
}

使用示例

创建转换请求

var request = new ConversionRequest
{
    SourceCode = "public class Test { }",
    SourceLanguage = LanguageType.CSharp,
    TargetLanguage = LanguageType.Java,
    ValidationRounds = 2,
    Options = new ConversionOptions
    {
        KeepComments = true,
        KeepDocStrings = true
    }
};

使用转换服务

var service = new ConversionService();
var result = await service.ConvertAsync(request);

if (result.Success)
{
    Console.WriteLine(result.TransformedCode);
}

检查转换支持

if (service.IsConversionSupported(LanguageType.CSharp, LanguageType.Java))
{
    Console.WriteLine("C# to Java conversion is supported");
}