Thank you for your interest in contributing to EasyAPI! This document provides guidelines and instructions for contributing.
Please be respectful and constructive in all interactions with the community.
Before creating a bug report, please check existing issues to avoid duplicates. When creating a bug report, include:
- A clear and descriptive title
- Steps to reproduce the issue
- Expected behavior
- Actual behavior
- Your environment (IDE version, JDK version, OS)
- Screenshots if applicable
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, include:
- A clear and descriptive title
- A detailed description of the proposed functionality
- Why this enhancement would be useful
- Examples of how it would be used
- Fork the repository and create your branch from
master - Follow the project's architecture principles (see
.kiro/steering/project.md) - Write clear, concise commit messages
- Include tests for new functionality
- Ensure all tests pass
- Update documentation as needed
- IntelliJ IDEA 2023.1 or higher
- JDK 17 or higher
- Kotlin 2.1.0
./gradlew build./gradlew test./gradlew runIde- Kotlin Coroutines: Use structured concurrency for all async operations
- PSI Threading: Methods accessing PSI must be
suspendfunctions with internal read/write actions - Type Safety: Use sealed classes for type hierarchies, data classes for DTOs
- Dependency Injection: Use IntelliJ
@Servicefor singletons,OperationScopefor per-operation objects
- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Keep functions small and focused
- Add KDoc comments for public APIs
- Prefer expression bodies for simple functions
- Write unit tests for new functionality
- Use
LightCodeInsightFixtureTestCasefor PSI tests - Use
mockito-kotlinfor mocking - Aim for good test coverage
easy-api/
├── src/main/kotlin/com/itangcent/easyapi/
│ ├── core/ # Core infrastructure
│ ├── psi/ # PSI utilities
│ ├── exporter/ # Export functionality
│ ├── settings/ # Plugin settings
│ └── ide/ # IDE integration
└── src/test/kotlin/ # Tests
Use conventional commit format:
feat:New featurefix:Bug fixrefactor:Code refactoringdocs:Documentation changestest:Test changeschore:Build/tooling changes
Example: feat: add support for Kotlin sealed classes in type resolution
Feel free to open an issue for any questions about contributing.