Skip to content

Latest commit

 

History

History
89 lines (63 loc) · 1.99 KB

File metadata and controls

89 lines (63 loc) · 1.99 KB

Contributing to c-argparse

Thank you for considering contributing to c-argparse! This document provides guidelines for contributing to the project.

How to Contribute

Reporting Bugs

If you find a bug, please open an issue on GitHub with:

  • A clear description of the bug
  • Steps to reproduce the issue
  • Expected vs. actual behavior
  • Your environment (OS, compiler version, etc.)

Suggesting Enhancements

Enhancement suggestions are welcome! Please open an issue describing:

  • The enhancement you'd like to see
  • Why it would be useful
  • Example usage (if applicable)

Pull Requests

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Make your changes
  4. Ensure all tests pass (make test)
  5. Add tests for new functionality
  6. Update documentation as needed
  7. Commit your changes with clear commit messages
  8. Push to your fork
  9. Open a pull request

Development Guidelines

Code Style

  • Follow C99 standard
  • Use consistent indentation (4 spaces)
  • Keep functions focused and small
  • Add comments for complex logic
  • Document all public APIs

Testing

  • Add unit tests for new features
  • Ensure all existing tests pass
  • Test on multiple platforms if possible (Linux, macOS, Windows)
  • Include edge cases and error conditions

Documentation

  • Update README.md for API changes
  • Add inline documentation in header files
  • Include usage examples for new features
  • Keep documentation clear and concise

Portability

  • Use only standard C99 features
  • Avoid platform-specific code
  • Test on multiple compilers (GCC, Clang, MSVC)
  • Do not introduce external dependencies

Building and Testing

# Build everything
make all

# Run tests
make test

# Clean build artifacts
make clean

Code of Conduct

  • Be respectful and constructive
  • Welcome newcomers
  • Focus on collaboration
  • Accept constructive criticism

Questions?

If you have questions, feel free to open an issue or discussion on GitHub.

Thank you for contributing!