First off, thank you for considering contributing to FuFuFaFa! 🎉 Your contributions help make cloud security auditing accessible to everyone.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Coding Standards
- Testing Guidelines
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the maintainers.
- Python 3.9+
- Docker & Docker Compose (for running databases)
- Git for version control
- AWS CLI configured (for testing cloud scans)
# 1. Fork and clone the repository
git clone https://github.com/Masriyan/FuFuFaFa.git
cd FuFuFaFa
# 2. Create a virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# 3. Install development dependencies
pip install -e ".[dev]"
# 4. Start required services
docker-compose up -d postgres redis neo4j
# 5. Initialize the database
fufufafa init-db
# 6. Install pre-commit hooks
pre-commit install
# 7. Verify your setup
pytestBefore creating a bug report, please check existing issues to avoid duplicates.
When reporting a bug, include:
- Your operating system and Python version
- Steps to reproduce the issue
- Expected vs actual behavior
- Error messages and stack traces
- Screenshots if applicable
Feature requests are welcome! Please provide:
- A clear description of the feature
- The problem it solves
- Example use cases
- Any potential implementation ideas
- Find an issue to work on, or create a new one
- Comment on the issue to let others know you're working on it
- Fork the repository and create your branch
- Make your changes following our coding standards
- Write tests for your changes
- Submit a pull request
- Update documentation if needed
- Add tests for new functionality
- Ensure all tests pass (
pytest) - Run code formatters (
black,isort) - Run type checker (
mypy src/) - Run linter (
flake8 src/)
- Use a clear, descriptive title
- Reference related issues using
Fixes #123orCloses #123 - Provide a detailed description of your changes
- Include screenshots for UI changes
- Keep PRs focused - one feature/fix per PR
- Maintainers will review your PR
- Address any requested changes
- Once approved, your PR will be merged
- Celebrate! 🎉
We use the following tools to maintain code quality:
| Tool | Purpose | Command |
|---|---|---|
| Black | Code formatting | black src/ tests/ |
| isort | Import sorting | isort src/ tests/ |
| flake8 | Linting | flake8 src/ |
| mypy | Type checking | mypy src/ |
# ✅ Good - Type hints and docstrings
def scan_bucket(bucket_name: str, region: str = "us-east-1") -> dict:
"""
Scan an S3 bucket for security misconfigurations.
Args:
bucket_name: Name of the S3 bucket to scan
region: AWS region where the bucket is located
Returns:
Dictionary containing scan results with findings
"""
...
# ❌ Bad - No type hints or documentation
def scan_bucket(bucket_name, region="us-east-1"):
...Use clear, descriptive commit messages:
feat: add support for CloudWatch Logs scanning
fix: resolve false positive in S3 public access detection
docs: update installation instructions for Windows
test: add unit tests for IAM analyzer module
refactor: simplify secret pattern matching logic
# Run all tests
pytest
# Run with coverage report
pytest --cov=src --cov-report=html
# Run specific test file
pytest tests/unit/test_secret_scanner.py -v
# Run tests matching a pattern
pytest -k "test_s3" -vimport pytest
from src.scanners.secrets import SecretScanner
class TestSecretScanner:
"""Tests for the secret scanning module."""
def test_detect_aws_access_key(self):
"""Should detect AWS access key in code."""
scanner = SecretScanner()
content = 'AWS_ACCESS_KEY = "AKIAIOSFODNN7EXAMPLE"'
findings = scanner.scan_content(content)
assert len(findings) == 1
assert findings[0].pattern_name == "aws_access_key"tests/unit/- Unit tests for individual functionstests/integration/- Integration tests with mocked AWStests/e2e/- End-to-end tests (requires Docker)
| Label | Description |
|---|---|
bug |
Something isn't working |
enhancement |
New feature or request |
documentation |
Improvements to docs |
good first issue |
Good for newcomers |
help wanted |
Extra attention needed |
security |
Security-related issues |
- GitHub Issues - For bugs and feature requests
- Discussions - For questions and ideas
Thank you for contributing to FuFuFaFa! 🛡️
Together, we make cloud security accessible to everyone.