2.4 KiB
2.4 KiB
Project Agent Guidelines
Build, Lint, and Test Commands
Build Commands
# Create build directory and configure
mkdir -p build && cd build && cmake ..
# Build all targets
make
# Build specific target
make <target_name>
# Build with specific configuration
make Release
Lint Commands
# C++ linting with clang-tidy (if available)
clang-tidy src/*.cpp -- -std=c++23 -I include/
# C++ formatting with clang-format
clang-format -i src/*.cpp include/*.h
Test Commands
# Run all tests (if any exist)
make test
# Run a single test (if using a testing framework like Google Test)
./build/<test_name>
# For CMake-based projects with tests
ctest -R <test_regex>
Code Style Guidelines
General
- Use C++23 standard features
- Follow Google C++ Style Guide principles
- Keep functions small and focused
- Use meaningful, descriptive names
- Write clear, self-documenting code
- Add comments for complex logic
Naming Conventions
- Classes: PascalCase (e.g.,
MyClass) - Functions: camelCase (e.g.,
calculateSum) - Variables: camelCase (e.g.,
myVariable) - Constants: UPPER_SNAKE_CASE (e.g.,
MAX_SIZE) - Files: snake_case (e.g.,
my_file.cpp)
Imports and Includes
- Use angle brackets for system headers:
#include <iostream> - Use quotes for local headers:
#include "my_header.h" - Order includes: system headers, then local headers
- Avoid
using namespacein headers - Use forward declarations when possible
Formatting
- Use 2-space indentation (no tabs)
- No trailing whitespace
- Single space around operators
- Function parameters on same line if short, otherwise one parameter per line
- Braces on same line for functions, new line for control structures
Types
- Use
autowhen type is obvious from initialization - Prefer
constandconstexprfor immutable values - Use smart pointers (
std::unique_ptr,std::shared_ptr) instead of raw pointers - Use
std::optionalfor optional values - Use
std::string_viewfor string views
Error Handling
- Use exceptions for error conditions
- Prefer RAII for resource management
- Use
std::optionalorstd::expectedfor operations that can fail - Don't ignore return values of functions that can fail
Code Structure
- Keep lines under 100 characters
- Separate logical sections with blank lines
- Group related functions together
- Use namespaces to avoid naming conflicts
- Break large functions into smaller, reusable components