代码测试
This commit is contained in:
@@ -135,18 +135,15 @@ def merge_issues_with_code(scan_results: Dict[str, Any], diff: str) -> Dict[str,
|
||||
|
||||
|
||||
def convert_ai_reviews_to_issues(ai_result: Dict[str, Any], parser: Optional[DiffParser] = None) -> List[Dict[str, Any]]:
|
||||
"""将 AI 审查结果转换为问题格式"""
|
||||
"""将 AI 审查结果(issues 格式)转换为统一问题格式"""
|
||||
issues = []
|
||||
ai_issues = ai_result.get('issues', [])
|
||||
|
||||
reviews = ai_result.get('reviews', [])
|
||||
for review in reviews:
|
||||
file_path = review.get('file', '')
|
||||
review_data = review.get('review', {})
|
||||
|
||||
if not review_data:
|
||||
for issue in ai_issues:
|
||||
file_path = issue.get('file', '')
|
||||
if not file_path:
|
||||
continue
|
||||
|
||||
# 获取文件内容作为代码上下文
|
||||
code_context = None
|
||||
if parser:
|
||||
matched_path = None
|
||||
@@ -154,51 +151,28 @@ def convert_ai_reviews_to_issues(ai_result: Dict[str, Any], parser: Optional[Dif
|
||||
if file_path.endswith(path) or path.endswith(file_path) or file_path in path:
|
||||
matched_path = path
|
||||
break
|
||||
|
||||
if matched_path:
|
||||
chunk = parser.get_file_content(matched_path)
|
||||
if chunk and chunk.new_content:
|
||||
lines = chunk.new_content.split('\n')[:10]
|
||||
code_context = {
|
||||
'file': matched_path,
|
||||
'line': 1,
|
||||
'line': issue.get('line', 1),
|
||||
'preview': '\n'.join(lines),
|
||||
'has_more': len(chunk.new_content.split('\n')) > 10
|
||||
}
|
||||
|
||||
# 处理优点(不作为问题显示)
|
||||
advantages = review_data.get('优点', [])
|
||||
# 处理问题
|
||||
problems = review_data.get('问题', [])
|
||||
for idx, problem in enumerate(problems):
|
||||
issues.append({
|
||||
'file': file_path,
|
||||
'line': 1, # AI 审查不返回具体行号
|
||||
'severity': 'warning',
|
||||
'message': f'[AI 建议] {problem}',
|
||||
'category': 'ai',
|
||||
'code_context': code_context,
|
||||
'review_data': {
|
||||
'type': '问题',
|
||||
'content': problem
|
||||
}
|
||||
})
|
||||
|
||||
# 处理优化建议
|
||||
optimizations = review_data.get('优化', [])
|
||||
for optimization in optimizations:
|
||||
issues.append({
|
||||
'file': file_path,
|
||||
'line': 1,
|
||||
'severity': 'info',
|
||||
'message': f'[AI 优化] {optimization}',
|
||||
'category': 'ai',
|
||||
'code_context': code_context,
|
||||
'review_data': {
|
||||
'type': '优化',
|
||||
'content': optimization
|
||||
}
|
||||
})
|
||||
sev = issue.get('severity', 'warning')
|
||||
sev = sev.lower() if isinstance(sev, str) else 'warning'
|
||||
issues.append({
|
||||
'file': file_path,
|
||||
'line': issue.get('line', 1),
|
||||
'severity': sev,
|
||||
'message': issue.get('message', ''),
|
||||
'category': 'ai',
|
||||
'code_context': code_context,
|
||||
'defect_reason': issue.get('defect_reason', '')
|
||||
})
|
||||
|
||||
return issues
|
||||
|
||||
|
||||
Reference in New Issue
Block a user