UNPKG

agentsqripts

Version:

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

57 lines (48 loc) 1.88 kB
/** * @file Inline style detector * @description Detects excessive inline styles */ const { UI_PROBLEM_PATTERNS, UI_CONFIG } = require('./uiProblemPatterns'); /** * Detects excessive inline styles * @param {string} content - File content * @param {string} filePath - Path to the file * @returns {Array} Array of inline style issues */ function detectExcessiveInlineStyles(content, filePath) { const issues = []; const inlineStyleMatches = content.match(/style\s*=\s*["'][^"']+["']/gi) || []; const inlineStyleCount = inlineStyleMatches.length; if (inlineStyleCount > UI_CONFIG.maxInlineStyles) { const patternInfo = UI_PROBLEM_PATTERNS['excessive_inline_styles']; // Find common style patterns const stylePatterns = {}; inlineStyleMatches.forEach(style => { const normalized = style.toLowerCase().replace(/\s+/g, ' '); stylePatterns[normalized] = (stylePatterns[normalized] || 0) + 1; }); const repeatedStyles = Object.entries(stylePatterns) .filter(([, count]) => count > 1) .sort((a, b) => b[1] - a[1]); issues.push({ type: 'excessive_inline_styles', severity: patternInfo.severity, category: patternInfo.category, location: filePath, count: inlineStyleCount, threshold: UI_CONFIG.maxInlineStyles, summary: `${inlineStyleCount} inline styles detected (threshold: ${UI_CONFIG.maxInlineStyles})`, recommendation: `Extract repeated styles to CSS classes, styled-components, or theme configuration`, effort: patternInfo.effort, impact: patternInfo.impact, repeatedStyles: repeatedStyles.slice(0, 5).map(([style, count]) => ({ style: style.substring(0, 50) + (style.length > 50 ? '...' : ''), occurrences: count })) }); } return issues; } module.exports = { detectExcessiveInlineStyles };