Skip to content

Latest commit

 

History

History
91 lines (67 loc) · 2.96 KB

File metadata and controls

91 lines (67 loc) · 2.96 KB

Contributing to code-review-graph

Thank you for your interest in contributing! This guide will help you get started.

Development Setup

# 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

# 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

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. 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

License

By contributing, you agree that your contributions will be licensed under the MIT License.