Terima kasih atas minat Anda untuk berkontribusi pada CodingYok! Dokumen ini akan memandu Anda melalui proses kontribusi.
- Code of Conduct
- Cara Berkontribusi
- Setup Development Environment
- Panduan Coding
- Testing
- Pull Request Process
- Pelaporan Bug
- Feature Request
Proyek ini mengikuti Contributor Covenant Code of Conduct. Dengan berpartisipasi, Anda diharapkan untuk menjunjung tinggi kode etik ini.
Ada beberapa cara untuk berkontribusi pada CodingYok:
- Melaporkan Bug - Temukan dan laporkan bug
- Mengusulkan Fitur - Sarankan fitur baru
- Menulis Kode - Implementasi fitur atau perbaikan bug
- Dokumentasi - Perbaiki atau tambah dokumentasi
- Testing - Tulis atau perbaiki unit tests
- Contoh Program - Buat contoh program CodingYok
- Python 3.8 atau lebih tinggi
- Git
- Virtual environment (recommended)
-
Fork dan Clone Repository
git clone https://github.com/YOUR_USERNAME/CodingYok.git cd CodingYok -
Buat Virtual Environment
python -m venv venv source venv/bin/activate # Linux/Mac # atau venv\Scripts\activate # Windows
-
Install Dependencies
pip install -r requirements.txt pip install -r requirements-dev.txt pip install -e . -
Verifikasi Installation
codingyok examples/hello_world.cy pytest tests/
- Ikuti PEP 8 untuk Python code
- Gunakan Black untuk formatting
- Gunakan mypy untuk type checking
- Maksimal line length: 88 karakter
- Variabel dan fungsi:
snake_case - Kelas:
PascalCase - Konstanta:
UPPER_CASE - File:
snake_case.py
"""
Module docstring explaining purpose
"""
import standard_library
import third_party_library
from .local_module import LocalClass
# Constants
CONSTANT_VALUE = "value"
class MyClass:
"""Class docstring"""
def __init__(self):
"""Constructor docstring"""
pass
def public_method(self) -> str:
"""Method docstring"""
return "result"
def _private_method(self) -> None:
"""Private method docstring"""
pass- Semua public functions dan classes harus memiliki docstring
- Gunakan format Google-style docstrings
- Komentar dalam bahasa Indonesia untuk CodingYok-specific code
- Komentar dalam bahasa Inggris untuk general programming concepts
# Semua tests
pytest
# Dengan coverage
pytest --cov=src/codingyok
# Test specific file
pytest tests/test_lexer.py
# Test dengan verbose output
pytest -v- Setiap fitur baru harus memiliki tests
- Test coverage minimal 80%
- Gunakan descriptive test names
- Test both positive dan negative cases
Contoh test:
def test_function_with_return_value(self):
"""Test function that returns a value"""
code = """
fungsi tambah(a, b):
kembalikan a + b
hasil = tambah(5, 3)
tulis(hasil)
"""
output = self.capture_output(code)
assert output == "8"-
Pastikan semua tests pass
pytest black --check src/ tests/ mypy src/codingyok/ flake8 src/
-
Update dokumentasi jika diperlukan
-
Tambah entry ke CHANGELOG.md (jika ada)
-
Buat branch baru
git checkout -b feature/nama-fitur # atau git checkout -b fix/nama-bug -
Commit changes
git add . git commit -m "feat: tambah fitur X" # atau git commit -m "fix: perbaiki bug Y"
-
Push ke fork
git push origin feature/nama-fitur
-
Buat Pull Request di GitHub
Gunakan Conventional Commits:
feat:untuk fitur barufix:untuk bug fixesdocs:untuk dokumentasitest:untuk testsrefactor:untuk refactoringstyle:untuk formatting changes
Gunakan GitHub Issues untuk melaporkan bug.
**Deskripsi Bug**
Deskripsi singkat tentang bug.
**Langkah Reproduksi**
1. Buka file '...'
2. Jalankan command '...'
3. Lihat error
**Expected Behavior**
Apa yang seharusnya terjadi.
**Actual Behavior**
Apa yang sebenarnya terjadi.
**Environment**
- OS: [e.g. Windows 10, Ubuntu 20.04]
- Python Version: [e.g. 3.9.0]
- CodingYok Version: [e.g. 1.0.0]
**Kode CodingYok**
```codingyok
# Paste kode yang menyebabkan bugError Message
Paste error message di sini
## 💡 Feature Request
Gunakan [GitHub Issues](https://github.com/MrXploisLite/CodingYok/issues) dengan label "enhancement".
### Template Feature Request
```markdown
**Deskripsi Fitur**
Deskripsi singkat fitur yang diinginkan.
**Motivasi**
Mengapa fitur ini diperlukan? Masalah apa yang akan diselesaikan?
**Contoh Penggunaan**
```codingyok
# Contoh bagaimana fitur akan digunakan
Alternatif Apakah ada alternatif yang sudah dipertimbangkan?
Additional Context Informasi tambahan, screenshot, dll.
## 🏷️ Labels
- `bug` - Something isn't working
- `enhancement` - New feature or request
- `documentation` - Improvements or additions to documentation
- `good first issue` - Good for newcomers
- `help wanted` - Extra attention is needed
- `question` - Further information is requested
## 🙏 Terima Kasih
Kontribusi Anda sangat berarti untuk pengembangan CodingYok! Setiap kontribusi, sekecil apapun, akan sangat dihargai.
---
**Happy Coding with CodingYok!** 🇮🇩