agentsqripts
Version:
Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems
38 lines (36 loc) • 1.74 kB
JavaScript
/**
* @file Class counting utility for object-oriented complexity assessment
* @description Single responsibility: Count class definitions across JavaScript codebases for structural complexity analysis
*
* This utility provides accurate class counting capabilities that support complexity analysis by
* identifying the object-oriented structural elements in JavaScript code. Class count serves as
* an indicator of architectural complexity, design patterns usage, and potential maintainability
* challenges in modern JavaScript applications.
*
* Design rationale:
* - Pattern-based detection handles diverse JavaScript class declaration syntaxes efficiently
* - ES6+ class syntax recognition supports modern JavaScript development patterns
* - Comprehensive pattern matching covers traditional and modern class definition approaches
* - Simple implementation maintains performance for large-scale codebase analysis
* - Accurate counting enables meaningful architectural complexity assessment
*
* Class detection scope:
* - ES6 class declarations: Standard modern JavaScript class syntax
* - Constructor function patterns: Traditional JavaScript object-oriented patterns
* - Class expressions: Anonymous and named class expressions
* - Inheritance patterns: Extends keyword usage for class hierarchy analysis
* - Static method detection: Class-level functionality identification
*/
/**
* Counts classes in code
* @param {string} content - File content
* @returns {number} Class count
*/
function countClasses(content) {
const classPattern = /class\s+[a-zA-Z_$][a-zA-Z0-9_$]*\s*{/g;
const matches = content.match(classPattern);
return matches ? matches.length : 0;
}
module.exports = {
countClasses
};