92 lines
3.0 KiB
Markdown
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.
|