Skip to main content
Glama
analyzer.js3.28 kB
#!/usr/bin/env node /** * 分析執行器 * 直接調用分析器類別,不依賴 MCP 協議 */ import { ModernizationAnalyzer } from '../dist/src/analyzers/modernization.js'; import { CompatibilityAnalyzer, formatCompatibilityReport } from '../dist/src/analyzers/compatibility.js'; import { CodeParser } from '../dist/src/parsers/index.js'; import { ReportFormatter } from '../dist/src/utils/report-formatter.js'; import { CanIUseService } from '../dist/src/services/caniuse-service.js'; /** * 執行現代化分析 */ export async function runModernizationAnalysis(projectPath, includePatterns, excludePatterns) { const parser = new CodeParser(); const analyzer = new ModernizationAnalyzer(parser); const formatter = new ReportFormatter(); const analysis = await analyzer.analyze(projectPath, includePatterns, excludePatterns); const report = formatter.formatModernizationReport(analysis, 'markdown'); return { analysis, report, summary: { totalFiles: analysis.summary.totalFiles, totalSuggestions: analysis.summary.totalSuggestions, performanceGain: analysis.summary.potentialPerformanceGain, bundleReduction: analysis.summary.bundleSizeReduction, risk: analysis.riskAssessment.overallRisk } }; } /** * 執行相容性分析 */ export async function runCompatibilityAnalysis(projectPath, includePatterns, excludePatterns, browserslistConfig) { const parser = new CodeParser(); const canIUseService = new CanIUseService(); const analyzer = new CompatibilityAnalyzer(parser, canIUseService); const analysis = await analyzer.analyze( projectPath, includePatterns, excludePatterns, browserslistConfig || undefined ); const report = formatCompatibilityReport(analysis, 'markdown'); return { analysis, report, summary: { totalApis: analysis.summary.totalApisAnalyzed, compatibleApis: analysis.summary.compatibleApis, incompatibleApis: analysis.summary.incompatibleApis, overallCompatibility: analysis.summary.overallCompatibility, polyfillsNeeded: analysis.summary.polyfillsNeeded } }; } /** * 執行所有分析 */ export async function runAllAnalyses(options) { const { projectPath, includePatterns, excludePatterns, browserslistConfig, enableModernization, enableCompatibility } = options; const results = { modernization: null, compatibility: null, errors: [] }; // 執行現代化分析 if (enableModernization) { try { results.modernization = await runModernizationAnalysis( projectPath, includePatterns, excludePatterns ); } catch (error) { results.errors.push({ type: 'modernization', error: error instanceof Error ? error.message : String(error) }); } } // 執行相容性分析 if (enableCompatibility) { try { results.compatibility = await runCompatibilityAnalysis( projectPath, includePatterns, excludePatterns, browserslistConfig ); } catch (error) { results.errors.push({ type: 'compatibility', error: error instanceof Error ? error.message : String(error) }); } } return results; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mukiwu/dev-advisor-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server