Thank you for your interest in contributing! This guide covers how to get started.
# Clone and install
git clone <repo-url> codevista
cd codevista
pip install -e .
# Run analysis
codevista analyze /path/to/project -o report.html# Install in development mode
pip install -e ".[dev]"
# Run tests
make test
# Run with verbose output
make test-vcodevista/
βββ codevista/
β βββ __init__.py # Package metadata
β βββ cli.py # Command-line interface
β βββ config.py # Configuration & ignore patterns
β βββ languages.py # 90+ language definitions
β βββ analyzer.py # Core analysis engine
β βββ security.py # Security scanner (40+ patterns)
β βββ report.py # HTML report generator
β βββ git_analysis.py # Git history analysis
β βββ dependencies.py # Dependency parsing (10+ formats)
β βββ metrics.py # Code metrics & health scoring
β βββ tech_detector.py # Framework/library detection
β βββ utils.py # Shared utilities
βββ tests/
β βββ test_analyzer.py
β βββ test_security.py
β βββ test_metrics.py
β βββ test_report.py
β βββ test_utils.py
βββ Makefile
βββ pyproject.toml
βββ CONTRIBUTING.md
- Zero external dependencies β CodeVista must work with only the Python standard library
- Type hints β All public functions should have type annotations
- Docstrings β All modules and public functions need docstrings
- Line length β Max 88 characters (Black default)
- Testing β All new features need tests
- Add extension mapping in
languages.pyβLANG_MAP - Add GitHub color in
LANG_COLORS - Add comment syntax in
COMMENT_SYNTAX - Add import patterns in
utils.pyβextract_imports() - Add function pattern in
utils.pyβdetect_functions() - Add tests in
tests/test_analyzer.py
- Add regex pattern tuple to
SECRET_PATTERNSorDANGEROUS_PATTERNSinsecurity.py - Add remediation text in
_get_remediation() - Add test in
tests/test_security.py
Please include:
- CodeVista version (
codevista --version) - Python version
- Sample code that triggers the issue
- Expected vs actual behavior
- Fork the repository
- Create a feature branch (
git checkout -b feature/name) - Write tests for your changes
- Run
make testandmake lintto verify - Open a pull request with a clear description
MIT License β see LICENSE for details.