精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Guarding:開源的多語言架構守護工具

開源
Guarding 是一個可以用于 Java、JavaScript、Rust、Go 等語言的架構守護工具。受 ArchUnit 的啟發,借助于易于理解的 DSL,來編寫守護規則。

[[408185]]

Guarding 簡介

Guarding 是一個可以用于 Java、JavaScript、Rust、Go 等語言的架構守護工具。受 ArchUnit 的啟發,借助于易于理解的 DSL,來編寫守護規則。支持 Windows、macOS、GNU/Linux 系統。

使用

簡單來說,就是我們可以使用一個易于閱讀的 DSL 來編寫架構規則。而這些個架構規則,可以用于主流的語言。如下是使用 Guarding 編寫的規則示例:

  1. package(".")::file.len should < 200; 
  2. package(".")::file.len should > 50; 
  3.  
  4. class("java.util.Map"only accessed(["com.phodal.pepper.refactor.staticclass"]); 
  5. class(implementation "BaseParser")::len = 2 
  6. class(implementation "BaseParser")::name should not contains "Lexer"
  7.  
  8. struct("..myapp..")::function.name should contains("Model"); 
  9. struct("..myapp..")::function.name contains(""); 

從上面的示例里,你可以發現 :

  1. 如果你熟悉 ArchUnit 的話,就能很快的上手 Guarding 的編寫。當然了,還有很多語法還在開發中。
  2. Guarding 可以很支持中文。但是,我覺得這中英文模板切換就是個問題。
  3. Guarding 可以支持更多的語法,如針對于 Rust 或者 Golang, class 可以換成 struct。

運行

運行起 Guarding 也非常簡單,只需要 guarding . 就可以了。

安裝

當然了,安裝也非常簡單,直接從 GitHub 下載:https://github.com/inherd/guarding ?;蛘呤牵绻阌?Rust 的環境的話,那么你可以直接: cargo install guarding。

擴展

那么,如何擴展 Guarding 呢?

Guarding 架構

下圖是 Guarding 的處理流程:

Guarding Architecture

  1. 簡單來說,Guarding 的程序為三部分:
  2. Guarding 規則解析器。
  3. 多語言解析器。使用 Treesitter 作為解析工具,配合 S 表達式進行解析。

Guarding 規則執行器。

多語言源碼解析

在語言解析這事上吧,我又經歷了一系列的嘗試。

解析方式選型

基于 Antlr 的標準語言解析。起先在設計 Guarding 的時候,我是打算使用類似于 Coca 的方式,基于 Antlr 官方維護的一個三方貢獻的語法庫。而對于我來說,這是一種舊的解析方式,所以我使用它的可能性不大。

基于 Ctags 的語法分析。另外一種選擇是使用在設計 Modeling 的時候,引入的是 Ctags。Ctags 是一個用于從程序源代碼樹產生索引文件(或tag文件),從而便于文本編輯器來實現快速定位的實用工具。而使用 Ctags 需要引入二進制的包。于是,首先我嘗試構建了 ctags-sys,隨后還需要編寫 ctags 長長解析方式,時間成本有點高。

基于 LSP 的語法分析。我短暫的評估過采用 LSP (Language Server Protocol )的方式,但是使用 LSP 意味著:引入更多的語言相關的依賴。所以,依舊是不可行的路線。

直至,在完善 Uncode 的一些設計時,發現有 Tree-sitter 能實現相關的功能。Tree-sitter 早先是在 Atom 編輯器中引入的一個試驗性功能。Tree-sitter 支持 Rust、JavaScript、Python、Ruby、Haskell 語言。與 Haskell 和 Ruby 這種小眾語言比,Rust 這種小眾語言也就還行,哈哈。不過,從性能上來說,是這里面性能最好的。

解析示例

如下是一個簡單的 C++ 語言的 Class 示例:

  1. class MyClass { 
  2. public
  3. int myNum; 
  4. string myString; 
  5. }; 

TreeSitter 會將上述的 CPP 代碼解析成語法樹 (部分):

  1. translation_unit [0, 0] - [6, 0] 
  2. class_specifier [0, 0] - [4, 1] 
  3. name: type_identifier [0, 6] - [0, 13] 
  4. body: field_declaration_list [0, 14] - [4, 1] 
  5. access_specifier [1, 2] - [1, 9] 

隨后,我們就可以編寫對應的查詢(query)語法樹 S 表達式(S-expression):

  1. (class_specifier 
  2. name: ((type_identifier) @class-name

S 表達式會從語法樹中區別到對應的節點,將節點信息賦給變量,如這里的 @class-name。

你可以從 TreeSitter 官方提供的在線 Playground 嘗試:https://tree-sitter.github.io/tree-sitter/playground

Guarding 語法解析與設計

Guarding 使用的是 Rust 語言開發的,由于之前已經用過了 Lalrpop、Antlr 等解析器,所以這次我們采用的解析器是:pest。雖然,我沒有細究過,這幾個不同的解析器在學術上的差距,我一般只會按需選擇我用得少的。如下是 guarding.pest 的部分代碼示例:

  1. normal_rule = { 
  2. rule_level ~ ("(" ~ scope ~ ")")? ~ (use_symbol ~ expression)? ~ should? ~ only? ~ operator ~ assert ~ ";"
  3.  
  4. rule_level = { 
  5. "package" | 
  6. "class" | 
  7. "struct" | 
  8. "function" | 
  9. "file" 

在 docs 和 examples 里,有 Guarding 的語法開發過程中的記錄和關鍵詞信息。

包路徑解析

值得一提的是包路徑解析,所以我們的包解析方式參考的是 ArchUnit 的設計方式。

如何使用 Guarding 進行架構守護

Guarding 采用的是 Rust 語言,所以二進制是直接支持所有的主流操作系統。其次,我們采用的是 CLI 方式,因此可以在任何階段中采用,如:

  • 在本地結合 Git Hook 進行代碼預提交檢查。
  • 在持續集成階段,配合流水線工作使用。
  • 結合 IDEA / 編輯器插件進行實時檢查(還沒有實現)。

當然了,這個是適用于單個團隊的處理方式。對于更大規模的團隊來說,可以采用:

  1. 模板繼承的方式(當然,還沒有實現)

其它

歡迎加入 Guarding 的開發:https://github.com/inherd/guarding

本文轉載自微信公眾號「phodal」,可以通過以下二維碼關注。轉載本文請聯系phodal公眾號。

 

責任編輯:武曉燕 來源: phodal
相關推薦

2014-07-09 09:20:06

WPFWPF應用

2014-04-16 14:50:20

Spark

2009-08-25 10:44:50

C#實現多語言

2011-08-05 17:54:33

Cocoa Touch 多語言

2012-04-19 11:40:21

Titanium

2025-05-22 05:00:00

2021-09-07 10:17:35

iOS多語言適配設計

2024-05-09 08:14:09

系統設計語言多語言

2023-10-18 15:21:23

2022-08-09 07:22:15

語言數據庫程序

2025-08-11 07:00:00

2009-07-17 10:02:29

WPF程序多語言支持

2024-03-04 14:15:16

OpenAI語言嵌入模型

2023-08-04 10:18:15

2020-04-14 09:50:02

2009-08-31 17:13:09

2019-12-05 16:00:15

Vim插件編程文本編輯器

2009-08-03 17:33:01

ASP.NET多語言支

2021-07-24 11:41:42

前端開發技術

2009-06-15 15:33:13

ScalaTwitter
點贊
收藏

51CTO技術棧公眾號

成人黄色理论片| 日本三级在线视频| 国产精品久久777777毛茸茸| 日韩av资源在线播放| 日韩中文字幕二区| 国产cdts系列另类在线观看| 成人午夜免费av| 国产国产精品人在线视| 四虎永久免费在线| 欧亚精品一区| 在线成人高清不卡| 能在线观看的av| av文字幕在线观看| 国产区在线观看成人精品 | 国产一本一道久久香蕉| 午夜精品久久久久久99热软件| 亚洲精品成人av久久| 91欧美日韩在线| 欧美日韩国产综合视频在线观看 | 精品国产免费久久| 国产嫩草在线观看| av免费不卡国产观看| 国产精品不卡一区二区三区| 久久久www免费人成黑人精品| 97精品人妻一区二区三区在线| 夜夜嗨一区二区三区| 久久亚洲一区二区三区四区五区高 | 91视频在线视频| 伊人成人在线| 欧美美女操人视频| 欧美一区二区三区观看| 一区二区三区韩国免费中文网站| 日韩美女视频一区二区在线观看| 九一精品在线观看| av日韩电影| 亚洲主播在线观看| 国产成人免费高清视频| 成人网视频在线观看| 久久蜜臀中文字幕| 精品国产综合久久| 成人毛片视频免费看| 国产麻豆午夜三级精品| 国产精品女视频| 成人av网站在线播放| 亚洲女人av| 7777kkkk成人观看| 六月丁香在线视频| 在线亚洲激情| 97精品国产91久久久久久| 国产盗摄x88av| 午夜久久一区| 久久久久久午夜| 久久亚洲成人av| 很黄很黄激情成人| 国内精品久久久久久| 日韩精品成人在线| 国产亚洲在线观看| 欧美诱惑福利视频| 日韩综合在线观看| 三级成人在线视频| 国产精品三级在线| 亚洲专区在线播放| 国产一二三精品| 成人三级在线| 性xxxxbbbb| 国产三级精品三级| 亚洲自拍偷拍二区| www视频在线看| 亚洲一区二区视频| 免费在线激情视频| 国产成人毛片| 欧美一级生活片| xxxxxx黄色| 精品国产中文字幕第一页| 中文字幕欧美视频在线| 免费国产羞羞网站美图| 欧美日韩亚洲一区| 2020欧美日韩在线视频| 国产女主播喷水视频在线观看 | 自拍视频一区二区| 精品视频网站| 另类图片亚洲另类| 久久国产精品系列| 奇米888四色在线精品| 91在线国产电影| 污污网站免费在线观看| 欧美激情一区二区三区在线| 日本丰满少妇黄大片在线观看| 黄页在线观看免费| 91久久精品日日躁夜夜躁欧美| 色婷婷一区二区三区av免费看| 视频一区日韩精品| 亚洲色图狂野欧美| 成人性生活毛片| 性欧美videos另类喷潮| 国产日本欧美一区二区三区在线 | 国产精品久久久久久99| 男人的j进女人的j一区| 高清不卡日本v二区在线| 九色在线视频蝌蚪| 亚洲夂夂婷婷色拍ww47| 性欧美极品xxxx欧美一区二区| 欧美午夜在线播放| 原创国产精品91| 日本一二三区不卡| 精品一区中文字幕| 欧美日韩亚洲一区二区三区在线观看| 激情在线小视频| 欧美午夜精品久久久久久久| 欧美污在线观看| 精品福利久久久| 久久久免费观看视频| 91极品身材尤物theporn| 99re这里都是精品| 日韩精品一区二区在线视频| 精品美女一区| 亚洲欧美日韩中文在线制服| 久久久久国产精品夜夜夜夜夜| 日本成人超碰在线观看| 精品蜜桃一区二区三区| www.欧美日本韩国| 欧美日韩免费高清一区色橹橹| 国产精品一区二区入口九绯色| 永久91嫩草亚洲精品人人| 国产精品旅馆在线| 国产在线视频网站| 欧美性生活大片免费观看网址| 亚洲精品久久久久久| 婷婷另类小说| 国产精品一区二区久久| 国产色a在线| 91国模大尺度私拍在线视频| 最新在线黄色网址| 亚洲另类自拍| 精品不卡在线| 黑森林国产精品av| 亚洲精品在线免费观看视频| 久久久久99精品成人片试看| 精品一区二区三区不卡| 亚洲欧美日韩国产成人综合一二三区| 欧美日韩免费看片| 亚洲欧美一区二区激情| 国产剧情在线视频| 久久亚洲精精品中文字幕早川悠里| 成年人网站国产| 国产毛片精品| 2020国产精品视频| 飘雪影视在线观看免费观看| 欧美日韩国产色| 精品久久久久久中文字幕人妻最新| 一本综合久久| 欧美亚洲另类久久综合| 日本成人片在线| 亚洲网站在线播放| 在线观看中文字幕码| 国产精品全国免费观看高清| 岛国av在线免费| 亚洲香蕉av| 国产精品久久久久久免费观看| 天堂av资源在线观看| 精品国产乱码久久久久久老虎| 国产第100页| 91在线观看视频| 日韩av在线综合| 日韩精品水蜜桃| 亚洲va欧美va国产综合久久| 欧美高清另类hdvideosexjaⅴ | 成年人在线观看| 欧美日韩精品电影| 69xx绿帽三人行| 99久久伊人网影院| 欧美一级裸体视频| 一区二区三区午夜视频| 国产91社区| 丁香六月综合| 久久精品国产成人精品| 亚洲国产精品久久久久久6q| 精品久久久久久久久久| 久久美女免费视频| 国产呦萝稀缺另类资源| 黄页网站大全在线观看| 国产探花在线精品一区二区| 成人www视频在线观看| 日本高清在线观看视频| 精品一区二区三区电影| 国产又粗又长又黄| 精品久久久久久国产| 色欲AV无码精品一区二区久久| 国产一区二区影院| 精品久久一二三| 国产精品x453.com| 久久99欧美| 精品国产乱码久久久久久樱花| 88国产精品欧美一区二区三区| av在线播放av| 亚洲成人激情在线| 在线视频 91| 天天操天天干天天综合网| 亚洲色图 激情小说| 成人久久视频在线观看| 久久国产这里只有精品| 国产精品一页| av日韩在线看| 国产精品片aa在线观看| 成人在线观看av| 日本免费成人| 日本高清+成人网在线观看| 99热国产在线| 色琪琪综合男人的天堂aⅴ视频| 免费a视频在线观看| 欧美三级中文字幕在线观看| 欧美不卡视频在线观看| 亚洲精品国产一区二区三区四区在线| 男生草女生视频| av在线不卡观看免费观看| 日韩视频在线观看一区二区三区| 日韩高清电影一区| 国产综合中文字幕| 欧美激情五月| 国产精品亚洲天堂| 日韩电影在线视频| 欧美尤物一区| 一区二区小说| 麻豆精品视频| 婷婷五月色综合香五月| 成人高清在线观看| 视频亚洲一区二区| 7777精品久久久大香线蕉小说| 美女视频一区| 国产精品色婷婷视频| 欧美成人app| 日本91av在线播放| 综合另类专区| 欧美中文字幕第一页| 成年男女免费视频网站不卡| 久久久久久91| 国产v日韩v欧美v| 91高清在线免费观看| 1234区中文字幕在线观看| 久久久久久久久网站| 欧美野外wwwxxx| 欧美激情视频网址| 黄页在线观看免费| 91精品国产91久久久久福利| 678在线观看视频| 69视频在线免费观看| 亚洲欧美小说色综合小说一区| 2020久久国产精品| 中文字幕av一区二区三区佐山爱| 日本高清视频精品| 成人久久网站| 成人午夜激情免费视频| www.久久久.com| 99一区二区三区| 卡一精品卡二卡三网站乱码| 精品视频一区二区| 欧美女优在线视频| 一区精品视频| 国产精品videossex久久发布| a级免费在线观看| 一本一本久久| 992kp快乐看片永久免费网址| 美女久久久精品| 四虎1515hh.com| 不卡影院免费观看| 日本精品在线观看视频| 1024成人网色www| 国产精品suv一区二区69| 欧美日韩精品在线播放| 波多野结衣高清视频| 欧美精品久久天天躁| www.国产精品视频| 日韩电影中文 亚洲精品乱码| 国产色在线 com| 欧美二区在线播放| 国产精品伦理| 91麻豆国产精品| 日本福利一区| 中文一区一区三区免费| 激情欧美日韩| 午夜激情福利在线| 国产成人在线网站| 无码一区二区三区在线| 亚洲欧美激情视频在线观看一区二区三区| 黄色在线观看免费| 日本道色综合久久| 亚洲第一视频在线播放| 亚洲全黄一级网站| av片在线观看| 日本最新高清不卡中文字幕| 亚洲在线资源| 精品综合在线| 中国成人一区| 久久人妻精品白浆国产 | 99热在线国产| 欧美日本成人| 男人的天堂avav| 蜜乳av一区二区| 五十路六十路七十路熟婆| 中文字幕亚洲欧美在线不卡| 日韩成人免费在线观看| 69久久99精品久久久久婷婷 | 久久精品66| 国产香蕉一区二区三区| 日本视频一区二区三区| 亚洲一区二区三区黄色| 亚洲色图一区二区三区| 婷婷激情五月网| 亚洲精品一区二区三区蜜桃下载| 午夜激情视频在线| 日本久久久久亚洲中字幕| 大香伊人久久精品一区二区| 一区二区精品视频| 日韩影院免费视频| 久久偷拍免费视频| 一区二区视频在线| 国产乱人乱偷精品视频| 国产亚洲一级高清| 国产高清不卡| 你懂的网址一区二区三区| 精品91视频| 中文字幕久久久久久久| 136国产福利精品导航| 伊人精品一区二区三区| 国产亚洲精品久久久久久777| 97蜜桃久久| 国产精品亚洲一区| 午夜国产精品视频| 先锋资源在线视频| 99re久久| 在线亚洲国产精品网| 周于希免费高清在线观看| 国产乱码精品一区二区三区不卡| 欧美一区二区| 92看片淫黄大片欧美看国产片| 久久福利影院| 性猛交ⅹ×××乱大交| 国产夜色精品一区二区av| 亚洲免费在线视频观看| 日韩毛片在线看| 成人国产二区| 日韩黄色影视| 蜜桃视频在线观看一区二区| 欧美日韩中文字幕视频| 欧美日韩性生活| 麻豆传媒在线免费| 91在线免费视频| 欧美日本不卡高清| 色哟哟网站在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 国产三级视频在线播放| 久久99热这里只有精品国产| 日韩在线精品强乱中文字幕| 今天免费高清在线观看国语| 国产一区二区久久| 欧美高清视频一区二区三区| 日韩欧美高清dvd碟片| 成人性生交大片免费看网站| 久久66热这里只有精品| 久久国产高清| 国产一区二区三区四区在线| 欧美视频在线不卡| 国产原厂视频在线观看| 不卡视频一区二区| 日韩网站在线| 影音先锋制服丝袜| 欧美精品高清视频| 欧美wwww| 欧美日韩在线精品| 美女视频网站久久| 欧美三级免费看| 亚洲第一网中文字幕| 三上悠亚激情av一区二区三区| 日韩中文字幕一区| 国产一区二区三区在线观看免费 | 91免费在线| 51成人做爰www免费看网站| 亚洲伦伦在线| 国产精品理论在线| 日韩三级视频中文字幕| 国产理论在线| 伊人av成人| 不卡av在线免费观看| 波多野结衣电影在线播放| 欧美精品制服第一页| 婷婷综合成人| 初高中福利视频网站| 欧美午夜女人视频在线| 欧美18hd| 久精品国产欧美| 国产在线乱码一区二区三区| 精品美女久久久久| 久久精品视频va| 杨幂一区二区三区免费看视频| 91av视频免费观看| 精品久久久久久久久久久久久久| 日本三级在线播放完整版| 久久精品国产99精品国产亚洲性色| 美女视频一区二区三区| 麻豆久久久久久久久久|