Rechercher

PythonReactSEOPDF
GitHub Skill

c-code-formatter

Format C++ code in Sanmill project to ensure consistent code style; use when formatting C++ code or checking code style compliance.

calcitem☆ 187 Étoiles du dépôt27 Forks du dépôt

Installation

Suivez les instructions du dépôt pour votre agent. Consultez les fichiers et dépendances avant l’installation.

Voir la source ↗Guides

Instructions

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 all C++ and Dart code (will auto-commit)
./format.sh

# Format without auto-commit
./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
# Format single file
clang-format -i src/position.cpp

# Format multiple files
clang-format -i src/*.cpp src/*.h

# Check without modifying (dry-run)
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

# Check specific file with cpplint
cpplint --config=CPPLINT.cfg src/position.cpp

# The configuration file defines which checks to enable/disable

Git Integration

Pre-commit Workflow
# 1. Make code changes
# 2. Format code
./format.sh s

# 3. Review changes
git diff

# 4. If correct, commit
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

  1. Format frequently: Format after each significant change
  2. Format before commits: Always format before committing
  3. Review formatting changes: Don't blindly commit formatting
  4. Use project script: Prefer ./format.sh over manual commands
  5. Separate formatting commits: Keep formatting separate from logic changes
  6. Don't hand-edit formatting: Let tools do the work

Tools Required

clang-format
# Check if installed
clang-format --version

# Install on Ubuntu/Debian
sudo apt-get install clang-format

# Install on macOS
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/

Exemples

Consultez les exemples du dépôt source.

Voir la source ↗

Historique source

Date d’indexation
2026-01-20
Mise à jour de l’index
2026-01-26
Branch
main

Les dates concernent ce répertoire. Consultez le dépôt pour l’historique du code.

GitHub ↗

chat Comments (0)

chat_bubble_outline

No comments yet. Be the first to share your thoughts!