UNPKG

agentsqripts

Version:

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

130 lines (123 loc) 3.21 kB
/** * @file Standardized issue object factory for consistent analysis result formatting * @description Single responsibility: Provide unified issue creation with standardized structure * * This factory module ensures consistent issue object structure across all AgentSqripts * analysis tools by providing specialized creation functions for different issue types. * It implements standardized formatting, validation, and default value assignment * to maintain consistency in analysis output and enable reliable processing pipelines. * * Design rationale: * - Standardized issue structure enables consistent processing across all analyzers * - Type-specific factories ensure appropriate fields and defaults for each analysis domain * - Centralized creation prevents structural inconsistencies in analysis results * - Default value assignment reduces boilerplate code in analyzer implementations * - Consistent location formatting enables reliable issue tracking and navigation * * Issue type specialization: * - Performance issues: Include effort estimation and performance savings metrics * - Security issues: Include risk assessment and CWE classification for vulnerability tracking * - Quality issues: Focus on maintainability impact and development workflow improvement */ /** * Creates a performance issue object * @param {Object} params - Issue parameters * @returns {Object} Formatted issue object */ function createPerformanceIssue(params) { const { type, severity, category, filePath, lineNumber, code, description, summary, recommendation, effort = 2, impact, estimatedSavings } = params; return { type, severity, category, location: `${filePath}:${lineNumber}`, line: lineNumber, code: code.trim ? code.trim() : code, description, summary, recommendation, effort, impact, estimatedSavings }; } /** * Creates a security issue object * @param {Object} params - Issue parameters * @returns {Object} Formatted issue object */ function createSecurityIssue(params) { const { type, severity, category = 'Security', filePath, lineNumber, code, description, recommendation, risk, cwe } = params; return { type, severity, category, location: `${filePath}:${lineNumber}`, line: lineNumber, code: code.trim ? code.trim() : code, description, recommendation, risk, cwe }; } /** * Creates a code quality issue object * @param {Object} params - Issue parameters * @returns {Object} Formatted issue object */ function createQualityIssue(params) { const { type, severity, category = 'Code Quality', filePath, lineNumber, code, description, recommendation, effort = 1, impact = 'Improves code maintainability' } = params; return { type, severity, category, location: `${filePath}:${lineNumber}`, line: lineNumber, code: code.trim ? code.trim() : code, description, recommendation, effort, impact }; } module.exports = { createPerformanceIssue, createSecurityIssue, createQualityIssue };