- документ docs/autotests.md снят: перечень правил, подавлений и лестница механизации — это конвенция о том, чем машина читает код, и место ей среди прочих записей - в шапке названо, чего в записи нет: как писать тесты. Свойства, которые обязан проверять тест, остаются в review.md, «Типовые узлы» - ссылки переставлены в памятке, индексе конвенций, четырёх записях, review.md, .golangci.yml, lefthook.yml и пакете сканеров
42 lines
1.8 KiB
YAML
42 lines
1.8 KiB
YAML
# Refer for explanation to following link:
|
|
# https://lefthook.dev/configuration/
|
|
#
|
|
# Предкоммитные проверки — дешёвая часть гейта на **затронутых файлах**. Полный
|
|
# набор здесь не гоняется намеренно: он идёт минуты, а pre-commit обязан быть
|
|
# быстрым. Что ловит pre-commit и что остаётся только гейту — CLAUDE.md,
|
|
# раздел «Гейт»; перечень правил и их дома — docs/conventions/go-linters.md.
|
|
|
|
templates:
|
|
av-hooks-dir: "/home/av/projects/private/git-hooks"
|
|
|
|
pre-commit:
|
|
jobs:
|
|
# Форматирование правится на месте и добавляется в коммит: спорить тут не о
|
|
# чем, а гейт на неотформатированном файле краснеет.
|
|
- name: "gofmt"
|
|
glob: "*.go"
|
|
run: "gofmt -w {staged_files}"
|
|
stage_fixed: true
|
|
|
|
# Линтеры гоняются по пакетам затронутых файлов, а не по всему дереву:
|
|
# golangci-lint принимает файлы только из одного каталога, поэтому на вход
|
|
# идут каталоги.
|
|
- name: "golangci-lint"
|
|
glob: "*.go"
|
|
run: |
|
|
dirs=$(printf '%s\n' {staged_files} | xargs -r -n1 dirname | sort -u)
|
|
golangci-lint run $dirs
|
|
|
|
- name: "shellcheck"
|
|
glob: "*.sh"
|
|
run: "shellcheck {staged_files}"
|
|
|
|
# Подавления те же, что у шага гейта, и по тем же причинам — Taskfile.yml,
|
|
# задача `dockerfile`.
|
|
- name: "hadolint"
|
|
glob: "Dockerfile"
|
|
run: "hadolint --ignore DL3007 --ignore DL3018 {staged_files}"
|
|
|
|
- name: "gitleaks"
|
|
run: "gitleaks git --staged"
|