Some checks failed
API Endpoint Tests / test-api-endpoints (push) Successful in 16s
CLI Tests / test-cli (push) Failing after 3s
Documentation Validation / validate-docs (push) Failing after 10s
Documentation Validation / validate-policies-strict (push) Failing after 3s
Integration Tests / test-service-integration (push) Successful in 3m0s
Python Tests / test-python (push) Successful in 17s
Security Scanning / security-scan (push) Failing after 23s
Blockchain Synchronization Verification / sync-verification (push) Failing after 10s
Node Failover Simulation / failover-test (push) Failing after 5s
P2P Network Verification / p2p-verification (push) Successful in 5s
Multi-Node Blockchain Health Monitoring / health-check (push) Successful in 5s
Systemd Sync / sync-systemd (push) Failing after 14m56s
Add daily 2 AM cron schedule for node failover simulation workflow. Relax AITBC address validation to support variable-length addresses. Add missing logging import to chain_sync. Make coordinator database initialization non-fatal to allow startup even if init_db fails. Replace Ethereum address validation with AITBC-specific format checks in multisig transactions. Standardize PYTHONPATH across all systemd services to include
108 lines
2.4 KiB
Markdown
108 lines
2.4 KiB
Markdown
# Pre-Commit Hooks
|
|
|
|
This project uses pre-commit hooks to ensure code quality and consistency before commits.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
# Install pre-commit (if not already installed)
|
|
pip install pre-commit
|
|
|
|
# Install the hooks
|
|
pre-commit install
|
|
|
|
# Install pre-commit hooks for all files (optional)
|
|
pre-commit install --hook-type pre-push
|
|
```
|
|
|
|
## Usage
|
|
|
|
### Running hooks manually
|
|
|
|
```bash
|
|
# Run on all files
|
|
pre-commit run --all-files
|
|
|
|
# Run on staged files only (what happens during commit)
|
|
pre-commit run
|
|
|
|
# Run specific hooks
|
|
pre-commit run black flake8 mypy
|
|
```
|
|
|
|
### Automatic execution
|
|
|
|
Hooks run automatically on `git commit` for staged files. If a hook fails, the commit will be blocked. Fix the issues and try again.
|
|
|
|
To bypass hooks (not recommended):
|
|
```bash
|
|
git commit --no-verify
|
|
```
|
|
|
|
## Available Hooks
|
|
|
|
### Python
|
|
- **black**: Code formatting
|
|
- **flake8**: Linting (max line length: 120)
|
|
- **mypy**: Type checking
|
|
- **bandit**: Security scanning
|
|
|
|
### General
|
|
- **trailing-whitespace**: Remove trailing whitespace
|
|
- **end-of-file-fixer**: Ensure newline at end of file
|
|
- **check-yaml**: Validate YAML syntax
|
|
- **check-toml**: Validate TOML syntax
|
|
- **check-json**: Validate JSON syntax
|
|
- **check-added-large-files**: Prevent large files (>1MB)
|
|
- **detect-private-key**: Detect private keys in code
|
|
- **mixed-line-ending**: Ensure consistent line endings (LF)
|
|
|
|
### Configuration Files
|
|
- **yamllint**: YAML linting with custom config
|
|
- **markdownlint**: Markdown linting (excludes docs/archive)
|
|
|
|
### JavaScript/TypeScript
|
|
- **eslint**: JavaScript/TypeScript linting for packages/js and cli
|
|
|
|
### Shell Scripts
|
|
- **shellcheck**: Shell script linting
|
|
|
|
## Configuration
|
|
|
|
- **.pre-commit-config.yaml**: Main pre-commit configuration
|
|
- **.yamllint.yaml**: YAML linting rules
|
|
|
|
## Updating Hooks
|
|
|
|
```bash
|
|
# Update hook versions
|
|
pre-commit autoupdate
|
|
|
|
# Review changes
|
|
git diff .pre-commit-config.yaml
|
|
```
|
|
|
|
## Exclusions
|
|
|
|
Hooks exclude common directories:
|
|
- venv/, .venv/ (Python virtual environments)
|
|
- build/, dist/ (Build artifacts)
|
|
- docs/archive/ (Archived documentation)
|
|
|
|
## Troubleshooting
|
|
|
|
### Hook fails but you think it's wrong
|
|
Check the specific hook documentation and configuration. Some rules may need adjustment for the project.
|
|
|
|
### Pre-commit not running
|
|
Ensure hooks are installed:
|
|
```bash
|
|
pre-commit install
|
|
```
|
|
|
|
### Slow execution
|
|
Run hooks on specific files only:
|
|
```bash
|
|
pre-commit run <hook-name> <files...>
|
|
```
|