2 Star 4 Fork 1

Thoughtworks / guarding

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 2.41 KB
一键复制 编辑 原始数据 按行查看 历史
phodal 提交于 2021-05-28 07:24 . docs: update todo

Guarding

Build crates.io docs.rs license

Guarding is a guardians for code, architecture, layered. Using git hooks and DSL for design guard rules.

Guarding Process

Usage

  1. install
cargo install guarding
  1. create guarding.guarding file
package(".")::file.len should < 200;
package(".")::file.len should > 50;
  1. run
guarding .

Development

workflow:

  1. parsing guarding rules
  2. parsing source code to models
  3. capture rule with models

DSL capture logic:

  1. filter models from rule_level with rule_scope
  2. run expression
  3. run assert

Queries Samples: https://github.com/nvim-treesitter/nvim-treesitter/tree/master/queries

Guarding - Class or Struct function-name

for Java, JavaScript

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

for Rust and Golang

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

Todos

todo:

  • filter
    • filter by package identifier
    • filter by regex
    • filter by implementation
    • filter by extends
    • filter by trait
  • limit impl naming
  • limit files num
  • limit package's sub-package size (for example, Clean Architecture).
  • assert
    • comparison for size / len
    • string comparison
      • contains
      • startsWith
      • endsWith
    • package ops
      • accessed
      • resideIn
      • dependBy
  • languages
    • Java
    • JavaScript (on Going)
    • TypeScript
    • Rust (on Going)
      • class & functions
      • imports
        • basic import
        • mods import restructure
      • package convert

License

This code is distributed under the MIT license. See LICENSE in this directory.

Rust
1
https://gitee.com/thoughtworks/guarding.git
git@gitee.com:thoughtworks/guarding.git
thoughtworks
guarding
guarding
master

搜索帮助