精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

中文字幕日韩一区| 久久久免费毛片| 一区免费观看视频| 亚洲综合中文字幕在线| 中文字幕一区二区三区精品| 久久99青青| 欧美一区二区三区婷婷月色| 久草视频这里只有精品| 国产黄色免费在线观看| 国产一区二区在线观看视频| 欧美最近摘花xxxx摘花| 国产天堂av在线| 偷窥自拍亚洲色图精选| 69堂国产成人免费视频| 好吊妞无缓冲视频观看| 麻豆传媒视频在线观看| 91亚洲永久精品| 91天堂在线观看| 午夜精品一区二| 欧美激情 亚洲a∨综合| 国产一区二区三区在线观看视频 | 日本怡春院一区二区| 九九热视频这里只有精品| 色一情一交一乱一区二区三区| 欧美一区一区| 欧美午夜精品一区| 91成人在线观看喷潮教学| 国产福利在线播放麻豆| 国产日韩欧美麻豆| 久久精品久久精品国产大片| www日本高清| 久久99热这里只有精品| 国产成人精品一区二区三区| 国产无遮挡aaa片爽爽| 97国产成人高清在线观看| 亚洲欧美一区二区三区四区| 极品白嫩少妇无套内谢| 精品午夜av| 欧美日韩国产美| 国产一级特黄a大片免费| 国产精品25p| 亚洲午夜激情网站| 日本aa在线观看| 国产一区久久精品| 1区2区3区国产精品| 神马影院我不卡| 成人在线免费观看| 日本一区二区免费在线 | 天堂v在线观看| 成人高清免费观看| 国产高清不卡av| 亚洲国产精品suv| 国产精品88888| 91超碰在线免费观看| 国产精品久久久久久69| 久久精品99国产精品| 国产欧美日韩亚洲精品| 亚洲最新在线观看| 亚洲色图欧美视频| 免费在线观看成人av| 欧美激情国产日韩精品一区18| 免费成人深夜蜜桃视频| 欧美一区2区| 一区二区三区黄色| 欧美日韩生活片| 91亚洲国产成人久久精品| 日韩在线视频二区| 色偷偷www8888| 亚洲天堂一区二区三区四区| 麻豆乱码国产一区二区三区| 欧洲猛交xxxx乱大交3| 欧美日韩一视频区二区| 久久久噜噜噜久久中文字免| 日本中文在线播放| 久久久久一区| 国产主播精品在线| av中文字幕免费| 成人av在线播放网址| 欧美大香线蕉线伊人久久国产精品 | 欧美成人日本| 国内外成人免费激情在线视频| 国产精品6666| 日韩高清在线一区| 成人网中文字幕| 亚洲黄色小说网| 91视频.com| 亚洲精品中文字幕乱码三区不卡| 国产精品久久久久久福利| 一区二区在线免费| 精品少妇一区二区三区在线| 成人h在线观看| 日韩精品一区二区三区老鸭窝| 中文字幕精品久久久| 国内黄色精品| 欧美多人爱爱视频网站| 国产又大又黄又粗| 精品午夜久久福利影院| 国产精品免费一区二区三区观看 | 欧美日韩综合一区二区三区| 美女免费视频一区| 高清国产在线一区| 丁香在线视频| 亚洲午夜久久久久| 中文字幕有码av| 黑人久久a级毛片免费观看| 亚洲天堂av综合网| 免费一级黄色大片| 免费国产亚洲视频| 韩日午夜在线资源一区二区| 日本免费在线观看| 色综合天天综合色综合av| 91av免费观看| 精品国产一区一区二区三亚瑟 | 牛牛精品一区二区| 91麻豆精品国产91久久久更新时间| 无码一区二区精品| 你懂的国产精品| 国产精品三级网站| 神马午夜电影一区二区三区在线观看 | 亚洲欧洲午夜| 川上优av一区二区线观看| 理论在线观看| 天天av天天翘天天综合网| 亚洲精品在线视频播放| 国产欧美一区二区精品久久久| 久久青草精品视频免费观看| 国产内射老熟女aaaa∵| 中文字幕欧美三区| 亚洲熟妇av一区二区三区| 中文在线免费一区三区| 久久精品视频va| 中文字幕第一页在线播放| 91理论电影在线观看| 久久这里只有精品18| 国产精久久久| 日韩少妇与小伙激情| 国产suv精品一区二区33| 99久久亚洲一区二区三区青草| 一本大道东京热无码aⅴ| 青青伊人久久| 搡老女人一区二区三区视频tv| 日本视频网站在线观看| 91免费小视频| 日韩网址在线观看| 精品中文字幕一区二区三区av| 97香蕉超级碰碰久久免费的优势| 农村少妇久久久久久久| 亚洲一二三四区| 国产伦精品一区二区免费| 亚洲午夜精品久久久久久app| 亚洲在线免费看| 91小视频xxxx网站在线| 91麻豆精品国产91久久久| 日韩欧美国产成人精品免费| 国产一区二区免费在线| 一区二区三区观看| avtt久久| 欧美激情一二三| 国 产 黄 色 大 片| 亚洲成人动漫精品| 色噜噜在线观看| 日欧美一区二区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲爱爱视频| www.xxxx欧美| 精品国产免费无码久久久| 亚洲线精品一区二区三区八戒| 毛茸茸free性熟hd| 久久免费黄色| 一区二区视频国产| 中文字幕一区图| 奇门遁甲1982国语版免费观看高清| 黄色av网址在线免费观看| 欧美日韩一本到| 中文字幕在线有码| 99在线精品观看| 欧美日韩大尺度| 亚洲视频电影在线| 激情视频一区二区| 成人国产激情| 欧美区二区三区| 日本中文字幕电影在线观看| 精品婷婷伊人一区三区三| 丝袜美腿小色网| 91亚洲精品乱码久久久久久蜜桃| 日本精品久久久久中文字幕| 99tv成人| 精品国产一区二区三区麻豆小说| 欧美片第1页| 久久97精品久久久久久久不卡| 四虎影视在线观看2413| 欧美日韩在线精品一区二区三区激情 | 西野翔中文久久精品国产| 国产精品视频区| 97人人爽人人澡人人精品| 中文字幕无线精品亚洲乱码一区| www.亚洲天堂.com| 欧美在线视频你懂得| 劲爆欧美第一页| 国产欧美日韩一区二区三区在线观看| 91在线第一页| 视频在线观看91| 91九色丨porny丨国产jk| 欧美精品尤物在线观看 | 91极品视频在线观看| 欧美在线免费一级片| 日本免费高清一区| 国产精品成人自拍| 成人写真福利网| 免费观看成人性生生活片| 欧美国产日韩免费| 91xxx在线观看| 国产丝袜高跟一区| 亚洲高清精品视频| 欧美日本在线播放| 欧美男人亚洲天堂| 午夜精品成人在线| 欧美精品一级片| 中文字幕一区二区日韩精品绯色| 亚洲精品视频久久久| 福利一区福利二区| 小日子的在线观看免费第8集| 日韩精品欧美精品| 欧美性久久久久| 亚洲第一区色| 乱熟女高潮一区二区在线| 国产精品91一区二区三区| 日韩精品欧美专区| 亚洲v天堂v手机在线| 国产美女精品久久久| 国产精品美女久久久久| 国产一区玩具在线观看| 亚洲精品在线影院| 国产成人avxxxxx在线看 | 懂色av影视一区二区三区| 青娱乐国产精品| 亚洲男人的天堂在线aⅴ视频| 欧美a级片免费看| 国产精品视频一区二区三区不卡| 精品人伦一区二区三电影| 97久久超碰国产精品电影| 在线免费观看a级片| 成人不卡免费av| 99re久久精品国产| 99精品偷自拍| 男男做爰猛烈叫床爽爽小说 | 日本伦理一区二区三区| 国产精品视频你懂的| 特级西西www444人体聚色 | 欧美亚洲二区| 国产日韩换脸av一区在线观看| 亚洲www啪成人一区二区| 日韩免费黄色av| 精品欧美一区二区三区在线观看 | 日本国产在线观看| 亚洲第一精品久久忘忧草社区| 人妻少妇精品无码专区| 亚洲黄色www| 免费在线观看一级毛片| 国产一区二区免费| 日本高清视频在线播放| 久久精品国产亚洲7777| 污视频网站在线免费| 欧美精品videosex牲欧美| free性m.freesex欧美| 91tv亚洲精品香蕉国产一区7ujn| 在线黄色的网站| 国产精品九九九| 国产午夜亚洲精品一级在线| 成人自拍爱视频| 天堂av一区二区三区在线播放| 欧美日韩在线不卡一区| 日韩精品诱惑一区?区三区| 妞干网这里只有精品| 激情欧美一区| 不卡av免费在线| 国内成人精品2018免费看| 超碰caoprom| 国产精品视频yy9299一区| 欧美第一页在线观看| 亚洲va国产va欧美va观看| 一二三区免费视频| 欧美一区二区精品久久911| 农村少妇久久久久久久| 国产一区二区三区视频在线观看| 国产在线更新| 日本欧美精品在线| 榴莲视频成人app| 欧美不卡在线一区二区三区| 99久久影视| 日本中文字幕网址| 免费成人在线网站| fc2成人免费视频| 中文久久乱码一区二区| 国产亚洲精品久久久久久无几年桃| 欧美性猛交xxxx乱大交| 国产精品自拍电影| 亚洲欧美福利视频| 污片视频在线免费观看| 国产精品露脸自拍| 日韩极品在线| 欧美少妇在线观看| 日日夜夜免费精品视频| 亚洲美女在线播放| 亚洲天堂久久久久久久| 黄网在线观看视频| 日韩欧美电影在线| aiai在线| 欧美在线一区二区视频| 色妞ww精品视频7777| 亚洲国产精品久久久久婷婷老年| 亚洲高清自拍| 亚洲第一区第二区第三区| 国产亚洲欧美在线| 日韩美女视频网站| 日韩欧美国产一区二区在线播放 | 欧美风情在线观看| 久久91视频| 欧美一级片免费观看| 亚洲欧洲另类| 欧美激情一区二区三区p站| 国产精品高潮呻吟| 青青视频在线免费观看| 亚洲精品国产精品自产a区红杏吧| 1区2区3区在线视频| 国产在线拍揄自揄视频不卡99| 精品免费av| 欧美私人情侣网站| 99久精品国产| 黑人一级大毛片| 日韩电影视频免费| 136福利第一导航国产在线| 成人羞羞视频免费| 牛夜精品久久久久久久99黑人| 日本美女视频一区| 国产精品人妖ts系列视频| 亚洲视屏在线观看| 一本一道久久a久久精品逆3p| 中文字幕成在线观看| 精品一卡二卡三卡四卡日本乱码| 激情久久中文字幕| av天堂一区二区| 午夜精品久久久久久久| 日韩一级片免费观看| 91成品人片a无限观看| 欧美丝袜足交| 成人免费在线小视频| 99精品视频中文字幕| 成人午夜淫片100集| 亚洲美女免费精品视频在线观看| 国产免费拔擦拔擦8x高清在线人 | 国产精品黄色av| av亚洲免费| 蜜臀一区二区三区精品免费视频 | 黄色在线视频网址| 亚洲欧美日韩爽爽影院| 欧美日韩免费观看视频| 色噜噜色狠狠狠狠狠综合色一| 毛片不卡一区二区| 日韩精品一区二区亚洲av性色| 日韩一区二区免费高清| 手机在线免费看av| 国产精品国产三级国产专区53| 亚洲国产精品一区| 一区二区不卡免费视频| 欧美曰成人黄网| 国产精品实拍| 精品伦精品一区二区三区视频| 久久亚洲风情| 登山的目的在线| 日韩欧美视频一区| 欧产日产国产精品视频| 五月天亚洲综合小说网| 国产在线视频一区二区| 国产亚洲欧美精品久久久www| 亚洲第一区在线观看| 3d性欧美动漫精品xxxx软件| 中文字幕一区二区三区乱码| 成人免费黄色在线| 久久久久久亚洲av无码专区| 美日韩精品免费观看视频| 欧美sss在线视频| 日本中文字幕精品—区二区| 亚洲在线成人精品| 精品三级久久久久久久电影聊斋| 成人av在线天堂| 午夜亚洲激情| 国产1区2区3区4区| 亚洲欧美日韩中文视频| 精品视频一区二区三区在线观看 | 国产在线免费视频| 在线精品国产欧美| 风间由美性色一区二区三区四区| 东京热加勒比无码少妇| 亚洲欧美激情插 | 日本新janpanese乱熟| 一区二区三区欧美亚洲| 国产美女性感在线观看懂色av| 99国产高清| 蜜臀av性久久久久蜜臀av麻豆|