1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/thoughtworks-guarding

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Guarding

Описание

Guarding — это инструмент для защиты кода и архитектуры, основанный на многоуровневом подходе. Он использует git-хуки и DSL для создания правил защиты дизайна.

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

  1. Установите Guarding:
cargo install guarding
  1. Создайте файл guarding.guarding:
package(".")::file.len should < 200;
package(".")::file.len should > 50;
  1. Запустите Guarding:
guarding .

Разработка

Процесс разработки включает в себя следующие шаги:

  • анализ правил Guarding;
  • преобразование исходного кода в модели;
  • сопоставление правил с моделями.

Логика захвата DSL включает:

  • фильтрацию моделей по уровню правила и области действия правила;
  • выполнение выражения;
  • выполнение утверждения.

Примеры запросов можно найти по ссылке: https://github.com/nvim-treesitter/nvim-treesitter/tree/master/queries.

Guarding — имя функции класса или структуры

Для Java и JavaScript:

# 类::名 包含 "Controller";
# 中文分词:("..myapp..") 类名称中包含 "Controller"
class("..myapp..")::function.name should contains("Model");
# or
class("..myapp..")::function.name contains("");

Для Rust и Golang:

struct("..myapp..")::function.name should contains("Model");
# or
struct("..myapp..")::function.name contains("");

Задачи

В разработке находятся следующие функции:

  • фильтр:
    • по идентификатору пакета;
    • с помощью регулярного выражения;
    • по реализации;
    • по расширению;
    • по признаку (trait);
  • ограничение именования имплементации;
  • ограничение количества файлов;
  • ограничение размера подпакетов пакета (например, для чистой архитектуры);
  • утверждение:
    • сравнение размеров / длин;
    • строковое сравнение:
      • содержит;
      • начинается с;
      • заканчивается;
    • операции с пакетами:
      • доступ;
      • нахождение в;
      • зависимость от;
  • языки:
    • Java;
    • JavaScript (в разработке);
    • TypeScript;
    • Rust (в разработке):
      • класс и функции;
      • импорт:
        • базовый импорт;
        • реструктуризация импорта модов;
        • конвертация пакетов.

Лицензия

Этот код распространяется под лицензией MIT. См. файл LICENSE в этом каталоге.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Guarding — это инструмент для архитектурной защиты, который можно использовать с такими языками как Java, JavaScript, Rust и Golang. Он позволяет писать защитные правила с помощью понятного DSL. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/thoughtworks-guarding.git
git@api.gitlife.ru:oschina-mirror/thoughtworks-guarding.git
oschina-mirror
thoughtworks-guarding
thoughtworks-guarding
master