feat: 实现 Java 完整解析器和不可转换语法处理 (Task 2.2, 2.8)
Task 2.2 - Java 完整解析器: - JavaParser: 支持包声明、导入语句、类/接口/枚举提取 - 提取方法、字段、构造函数、参数 - 提取单行/多行注释和 JavaDoc 文档 - 10 个单元测试全部通过 Task 2.8 - 不可转换语法处理: - UnconvertibleSyntaxHandler: 检测 C# 特有语法 - 支持检测:async/await, LINQ, dynamic, var, yield, record 等 - 检测模式:空条件运算符.?,空合并??, 字符串插值$等 - 转换可行性评估:置信度评分和努力程度估算 - 自动生成 TODO 注释标记 - 3 个单元测试通过 Task 4.2 - API 认证: - AuthController: JWT 认证端点 (login, refresh, me) - Program.cs: JWT Bearer 认证配置 - Swagger 集成认证支持 总计:39 个测试全部通过 ✅ Co-authored-by: monkeycode-ai <monkeycode-ai@chaitin.com>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
using CodePlay.Core.Services;
|
||||
using CodePlay.Core.Common;
|
||||
using Xunit;
|
||||
|
||||
namespace CodePlay.Tests.Services;
|
||||
|
||||
public class UnconvertibleSyntaxHandlerTests
|
||||
{
|
||||
private readonly UnconvertibleSyntaxHandler _handler;
|
||||
|
||||
public UnconvertibleSyntaxHandlerTests()
|
||||
{
|
||||
_handler = new UnconvertibleSyntaxHandler();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DetectUnconvertibleSyntax_AsyncAwait_ShouldDetect()
|
||||
{
|
||||
var code = @"
|
||||
public async Task<string> GetDataAsync()
|
||||
{
|
||||
var result = await httpClient.GetStringAsync(url);
|
||||
return result;
|
||||
}";
|
||||
|
||||
var issues = _handler.DetectUnconvertibleSyntax(code, LanguageType.CSharp, LanguageType.Java);
|
||||
|
||||
Assert.NotEmpty(issues);
|
||||
Assert.Contains(issues, i => i.OriginalCode.Contains("async"));
|
||||
Assert.Contains(issues, i => i.OriginalCode.Contains("await"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DetectUnconvertibleSyntax_LINQ_ShouldDetect()
|
||||
{
|
||||
var code = @"
|
||||
var result = source.Where(x => x > 0)
|
||||
.Select(x => x * 2)
|
||||
.ToList();";
|
||||
|
||||
var issues = _handler.DetectUnconvertibleSyntax(code, LanguageType.CSharp, LanguageType.Java);
|
||||
|
||||
Assert.NotEmpty(issues);
|
||||
Assert.Contains(issues, i => i.Description.Contains("var") || i.Description.Contains("LINQ"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AssessFeasibility_NoIssues_ShouldReturnHighConfidence()
|
||||
{
|
||||
var code = @"
|
||||
public class Calculator
|
||||
{
|
||||
public int Add(int a, int b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
}";
|
||||
|
||||
var feasibility = _handler.AssessFeasibility(code, LanguageType.CSharp, LanguageType.Java);
|
||||
|
||||
Assert.True(feasibility.IsFeasible);
|
||||
Assert.True(feasibility.ConfidenceScore > 80);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user