agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
59 lines (56 loc) • 2.39 kB
JavaScript
/**
* @file UI Problems Analysis orchestrator for user experience optimization
* @description Single responsibility: Coordinate comprehensive UI/UX issue detection
*
* This analyzer identifies user interface and user experience issues in frontend code
* including ambiguous labels, icon inconsistencies, accessibility problems, and other
* UI patterns that could negatively impact user experience and usability.
*
* Design rationale:
* - Unified interface handles both file-level and project-level analysis
* - Specialized detectors focus on specific UI problem categories
* - Modular architecture enables adding new UI pattern detectors
* - Consistent analysis results enable integration with development workflows
*/
const fs = require('fs');
const path = require('path');
const { analyzeFileUIProblems } = require('./uiFileAnalyzer');
const { analyzeProjectUIProblems } = require('./uiProjectAnalyzer');
const { detectAmbiguousLabels } = require('./ambiguousLabelDetector');
const { detectIconInconsistencies } = require('./inconsistentIconDetector');
/**
* Analyze UI problems with automatic file vs project detection
*
* Technical function: Routes analysis to appropriate analyzer based on target type
*
* Implementation rationale:
* - Automatic detection provides convenient unified interface
* - fs.promises.stat check determines file vs directory without blocking
* - Delegation pattern enables specialized analysis for different scopes
* - Consistent return format regardless of analysis scope
*
* Analysis routing strategy:
* - Directory targets trigger comprehensive project-wide analysis
* - File targets enable focused analysis for specific components
* - Options parameter allows customization of detection sensitivity
* - Error handling maintains robustness for invalid paths
*
* @param {string} target - File or directory path
* @param {Object} options - Analysis options
* @returns {Promise<Object>} UI problem analysis results
*/
async function analyzeUIProblems(target, options = {}) {
const stats = await fs.promises.stat(target);
if (stats.isDirectory()) {
return analyzeProjectUIProblems(target, options);
} else {
return analyzeFileUIProblems(target, options);
}
}
module.exports = {
analyzeUIProblems,
analyzeFileUIProblems,
analyzeProjectUIProblems,
detectAmbiguousLabels,
detectIconInconsistencies
};