UNPKG

agentsqripts

Version:

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

53 lines (44 loc) 2.29 kB
/** * @file File collection utilities for security analysis * @description Handles file discovery and filtering for security vulnerability scanning * This module provides efficient file system traversal for security analysis, implementing * configurable filtering to focus scanning on relevant source files while avoiding * performance bottlenecks from scanning unnecessary directories like node_modules. */ const { getAllFiles } = require('../utils/directoryScanner'); /** * Collect files for security analysis with smart filtering * @param {string} projectPath - Root path to scan for security vulnerabilities * @param {Object} options - Scanning configuration options * @param {Array<string>} options.extensions - File extensions to include (defaults to common source file types) * @param {Array<string>} options.excludePatterns - Directory patterns to skip for performance * @param {boolean} options.dogfood - Include test/demo files for dogfooding analysis * @returns {Array<string>} Array of absolute file paths that should be analyzed for security issues * * Rationale: Uses shared directory scanner for consistent file collection across all analysis tools. */ async function collectFiles(projectPath, options = {}) { // Default to common source file extensions that typically contain security vulnerabilities const extensions = options.extensions || ['.js', '.ts', '.jsx', '.tsx', '.py', '.java', '.php']; // Base exclusion patterns for performance (always excluded) let excludePatterns = [ 'node_modules', '.git', 'dist', 'build', '.cache', '.local', '.config', '.upm', 'tempAgentFiles', 'attached_assets', 'logs', '.clinerules', '.kilocode', '.roo', 'coverage', '.nyc_output', '.pytest_cache', 'documentation', 'docs', '.npm', '.yarn', '.pnpm', 'vendor' ]; // Add test/demo exclusions only if not in dogfood mode if (!options.dogfood) { excludePatterns = excludePatterns.concat([ 'demo', 'tmp', 'test', 'tests', 'spec', '__tests__', 'examples' ]); } // Allow custom exclude patterns to override defaults if (options.excludePatterns) { excludePatterns = options.excludePatterns; } return await getAllFiles(projectPath, extensions, excludePatterns); } module.exports = { collectFiles };