Files
2026-07-13 12:42:18 +08:00

92 lines
3.0 KiB
Markdown

# Contributing to code-review-graph
Thank you for your interest in contributing! This guide will help you get started.
## Development Setup
```bash
# Clone the repository
git clone https://github.com/tirth8205/code-review-graph.git
cd code-review-graph
# Install with dev dependencies (requires uv)
uv sync --extra dev
# Verify setup
uv run pytest tests/ --tb=short -q
```
## Running Tests
```bash
# All tests
uv run pytest tests/ --tb=short -q
# With coverage
uv run pytest --cov=code_review_graph --cov-report=term-missing --cov-fail-under=65
# Single test file
uv run pytest tests/test_parser.py -v
```
## Linting and Type Checking
```bash
uv run ruff check code_review_graph/
uv run mypy code_review_graph/ --ignore-missing-imports --no-strict-optional
```
## Code Style
- **Line length**: 100 characters
- **Target**: Python 3.10+
- **Linter**: ruff (rules: E, F, I, N, W)
- **SQL**: Always parameterized queries (`?` placeholders)
- **Imports**: Sorted by ruff (isort-compatible)
## Making Changes
1. Fork the repository
2. Create a feature branch: `git checkout -b feature/your-feature`
3. Make your changes
4. Add tests for new functionality
5. Ensure all tests pass: `uv run pytest`
6. Ensure linting passes: `uv run ruff check code_review_graph/`
7. Submit a pull request
## Project Structure
```
code_review_graph/ # Core Python package
parser.py # Tree-sitter multi-language parser
graph.py # SQLite graph store
tools/ # MCP tool implementations
context_savings.py # Compact estimated context-savings metadata
incremental.py # Git diff + file watch logic
embeddings.py # Vector embedding support
visualization.py # D3.js HTML generator
cli.py # CLI entry point
main.py # MCP server entry point
tests/ # Test suite
fixtures/ # Language sample files
```
## Adding Language Support
If you just need a language for your own repo, you may not need to contribute at all: drop a `.code-review-graph/languages.toml` into your project mapping extensions and node types to any grammar in tree-sitter-language-pack — see [docs/CUSTOM_LANGUAGES.md](docs/CUSTOM_LANGUAGES.md). To add built-in support upstream:
1. Add the extension mapping to `EXTENSION_TO_LANGUAGE` in `parser.py`
2. Add tree-sitter node types to `_CLASS_TYPES`, `_FUNCTION_TYPES`, `_IMPORT_TYPES`, `_CALL_TYPES`
3. Add a sample fixture file in `tests/fixtures/`
4. Add parsing tests in `tests/test_multilang.py`
## Reporting Issues
- Open an issue via the issue forms: https://github.com/tirth8205/code-review-graph/issues/new/choose (bug report, feature request, or platform request — blank issues are disabled)
- For questions and ideas, use GitHub Discussions instead: https://github.com/tirth8205/code-review-graph/discussions
- Include: Python version, OS, steps to reproduce, error output
## License
By contributing, you agree that your contributions will be licensed under the MIT License.