æç®å½è¿æ»¤é¢æäº¤é©å | AIçæåç¿»è¯
é®é¢ï¼ å¦ä½å¨ pre-commit hook 䏿å®ä»
æäºåç®å½ï¼ä¾å¦ï¼ç¨äº ruff-checkï¼ï¼
çæ¡ï¼
å¨ .pre-commit-config.yaml ä¸ï¼æ ä¸¤ä¸ªé® ç¨äºæè·¯å¾è¿æ»¤ï¼
两è 忥åé对ç¸å¯¹äº repo æ ¹ç®å½çæä»¶è·¯å¾ç Python regular expressionsã
æ¹æ³ 1 â ä½¿ç¨ files: ä»
å
å«ç¹å®åç®å½
ä»
å¨ src/ å tests/ ä¸è¿è¡ ruffï¼
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.5
hooks:
- id: ruff-check
args: [ --fix ]
files: ^(src|tests)/ # only run in src/ and tests/
- id: ruff-format
files: ^(src|tests)/
æ¹æ³ 2 â ä½¿ç¨ exclude: è·³è¿æäºåç®å½
å¨é¤ docs/ å migrations/ å¤çææå
容ä¸è¿è¡ ruffï¼
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.5
hooks:
- id: ruff-check
args: [ --fix ]
exclude: ^(docs|migrations)/
- id: ruff-format
exclude: ^(docs|migrations)/
æ¹æ³ 3 â ç¨äºå¤ä¸ªè·¯å¾çè¯¦ç» regexï¼æ´ç®æ´çè¯æ³ï¼
å½ regular expression 对äºå¤ä¸ªè·¯å¾åå¾ç¹çæ¶ï¼æ¨å¯ä»¥ä½¿ç¨ YAML çå¤è¡åé¢éç»å (?x) verbose regex flagï¼
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.5
hooks:
- id: ruff-check
args: [ --fix ]
exclude: |
(?x)^(
docs/.*|
migrations/.*|
legacy/.*|
scripts/old/.*
)$
æ¹æ³ 4 â å ¨å± excludeï¼éç¨äºææ hooksï¼
æ¨è¿å¯ä»¥å¨é
ç½®æä»¶æ ¹é¨è®¾ç½®é¡¶çº§ç excludeï¼ä½¿å
¶éç¨äºæ¯ä¸ª hookï¼èæ é卿¯ä¸ª hook ä¸éå¤ï¼
exclude: |
(?x)^(
docs/.*|
migrations/.*|
.*cache.*/.*|
.*venv.*/.*
)$
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.5
hooks:
- id: ruff-check
args: [ --fix ]
- id: ruff-format
éè¦ï¼Ruff ç force-exclude
ruff-pre-commit hooks é»è®¤ä½¿ç¨ --force-excludeï¼è¿ç¡®ä¿äºå³ä½¿ pre-commit å¨å½ä»¤è¡ä¸æ¾å¼ä¼ éæä»¶ï¼Ruff ä¹ä¼å°éæé¤æ¨¡å¼ãè¿æå³ç Ruff å¨ pyproject.toml ä¸çèªå·±ç exclude ä¹ä¼è¢«å°éã使¯ï¼å¦ææ¨éå° pyproject.toml ä¸ç exclude 被忽ç¥çæ
åµï¼æå®å
¨çè§£å³æ¹æ¡æ¯å¨ ruff hook ç .pre-commit-config.yaml ä¸ç´æ¥æ·»å exclude 模å¼ã
ç»åçå®ä¸ç示ä¾
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.15.5
hooks:
- id: ruff-check
args: [ --fix ]
files: ^src/ # only lint the src/ directory
exclude: ^src/legacy/ # but skip the legacy subfolder inside it
- id: ruff-format
files: ^src/
exclude: ^src/legacy/
åèèµæï¼
- pre-commit official docs â filtering
- astral-sh/ruff-pre-commit
- DeepWiki â ruff-pre-commit hooks
- Stefanie Molin â Pre-Commit Setup Guide
