Thank you for your interest in contributing to SharpCodeSearch! This document provides guidelines and instructions for contributing to the project.
By participating in this project, you agree to maintain a respectful and collaborative environment for all contributors.
- Search existing issues before creating a new one
- Provide a clear description of the problem
- Include steps to reproduce the issue
- Specify your environment (OS, .NET version, VS Code version)
- Include relevant code samples or patterns if applicable
- Check if the feature has already been requested
- Clearly describe the feature and its use case
- Explain how it would benefit users
- Be open to discussion and feedback
- Fork the repository and create your branch from
main - Follow the code style - use the included
.editorconfig - Write tests for new functionality
- Update documentation as needed
- Keep commits focused - one logical change per commit
- Write clear commit messages following conventional commits format
type(scope): brief description
Longer description if needed
Fixes #issue-number
Types: feat, fix, docs, test, refactor, perf, chore
Example:
feat(matcher): add support for statement placeholders
Implements statement placeholder matching with min/max count constraints.
Fixes #42
-
Install prerequisites:
- .NET 10 SDK
- Node.js 20+ (LTS)
- VS Code
-
Clone the repository:
git clone https://github.com/yourusername/SharpCodeSearch.git cd SharpCodeSearch -
Set up the backend:
cd src/backend dotnet restore dotnet build -
Set up the extension:
cd src/extension npm install npm run compile -
Run tests:
# Backend tests cd src/backend dotnet test # Extension tests cd src/extension npm test
- C# Backend: Follow standard C# conventions, use
editorconfigsettings - TypeScript Extension: Follow VS Code extension best practices
- Formatting: Code will be checked by linters/formatters in CI
- Naming: Use descriptive names, avoid abbreviations unless common
- Write unit tests for all new functionality
- Maintain or improve code coverage (target >90%)
- Test edge cases and error conditions
- Add integration tests for end-to-end workflows
- Include performance tests for matching algorithms
- Update README.md if adding user-facing features
- Document public APIs with XML comments (C#) or JSDoc (TypeScript)
- Add examples for new pattern types
- Update ROADMAP.md if affecting project timeline
- Submit pull request with clear description
- Address review feedback promptly
- Keep the PR focused and reasonably sized
- Be patient - maintainers will review as time permits
- Once approved, a maintainer will merge your PR
SharpCodeSearch/
├── src/
│ ├── backend/ # C# pattern matching engine
│ └── extension/ # VS Code extension
├── Docs/ # Project documentation
└── tests/ # Test projects
- Review existing documentation in
/Docs - Search closed issues for similar questions
- Open a discussion for general questions
- Join community discussions (when available)
By contributing, you agree that your contributions will be licensed under the MIT License.
Contributors will be recognized in release notes and the project README. Significant contributions may result in commit access to the repository.
Thank you for helping make SharpCodeSearch better!