Configuration#
Mccabre can be configured via config files and CLI flags.
Configuration Priority#
- CLI flags (highest priority)
- Config file (
mccabre.toml) - Defaults (lowest priority)
CLI flags override config file settings.
Config File#
Create a mccabre.toml file in your project root:
[complexity]
warning_threshold = 10
error_threshold = 20
[clones]
enabled = true
min_tokens = 30
[files]
respect_gitignore = true
Generating a Config File#
You can generate a config file using the dump-config command:
# Save default config to current directory
mccabre dump-config -o mccabre.toml
# Save to a specific location
mccabre dump-config -o /path/to/config.toml
# Save to a directory (creates mccabre.toml in that directory)
mccabre dump-config -o ./configs/
# Load existing config and save to new location
mccabre dump-config -c old-config.toml -o new-config.toml
This is useful for:
- Creating a starting point for customization
- Copying configurations between projects
- Version controlling your settings
Configuration Options#
Complexity Settings#
[complexity]
warning_threshold = 10 # Yellow warning at this level
error_threshold = 20 # Red error at this level
Defaults:
warning_threshold: 10error_threshold: 20
CLI Override:
mccabre analyze --threshold 15
Clone Detection Settings#
[clones]
enabled = true # Enable/disable clone detection
min_tokens = 30 # Minimum token sequence length
Defaults:
enabled: truemin_tokens: 30
CLI Override:
mccabre analyze --min-tokens 25
File Settings#
[files]
respect_gitignore = true # Honor .gitignore files
Defaults:
respect_gitignore: true
CLI Override:
mccabre analyze --no-gitignore
Loading Configuration#
Automatic Discovery#
Mccabre searches for config files in this order:
mccabre.toml.mccabre.toml.mccabre/config.toml
The first file found is used.
Explicit Path#
Specify a config file:
mccabre analyze --config /path/to/config.toml
No Config File#
If no config file exists, defaults are used.
Example Configurations#
Strict Mode#
For critical codebases:
[complexity]
warning_threshold = 5
error_threshold = 10
[clones]
enabled = true
min_tokens = 20
[files]
respect_gitignore = true
Lenient Mode#
For legacy codebases:
[complexity]
warning_threshold = 20
error_threshold = 40
[clones]
enabled = true
min_tokens = 50
[files]
respect_gitignore = true
Clone-Focused#
Focus on duplication:
[complexity]
warning_threshold = 100 # Effectively disable
error_threshold = 200
[clones]
enabled = true
min_tokens = 15 # Very sensitive
[files]
respect_gitignore = true
Per-Project Settings#
Different projects can have different configs:
project-a/
├── mccabre.toml # Strict settings
└── src/
project-b/
├── mccabre.toml # Lenient settings
└── src/
Each project's config is automatically loaded when analyzing that directory.
Viewing Current Configuration#
Check what settings are active:
mccabre dump-config
Output:
CONFIGURATION
================================================================================
Complexity Settings:
Warning threshold: 10
Error threshold: 20
Clone Detection Settings:
Enabled: true
Minimum tokens: 30
File Settings:
Respect .gitignore: true
Ignoring Files#
Use .gitignore to exclude files/directories:
# .gitignore
target/
node_modules/
build/
*.generated.rs
Mccabre automatically respects these exclusions.
To analyze everything (ignore gitignore):
mccabre analyze . --no-gitignore