58 lines
1.2 KiB
Markdown
58 lines
1.2 KiB
Markdown
# Linting & Formatting
|
|
|
|
Catch bugs and style issues automatically — before review, before CI, ideally before saving.
|
|
|
|
## Tools by Language
|
|
|
|
| Language | Recommended | Alternatives |
|
|
|---|---|---|
|
|
| Python | `ruff` | flake8 + isort + black |
|
|
| JavaScript/TS | `biome` | eslint + prettier |
|
|
| Go | `gofmt`, `golangci-lint` | staticcheck |
|
|
| C++ | `clang-tidy`, `clang-format` | cppcheck |
|
|
|
|
## Python — `ruff`
|
|
|
|
Replaces flake8, isort, and black in one tool. Extremely fast.
|
|
|
|
```bash
|
|
ruff check . # lint
|
|
ruff check --fix . # lint + auto-fix
|
|
ruff format . # format (replaces black)
|
|
```
|
|
|
|
Configure in `pyproject.toml`:
|
|
|
|
```toml
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py312"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "UP"]
|
|
```
|
|
|
|
## JavaScript — `biome`
|
|
|
|
Single tool for lint + format, no config needed to start.
|
|
|
|
```bash
|
|
biome check . # lint + format check
|
|
biome check --write . # auto-fix
|
|
```
|
|
|
|
## Go
|
|
|
|
`gofmt` is part of the toolchain — just run it.
|
|
|
|
```bash
|
|
gofmt -w .
|
|
golangci-lint run # broader lint suite
|
|
```
|
|
|
|
## Tips
|
|
|
|
- Run on save in your editor (not just in CI)
|
|
- Auto-fix on commit via a pre-commit hook or `invoke lint --fix`
|
|
- Format is non-negotiable; lint violations should be treated as errors in CI
|