kopia lustrzana https://github.com/meshtastic/Meshtastic-Android
4.4 KiB
4.4 KiB
Contributing to Meshtastic-Android
Thank you for your interest in contributing to Meshtastic-Android! We welcome contributions from everyone. Please take a moment to review these guidelines to help us maintain a high-quality, collaborative project.
How to Contribute
- Fork the repository and create your branch from
main
or the appropriate feature branch. - Make your changes in a logical, atomic manner.
- Test your changes thoroughly before submitting a pull request.
- Submit a pull request (PR) with a clear description of your changes and the problem they solve.
- If you are addressing an existing issue, please reference it in your PR (e.g.,
Fixes #123
).
Code Style
- Follow the Kotlin Coding Conventions for Kotlin code.
- Use Android Studio's default formatting settings.
- We use spotless for automated code formatting. You can run
./gradlew spotlessApply
to format your code automatically.- You can also run
./gradlew spotlessInstallGitPrePushHook --no-configuration-cache
to install a pre-push Git hook that will run aspotlessCheck
.
- You can also run
- Write clear, descriptive variable and function names.
- Add comments where necessary, especially for complex logic.
- Keep methods and classes focused and concise.
- Use localised strings; edit the English
strings.xml
file. CrowdIn will manage translations to other languages.-
For example,
// instead of hardcoding a string in your code: Text("Settings") // use the localised string resource: Text(stringResource(R.string.settings))
-
Linting
Meshtastic-Android uses Detekt for static code analysis and linting of Kotlin code.
- Run
./gradlew detekt
before submitting your pull request to ensure your code passes all lint checks. - Fix any Detekt warnings or errors reported in your code.
- It is possible to suppress warnings individually, but this should be used very sparingly.
- You can find Detekt configuration in the
config/detekt
directory. If you believe a rule should be changed or suppressed, discuss it in your PR.
Consistent linting helps keep the codebase clean and maintainable.
Testing
Meshtastic-Android uses both unit tests and instrumented UI tests to ensure code quality and reliability.
- Unit tests are located in
app/src/test/java/
and should be written for all new logic where possible. - Instrumented tests (including UI tests using Jetpack Compose) are located in
app/src/androidTest/java/
. For Compose UI, use the Jetpack Compose Testing APIs.
Guidelines for Testing
- Add or update tests for any new features or bug fixes.
- Ensure all tests pass by running:
./gradlew test
for unit tests./gradlew connectedAndroidTest
for instrumented tests
- For UI components, write Compose UI tests to verify user interactions and visual elements. See existing tests in
DebugFiltersTest.kt
for examples. - If your change is difficult to test, explain why in your pull request.
Comprehensive testing helps prevent regressions and ensures a stable experience for all users.
Pull Requests
- branches should start with:
- bugfix
- enhancement
- dependencies
- repo
- reserved (release, automation)
- Ensure your branch is up to date with the latest
main
branch before submitting a PR. - Provide a meaningful title and description for your PR.
- Inlude information on how to test and/or replicate if it is not obvious.
- Include screenshots or logs if your change affects the UI or user experience.
- Be responsive to feedback and make requested changes promptly.
- Squash commits if requested by a maintainer.
Issue Reporting
- Search existing issues before opening a new one to avoid duplicates.
- Provide a clear and descriptive title.
- Include steps to reproduce, expected behavior, and actual behavior.
- Attach logs, screenshots, or other helpful context if applicable.
Community Standards
- Be respectful and considerate in all interactions.
- The Meshtastic Android project is subject to the code of conduct for the parent project, which can be found here:
- Help others by reviewing pull requests and answering questions when possible.
Thank you for helping make Meshtastic-Android better!