""" 代码分析服务 """ import os import json import subprocess from typing import List, Dict, Any from app.core.analyzers.base_analyzer import BaseAnalyzer from app.core.analyzers.python_analyzer import PythonAnalyzer from app.core.analyzers.cpp_analyzer import CppAnalyzer from app.core.analyzers.javascript_analyzer import JavaScriptAnalyzer from app.services.ai_service import AIService class AnalyzerService: """代码分析服务""" def __init__(self): self.analyzers = { 'python': PythonAnalyzer(), 'cpp': CppAnalyzer(), 'javascript': JavaScriptAnalyzer(), } self.ai_service = AIService() async def analyze_project(self, project_path: str, language: str, config: Dict[str, Any] = None) -> List[Dict[str, Any]]: """分析项目代码""" if language not in self.analyzers: raise ValueError(f"不支持的语言: {language}") analyzer = self.analyzers[language] # 运行静态分析 static_results = await analyzer.analyze(project_path, config) # AI增强分析 ai_enhanced_results = [] for result in static_results: # 对每个漏洞进行AI增强 ai_enhancement = await self.ai_service.enhance_vulnerability(result) result.update(ai_enhancement) ai_enhanced_results.append(result) return ai_enhanced_results def get_supported_languages(self) -> List[str]: """获取支持的语言列表""" return list(self.analyzers.keys()) def get_analyzer_info(self, language: str) -> Dict[str, Any]: """获取分析器信息""" if language not in self.analyzers: return None analyzer = self.analyzers[language] return { 'name': analyzer.name, 'version': analyzer.version, 'supported_extensions': analyzer.supported_extensions, 'description': analyzer.description }