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
JavaScript
/**
* @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
};