EPITA C Coding Style Checker
A fast C linter for EPITA coding style rules. Uses tree-sitter for robust AST-based parsing.
Installation
pipx install epita-coding-style
Quick Start
epita-coding-style src/ # Check files/directories
epita-coding-style --list-rules # List all rules with descriptions
epita-coding-style --show-config # Show current configuration
epita-coding-style --help # Full usage info
Configuration
Configuration is auto-detected from (in order):
.epita-style.epita-style.tomlepita-style.toml[tool.epita-coding-style]inpyproject.toml
Priority: CLI flags > config file > preset > defaults
Generate a Config File
epita-coding-style --show-config --no-color > .epita-style.toml
This outputs a complete, commented TOML config you can customize.
Presets
epita-coding-style --preset 42sh src/ # 40 lines, goto/cast allowed
epita-coding-style --preset noformat src/ # Same + skip clang-format
Example Config
# .epita-style.toml
max_lines = 40
[rules]
"keyword.goto" = false # Allow goto
"cast" = false # Allow casts
Or in pyproject.toml:
[tool.epita-coding-style]
max_lines = 40
[tool.epita-coding-style.rules]
"keyword.goto" = false
clang-format
The format rule uses clang-format to check code formatting. Requires clang-format to be installed.
The checker looks for .clang-format in the file’s directory (walking up to root), or uses the bundled EPITA config.
To disable: set "format" = false in your config, or use --preset noformat.
Pre-commit Hook
# .pre-commit-config.yaml
repos:
- repo: https://github.com/KazeTachinuu/epita-coding-style
rev: v2.3.0
hooks:
- id: epita-coding-style
args: [--preset, 42sh] # optional
License
MIT