UNPKG

agentsqripts

Version:

Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems

125 lines (105 loc) 3.41 kB
/** * @file Scope assessment generator for problem-scope CLI * @description Generates comprehensive summaries and assessments */ /** * Generate comprehensive summary from analysis results * @param {Object} results - Analysis results object */ function generateComprehensiveSummary(results) { // Calculate overall metrics let totalIssues = 0; let criticalIssues = 0; const severityLevels = []; // Aggregate issues from all analyses Object.values(results.analyses).forEach(analysis => { if (analysis.error) return; if (analysis.vulnerabilities) { totalIssues += analysis.vulnerabilities.length; criticalIssues += analysis.vulnerabilities.filter(v => v.severity === 'CRITICAL').length; } if (analysis.violations) { totalIssues += analysis.violations.length; criticalIssues += analysis.violations.filter(v => v.severity === 'CRITICAL').length; } if (analysis.opportunities) { totalIssues += analysis.opportunities.length; } if (analysis.severity) { severityLevels.push(analysis.severity); } }); // Determine overall risk level const overallRiskLevel = calculateOverallRisk(severityLevels); // Update summary results.summary = { overallRiskLevel, totalIssues, criticalIssues, recommendationsCount: generateRecommendationCount(results), scopeAssessment: generateScopeAssessment(results) }; } /** * Calculate overall risk level * @param {Array} severityLevels - Array of severity levels * @returns {string} Overall risk level */ function calculateOverallRisk(severityLevels) { if (severityLevels.includes('CRITICAL')) return 'CRITICAL'; if (severityLevels.includes('HIGH')) return 'HIGH'; if (severityLevels.includes('MEDIUM')) return 'MEDIUM'; return 'LOW'; } /** * Generate recommendation count * @param {Object} results - Analysis results * @returns {number} Number of recommendations */ function generateRecommendationCount(results) { let count = 0; Object.values(results.analyses).forEach(analysis => { if (analysis.recommendations) { count += analysis.recommendations.length; } if (analysis.vulnerabilities) { count += analysis.vulnerabilities.length; } if (analysis.violations) { count += analysis.violations.length; } }); return count; } /** * Generate scope assessment * @param {Object} results - Analysis results * @returns {Object} Scope assessment object */ function generateScopeAssessment(results) { const assessment = { riskDistribution: {}, analysisCompletion: {}, priorityAreas: [] }; // Calculate risk distribution const riskCounts = { LOW: 0, MEDIUM: 0, HIGH: 0, CRITICAL: 0 }; Object.entries(results.analyses).forEach(([type, analysis]) => { if (analysis.severity) { riskCounts[analysis.severity]++; } assessment.analysisCompletion[type] = analysis.error ? 'failed' : 'completed'; }); assessment.riskDistribution = riskCounts; // Identify priority areas assessment.priorityAreas = Object.entries(results.analyses) .filter(([_, analysis]) => analysis.severity === 'HIGH' || analysis.severity === 'CRITICAL') .map(([type, _]) => type); return assessment; } module.exports = { generateComprehensiveSummary, calculateOverallRisk, generateRecommendationCount, generateScopeAssessment };