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
JavaScript
/**
* @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
};