| name | C++ Code Formatter |
| description | Format C++ code in Sanmill project to ensure consistent code style; use when formatting C++ code or checking code style compliance. |
C++ Code Formatter
Purpose
This skill helps format Sanmill's C++ code to ensure code style consistency and maintainability across the codebase.
Use Cases
- Format C++ code after modifications
- Check code style compliance
- Format code before committing
- Batch format project C++ files
- Validate code style in CI/CD pipelines
Quick Commands
Using Project Script (Recommended)
./format.sh
./format.sh s
The script formats:
- All
.h and .cpp files in src/, include/, tests/
- All Dart files in the project
- Uses project's
.clang-format configuration
Manual Formatting
clang-format -i src/position.cpp
clang-format -i src/*.cpp src/*.h
clang-format --dry-run --Werror src/position.cpp
Configuration
Project Configuration Files
.clang-format - C++ formatting rules (project root)
CPPLINT.cfg - Code style checking rules
.editorconfig - Editor-specific settings
View Current Configuration
cat .clang-format
Code Style Checking
cpplint --config=CPPLINT.cfg src/position.cpp
Git Integration
Pre-commit Workflow
./format.sh s
git diff
git add .
git commit -m "Your commit message"
Format Only Staged Files
git diff --cached --name-only --diff-filter=ACM | \
grep -E '\.(cpp|h|cc|hpp)$' | \
xargs clang-format -i
Common Issues & Solutions
1. Format Breaks Code Structure
- Check: Verify
.clang-format configuration
- Check: Ensure clang-format version matches team standard
- Workaround: Use
// clang-format off and // clang-format on for special blocks
2. Batch Formatting Creates Large Changes
- Solution: Format in batches and commit separately
- Label: Use clear commit message like "style: Format C++ code"
- Communicate: Notify team members to sync
3. Format Conflicts Between Developers
- Ensure: All use same
.clang-format file
- Ensure: All use same clang-format version
- Establish: Team formatting conventions
Best Practices
- Format frequently: Format after each significant change
- Format before commits: Always format before committing
- Review formatting changes: Don't blindly commit formatting
- Use project script: Prefer
./format.sh over manual commands
- Separate formatting commits: Keep formatting separate from logic changes
- Don't hand-edit formatting: Let tools do the work
Tools Required
clang-format
clang-format --version
sudo apt-get install clang-format
brew install clang-format
cpplint (Optional)
For additional style checking beyond formatting.
Output Format
Formatting operations should report:
- ✓ Files formatted successfully
- ⚠ Files with style violations
- ✗ Files that failed to format
- 📊 Total files processed
- 💡 Style improvement recommendations
Reference Resources
- Configuration:
.clang-format, CPPLINT.cfg, .editorconfig (project root)
- Format script:
format.sh (project root)
- clang-format docs: https://clang.llvm.org/docs/ClangFormat.html
- C++ source locations:
src/, include/, tests/