UNPKG

agentsqripts

Version:

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

57 lines (49 loc) 1.72 kB
/** * @file SRP file collector * @description Recursively collects files for SRP analysis */ const fs = require('fs'); const { promises: fsPromises } = require('fs'); const path = require('path'); const localVars = require('../../config/localVars'); /** * Recursively get all files in a directory with specified extensions * @param {string} dirPath - Directory path to scan * @param {string[]} extensions - File extensions to include * @param {string[]} files - Accumulator for found files * @returns {string[]} Array of file paths */ async function getAllFiles(dirPath, extensions = localVars.DEFAULT_EXTENSIONS, files = []) { try { try { await fsPromises.access(dirPath); } catch (error) { return files; } const entries = await fsPromises.readdir(dirPath); for (const entry of entries) { const fullPath = path.join(dirPath, entry); try { const stat = await fsPromises.stat(fullPath); if (stat.isDirectory()) { // Skip common directories that shouldn't be analyzed if (!['node_modules', '.git', 'dist', 'build', '.next', 'coverage'].includes(entry)) { await getAllFiles(fullPath, extensions, files); } } else if (extensions.includes(path.extname(fullPath))) { files.push(fullPath); } } catch (error) { // Skip files that can't be accessed console.warn(`Warning: Cannot access ${fullPath}: ${error.message}`); } } } catch (error) { console.warn(`Warning: Cannot read directory ${dirPath}: ${error.message}`); } return files; } module.exports = { getAllFiles, DEFAULT_EXTENSIONS: localVars.DEFAULT_EXTENSIONS };