* feat: Enhance control flow analysis with function summaries and taint analysis
* feat: Update taint analysis to utilize function summaries for enhanced tracking
* Refactor `walk.rs` batch processing and override handling:
- Renamed `Batcher` to `BatchSender` for clarity.
- Added `BatchSender::new` constructor for cleaner initialization.
- Simplified batch size management in `BatchSender`.
- Extracted `build_overrides` function for reusable override construction.
- Improved error handling and validation in override building.
- Enhanced performance with directory and file type filtering in `walk`.
* Improve logging and streamline directory walk process:
- Added detailed `tracing` logs for debugging batch flushes, override construction, and walk initialization/completion.
- Optimized and simplified `filter_entry` logic for directory and file type filters.
- Improved metadata checks and max file size enforcement during the scan.
* Refactor and optimize taint tracking, label rules, and directory walk process:
- Replaced `DefaultHasher` with `blake3::Hasher` for improved taint hashing.
- Enhanced sorting and hashing logic in `taint.rs` for consistency and efficiency.
- Removed unused `set_hash` function and redundant imports across files.
- Improved batch sender logic in `walk.rs`, renaming key components for clarity.
- Unified `spawn_senders` and `spawn_file_walker` with thread handling and channel tuple return.
- Expanded label rules with additional matchers for sources, sanitizers, and sinks.
- Deprecated `dump_cfg` and specific logging utilities in `cfg.rs` for code cleanup.
* fix: fixed let chains error in walk.rs
* fix: updated dependencies
* fix: updated dependencies
* chore: Remove standard error in scan.rs
* feat: Introduce function summaries for enhanced taint and control flow analysis
* feat: Enhance taint analysis with interop support and function summaries
* feat: Add configuration analysis module and enhance matcher rules
* feat: Add arity column to function_summaries and handle schema migration
* fix: fixed clippy &PathBuf warnings
* chore: Update dependencies and versioning in Cargo files
* docs: Update README to enhance clarity and detail on features and analysis modes
* chore: Update CHANGELOG for version 0.2.0 with new features, changes, and fixes
* docs: Update SECURITY.md to clarify version support status
---------
Co-authored-by: elipeter <eli.peter@es.fcm.travel>
* Introduce control flow graph (CFG) support:
- Added `cfg.rs` with CFG generation and analysis utilities.
- Integrated `petgraph` library for graph-based computations.
- Updated `ast.rs` to utilize CFG for function analysis.
- Modified `Cargo.toml` and `Cargo.lock` to include new dependencies.
- Improved static analysis with taint tracking through CFG paths.
* feat: enhance control flow analysis with taint tracking and node labeling
* feat: improve control flow graph with enhanced node handling and new tests
* Remove unnecessary reference marker in `byte_offset_to_point` comment.
* Remove unnecessary reference marker in `byte_offset_to_point` comment.
* Refactor `ast.rs` for performance and clarity; enhance `cfg.rs` with recursive CFG generation and improved classification logic for AST analysis.
* Refactor CFG and taint tracking logic:
- Enhanced `cfg.rs` with inline helper function `text_of` for cleaner UTF-8 handling in AST nodes.
- Expanded `labels.rs` rules with detailed `Sources`, `Sanitizers`, and `Sinks` for improved classification.
- Refined `push_node` to handle method call expressions with object-function pairing.
- Simplified code handling in trivia skipping and debug-only logic.
* Enhance `cfg.rs` with `first_call_ident` helper and improve identifier extraction logic in `push_node`.
* Add targeted CFG taint-tracking tests to enhance analysis coverage.
* Enhance CFG generation with loop expression handling and improve taint tracking logic. Add new sanitization example in `examples/sanitize/example.rs`.
* Update README with installation instructions for Cargo and GitHub releases.
* Expand taint-tracking with precise `def-use` computation and enhance `labels.rs` for detailed classification. Extend `examples/sanitize` with realistic scenarios demonstrating new rules.
* Refactor `labels.rs`:
- Removed redundant `LabelRule` entries for cleaner rule definitions.
- Adjusted matching logic to prioritize suffix and prefix matches effectively.
* Refactor `labels.rs`:
- Removed redundant `LabelRule` entries for cleaner rule definitions.
- Adjusted matching logic to prioritize suffix and prefix matches effectively.
* Add test for taint tracking with multiple sources in `cfg.rs`.
* Add `function_summaries` table and implement summary upsert/load methods. Refactor to handle summary storage and retrieval efficiently, with placeholder clean/drop logic.
* refactor: split `labels.rs` into modular structure with language-specific files
* refactor: split `labels.rs` into modular structure with language-specific files
* refactor: clean up SQL table definitions in `database.rs` for better readability
* refactor: simplify CFG structure by removing lifetime parameters and enhancing taint metadata handling
* refactor: update TODO comments in `cfg.rs` to clarify future enhancements for cap labels and function details
* refactor: remove redundant header from README.md for improved clarity
* feat: add PHF-based syntax classifiers and Kind enum for efficient syntax mapping across languages
* feat: introduce analysis modes for enhanced scanner configuration and diagnostics
* feat: define Kind enum for syntax classification in control flow analysis
* feat: bump version to 0.2.0-alpha and update CHANGELOG for new features and fixes
* refactor: clean up imports and formatting in AST and CFG modules for improved readability
* refactor: simplify function signatures and improve code readability in CFG and module files
* fix: correct rayon_thread_stack_size comment to reflect actual value of 8 MiB
* refactor: update string formatting in clean and project modules for consistency
* refactor: fix indentation in clean.rs for improved readability
---------
Co-authored-by: elipeter <eli.peter@es.fcm.travel>
* test: Add unit tests for config merging and project name sanitization
* Update src/utils/project.rs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* test: Update assertion for follow_symlinks in scanner configuration
* test: Fix typo in test function name for project info retrieval
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
- Introduced `DEFAULT_CONFIG_TOML` to simplify default configuration loading.
- Replaced `show_progress` with `quiet` in configuration for improved clarity.
- Refactored `create_example_config` to use `NyxResult` and streamline logic with fallback handling.
- Added `default-nyx.conf` file for default configuration management.
- Enhanced `merge_configs` to include new parameters like `scan_timeout_secs` and `quiet`.
- Standardized spacing and indentation across multiple modules for improved readability.
- Reorganized `patterns` and `utils` imports for consistency.
- Updated `NyxError` and `NyxResult` related implementations to maintain consistent formatting.
- Enhanced readability in AST patterns for better clarity and maintainability.
- Introduced `NyxError` and `NyxResult` for unified error handling across modules.
- Refactored `scan.rs`, `index.rs`, and `walk.rs` with improved error management and consistent formatting.
- Replaced existing error handling in `database.rs` with `NyxResult`.
- Improved database maintenance by integrating `vacuum` and `clear` methods into workflows.
- Added `dashmap` for efficient parallel diagnostics result aggregation in `scan_with_index_parallel`.
- Enhanced readability and formatting of console outputs in multiple modules.
- Added `bytesize` and `chrono` dependencies in `Cargo.toml` and `Cargo.lock` for enhanced size and time formatting.
- Enhanced console output in `list.rs`, `index.rs`, `clean.rs`, and `config.rs` with improved styles for readability.
- Updated file size and modified time formatting across commands using `ByteSize` and `chrono`.
- Implement `max_file_size_mb` to restrict files for scanning based on size.
- Refactor `high_only` handling to modify `min_severity` in `Config`.
- Update `ScannerConfig` to use `Option<u64>` for optional size limits.
- Remove redundant `high_only` parameter from `scan::handle` function.
- Improve batch processing in `walk` for efficient file scanning.
- Standardized formatting across key functions in `project.rs`.
- Updated `index::handle` and `build_index` to incorporate the `config` parameter.
- Improved index-building logic to include project details and enhanced issue tracking.
- Replaced variable names like `files` with `paths` for clarity in `scan.rs`.
- Introduced `issues` table for detailed vulnerability storage.
- Enhanced `files` table with project scoping and unique constraints.
- Replaced `OutputFormat` enum with `String` for flexibility.
- Added support for formatted console output of scan results.
- Integrated file and issue updating logic for incremental scans.
- Optimized scanning by leveraging database-stored issues.
- Introduce `index.rs` for file indexing using SQLite
- Expand configuration options in `config.rs`, including `excluded_files`
- Update dependencies in `Cargo.toml` to include SQLite, hashing, and regex libraries
- Introduced `walk.rs` as a parallel directory walker for search operations.
- Implemented basic index handling in `commands/index.rs`.
- Created `utils/config.rs` for configuration management with placeholders for future enhancements.