Contribution - ChairImpSec/PROLEAD GitHub Wiki

We deeply appreciate contributions to our project. Whether it's coding, reporting bugs, suggesting features, or improving documentation – your involvement makes a significant impact. Join us in making this project better together!

Workflow

To ensure a smooth and efficient process, please follow the steps outlined below:

  1. If you've identified a bug, please open a GitHub issue using our bug report template. Provide detailed information to help us understand and replicate the issue. Once submitted, we will review the issue and get in touch with you for further discussion. For proposing new features, open a GitHub issue using our feature request template. We will review your request and engage in a discussion to determine its feasibility and alignment. Upon agreement with your bug report or feature request, we will assign you to the relevant GitHub issue. Collaboration and further discussions will take place within the GitHub platform. If you're interested in contributing to existing projects within PROLEAD, or if you have general interest in contributing without a specific idea, please contact us via email at [email protected].

  2. Develop your C++ code. Make sure that your code is clean and properly documented. Please also provide suited test cases. If required, please benchmark your code. Run all unit tests and continue after passing all tests.

  3. When you have completed your task, kindly submit a pull request. We will review the changes, and if everything is in order, we will proceed to merge your updates into PROLEAD.

Coding Style

We are in the process of migrating all existing PROLEAD code to align with the Google Coding Style. To facilitate this transition, please ensure that your contributions adhere to the Google Coding Style guidelines. Your cooperation in maintaining consistency and following the prescribed coding conventions is greatly appreciated. This effort aims to enhance the overall quality and readability of our codebase. For autoformatting, you can use Clang format with the provided Clang Format File. Make sure you have Clang Format installed, if not run:

apt-get install clang-format

Then, run the following command and replace YourSourceFile.cpp with the actual file you want to format. The -i option will edit the file in place.

clang-format -i -style=file YourSourceFile.cpp

Testing

We employ the Catch2 testing framework for our unit tests. Currently, not all functions have been tested, but we are consistently adding new test cases. All test case files are located in the ut directory. To execute the unit tests, please use the following commands within the top directory:"

make test
./test/PROLEAD

Benchmarking

Performance-critical functions can also undergo benchmarking using the Catch2 library.