Skip to content

About

Validate CODEOWNERS against the repository tree: invalid owners, unmatched rules, duplicates, unowned files. Offline, Python stdlib only.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

codeowners-lint

Проверяет файл CODEOWNERS по дереву репозитория до того, как он сломает ревью: неверные владельцы, правила, которые ничего не покрывают, дубликаты и файлы без владельца. Работает офлайн и только читает файлы. Без зависимостей, Python 3.10+.

Быстрый старт

python -m codeowners_lint               # текущая папка
python -m codeowners_lint . --require-full --strict
python -m codeowners_lint . --json
python -m codeowners_lint . --require-full --exclude "gen/*"   # сгенерированные файлы без владельца допустимы

Пример вывода для examples/demo:

CODEOWNERS: CODEOWNERS (3 rules)
OK: no findings

Проверки

Код Уровень Смысл
INVALID_OWNER error владелец не @user, @org/team и не e-mail
NO_OWNERS error правило без владельцев
NO_CODEOWNERS info (error с --require-file) файла нет в CODEOWNERS, .github/ или docs/
UNMATCHED_PATTERN warning шаблон не совпадает ни с одним файлом
DUPLICATE_PATTERN warning шаблон повторяется; действует последний
UNOWNED_FILES error с --require-full файлы без владельца

Коды возврата: 0 — ок, 1 — есть ошибки (или предупреждения при --strict), 2 — путь не папка.

Семантика

  • Последнее совпавшее правило побеждает, как в GitHub.
  • Шаблон без / совпадает с файлом в любой папке; /docs/ — только в корне; ** — любая вложенность.
  • Папки .git, node_modules, .venv, venv, __pycache__ пропускаются.

Ограничения

  • Не проверяет, существуют ли команды и пользователи в GitHub: проверка офлайн.
  • Сопоставление шаблонов упрощённое; сложные случаи [abc] и экранирование не поддерживаются.

Разработка

python -m unittest discover -s tests -t .

Лицензия

MIT — см. LICENSE.

История изменений

См. CHANGELOG.md. Политика безопасности — в SECURITY.md.

Использование в CI

Фрагмент для GitHub Actions (Python 3.10+, без зависимостей):

- uses: actions/checkout@v4
- uses: actions/setup-python@v5
  with:
    python-version: "3.12"
- name: codeowners-lint
  run: python -m codeowners_lint . --require-full --strict

About

Validate CODEOWNERS against the repository tree: invalid owners, unmatched rules, duplicates, unowned files. Offline, Python stdlib only.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages