Thank you for considering contributing! Below are guidelines to ensure consistency and quality.
- C++20: Use modern features (
consteval
, concepts, etc.) where appropriate. - Naming Conventions:
snake_case
for functions/variables (e.g.,get_module
).PascalCase
for classes/templates (e.g.,SecureValue64
).UPPER_SNAKE_CASE
for macros (e.g.,CTNINJA_MAGIC_IMPORT
).
- Formatting:
- 4-space indentation,
{}
braces always. - Header guards: prefer
#ifndef
over#pragma once
.
- 4-space indentation,
- Comments:
- yes
- Premake5: Build files are generated via
premake5.lua
– do not commit IDE-specific files. - Unit Tests:
- Add tests for new features in
cttest/
(using your existing framework).
- Add tests for new features in
- Fork the repository and create a feature branch.
- Test: Ensure all existing tests pass and add new ones for your changes.
- PR Template:
- Describe what and why (not just "how").
- Note any impacts on obfuscation strength or performance.
Be respectful and constructive. Security-related projects require extra care – avoid "quick hacks" that compromise reliability.