国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我在GitHub上又找到一個(gè)堪稱神器的命令行工具

開發(fā) 開發(fā)工具
GitHub上的實(shí)用工具還是挺多的,這不,又讓我找到了一個(gè)堪稱神器的支持多語(yǔ)言的命令行工具——Semantic,Semantic是一個(gè)解析,分析和比較多種語(yǔ)言源代碼的命令行工具,也是一個(gè)Haskell庫(kù)。

GitHub上的實(shí)用工具還是挺多的,這不,又讓我找到了一個(gè)堪稱神器的支持多語(yǔ)言的命令行工具——Semantic,Semantic是一個(gè)解析,分析和比較多種語(yǔ)言源代碼的命令行工具,也是一個(gè)Haskell庫(kù)。

[[399817]]

平常解析源代碼也算是程序員的家常便飯了,如果有個(gè)工具幫你一把那是最好不過的了,Semantic具體如何使用,猿妹下面一說你就明白了:

首先呢,運(yùn)行semantic --help獲取最新的完整選項(xiàng)列表:

解析

  1. Usage: semantic parse ([--sexpression] | [--json] | [--json-graph] | [--symbols] 
  2.                       | [--dot] | [--show] | [--quiet]) [FILES...] 
  3.   Generate parse trees for path(s) 
  4.  
  5. Available options: 
  6.   --sexpression            Output s-expression parse trees (default) 
  7.   --json                   Output JSON parse trees 
  8.   --json-graph             Output JSON adjacency list 
  9.   --symbols                Output JSON symbol list 
  10.   --dot                    Output DOT graph parse trees 
  11.   --show                   Output using the Show instance (debug only, format 
  12.                            subject to change without notice) 
  13.   --quiet                  Don't produce output, but show timing stats 

Semantic使用樹形圖來生成解析樹,現(xiàn)在我們拿一個(gè)簡(jiǎn)單的程序來解析你會(huì)看的更明了,打開test.A.py文件,粘貼如下:

  1. def Foo(x): 
  2.     return x 
  3. print Foo("hi") 

現(xiàn)在,讓我們生成一個(gè)抽象語(yǔ)法樹(AST)

  1. $ semantic parse test.A.py 
  2. (Statements 
  3.   (Annotation 
  4.     (Function 
  5.       (Identifier) 
  6.       (Identifier) 
  7.       (Return 
  8.         (Identifier))) 
  9.     (Empty)) 
  10.   (Call 
  11.     (Identifier) 
  12.     (Call 
  13.       (Identifier) 
  14.       (TextElement) 
  15.       (Empty)) 
  16.     (Empty))) 

默認(rèn)的s-expression輸出是一種很好的格式,可以快速可視化代碼結(jié)構(gòu)。我們可以看到有一個(gè)聲明的函數(shù),然后有一個(gè)調(diào)用表達(dá)式,嵌套在另一個(gè)調(diào)用表達(dá)式中,它與函數(shù)調(diào)用print和Foo。你還可以使用其他的輸出格式。

DIFF(比較)

  1. Usage: semantic diff ([--sexpression] | [--json] | [--json-graph] | [--toc] | 
  2.                      [--dot] | [--show]) [FILE_A] [FILE_B] 
  3.   Compute changes between paths 
  4.  
  5. Available options: 
  6.   --sexpression            Output s-expression diff tree (default) 
  7.   --json                   Output JSON diff trees 
  8.   --json-graph             Output JSON diff trees 
  9.   --toc                    Output JSON table of contents diff summary 
  10.   --dot                    Output the diff as a DOT graph 
  11.   --show                   Output using the Show instance (debug only, format 
  12.                            subject to change without notice) 

Graph(圖)

  1. Usage: semantic graph ([--imports] | [--calls]) [--packages] ([--dot] | [--json] 
  2.                       | [--show]) ([--root DIR] [--exclude-dir DIR] 
  3.                       DIR:LANGUAGE | FILE | --language ARG (FILES... | --stdin)) 
  4.   Compute a graph for a directory or from a top-level entry point module 
  5.  
  6. Available options: 
  7.   --imports                Compute an import graph (default) 
  8.   --calls                  Compute a call graph 
  9.   --packages               Include a vertex for the package, with edges from it 
  10.                            to each module 
  11.   --dot                    Output in DOT graph format (default) 
  12.   --json                   Output JSON graph 
  13.   --show                   Output using the Show instance (debug only, format 
  14.                            subject to change without notice) 
  15.   --root DIR               Root directory of project. Optional, defaults to 
  16.                            entry file/directory. 
  17.   --exclude-dir DIR        Exclude a directory (e.g. vendor) 
  18.   --language ARG           The language for the analysis. 
  19.   --stdin                  Read a list of newline-separated paths to analyze 
  20.                            from stdin. 

語(yǔ)言支持

多語(yǔ)言支持是Semantic的一大優(yōu)勢(shì),目前支持Ruby、JavaScript、typescript、Python、Go、PHP、Java等主流編程語(yǔ)言都支持

Semantic最低要求GHC 8.6.4和Cabal 2.4,建議使用ghcup沙箱GHC版本,為通過操作系統(tǒng)的軟件包管理器安裝的GHC軟件包可能無法安裝靜態(tài)鏈接版本的GHC啟動(dòng)庫(kù)。

  1. git clone git@github.com:github/semantic.git 
  2. cd semantic 
  3. script/bootstrap 
  4. cabal new-build 
  5. cabal new-test 
  6. cabal new-run semantic -- --help 

創(chuàng)建者使用cabal的Nix風(fēng)格的本地版本進(jìn)行開發(fā)。要快速入門,可以按照以上操作。

目前,semantic已經(jīng)在GitHub上獲得 8000 個(gè)Star,450 個(gè)Fork,感興趣的可以到GitHub上查閱更多詳情

(GitHub地址:https://github.com/github/semantic)。

 

責(zé)任編輯:趙寧寧 來源: 開源最前線
相關(guān)推薦

2020-12-08 10:33:56

DDoS攻擊開源安全安全工具

2021-02-04 11:11:08

開發(fā)技能工具

2021-02-04 11:46:49

GithubSQL工具Franchise

2011-06-17 16:49:05

Cocoa蘋果

2022-01-26 18:59:08

Python工具

2021-06-03 10:34:43

GitHub停車系統(tǒng)項(xiàng)目

2022-01-11 09:05:07

工具Python 命令行

2016-08-10 12:41:00

Linux工具bcShell

2019-02-27 09:24:48

命令行文件Linux

2023-03-08 15:38:56

Linux命令dict

2019-06-10 15:00:27

node命令行前端

2019-09-09 15:43:29

UnixLinux命令行

2012-07-11 13:35:25

UnixLinux

2014-06-17 09:49:07

Ngxtop實(shí)時(shí)監(jiān)控Nginx

2019-05-30 10:40:04

ddgrLinuxDuckDuckGo

2022-02-17 18:21:47

工具HTTPie客戶端

2020-12-08 08:46:07

GoJava工具

2017-05-27 14:45:04

Linux命令進(jìn)程

2015-07-13 11:05:31

Linuxlolcat

2021-07-15 13:25:43

LinuxPDF
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品毛片一区视频| 草b视频在线观看| 三级成人在线| 亚洲午夜电影在线| 亚洲欧美日韩另类精品一区二区三区| 成人另类视频| 亚洲精品www久久久| 免费在线黄网| 99久久久久免费精品国产| 国产精品免费一区二区| 51精品国产| 国产婷婷成人久久av免费高清| 97影院在线观看| 成人av电影在线| 国产欧美一区二区在线播放| 国产在线播放精品| 亚洲欧美另类在线观看| 日本一卡二卡四卡精品| 欧美激情资源网| 一本—道久久a久久精品蜜桃| 91综合在线| 欧美黄色成人网| 亚洲欧美小说色综合小说一区| 欧美性xxxxxx| www.大网伊人| 不卡免费追剧大全电视剧网站| 精品日韩电影| 欧美激情日韩| 国产精品丝袜一区二区三区| 成人av地址| 免费av一区二区| 国产乱子精品一区二区在线观看| 欧美va亚洲va在线观看蝴蝶网| 成人亚洲综合天堂| 狠狠操狠狠色综合网| jizz在亚洲| 国产欧美综合在线观看第十页| 免费看日本黄色| 国产一区二区三区四区五区美女| 欧美动漫一区二区| 噜噜噜久久亚洲精品国产品小说| 91传媒在线免费观看| 99视频精品全部免费在线视频| 青青草成人在线| 妖精一区二区三区精品视频| 97婷婷涩涩精品一区| 国产精品巨作av| 69久久夜色精品国产69乱青草| 97人人澡人人爽91综合色| 久久伊人精品天天| 日韩高清在线观看一区二区| 欧美精品在线视频观看| 亚洲一区二区免费在线观看| 欧美激情伊人电影| 免费看av成人| 91精品免费久久久久久久久| 成人羞羞在线观看网站| 91久久国产精品| 狠狠干成人综合网| 精品国产区在线| 日韩有码一区二区三区| 在线免费观看成人| 成人丝袜18视频在线观看| 少妇高清精品毛片在线视频| 久久久久久久久久久久久女国产乱 | 成黄免费在线| 欧美年轻男男videosbes| 色影院视频在线| 精品国精品国产| 青青在线精品| 国产精品久久久久久久久久久新郎 | 亚洲欧洲日韩一区二区三区| avtt天堂资源网| 亚洲成人午夜影院| 成人一区二区不卡免费| 亚洲国产成人在线播放| 亚洲人体在线| 国产精品免费久久久| 欧美一级久久| 18岁网站在线观看| 图片区日韩欧美亚洲| 亚洲综合图区| 久久av.com| 91影院成人| 天天操天天干天天玩| 最新热久久免费视频| 中文字幕在线视频区| 亚洲图片制服诱惑| 在线亚洲a色| 天天综合色天天综合色hd| 久久九九影视网| 色多多视频在线观看| 久久久www成人免费精品| 菠萝蜜一区二区| 伊人av成人| 国产精品福利在线播放| 超碰在线caoporn| 欧美成人免费全部观看天天性色| 欧美丰满老妇| 亚洲乱码日产精品bd在线观看| 亚洲国产美女搞黄色| 瑟瑟视频在线看| 成人激情黄色网| av爱爱亚洲一区| 免费高清完整在线观看| 欧美成人精品xxx| 美女国产精品| 91短视频在线观看| 亚洲精品中文字幕有码专区| 精品免费一区二区| 国产黄色激情视频| 日本久久电影网| aiai久久| 亚洲爆乳无码精品aaa片蜜桃| 一本到不卡精品视频在线观看| 久久久久九九精品影院| 日本精品一区二区| 五月激情六月综合| 白白在线精品| 日韩精品手机在线观看| 欧美三级在线看| 欧美特黄一级大片| 国产a级一级片| 亚洲国产精久久久久久| 欧美1区免费| 婷婷福利视频导航| 久热精品视频在线免费观看 | 日韩av卡一卡二| 欧美成人艳星乳罩| 亚洲精品a级片| 日韩av片网站| 亚洲天堂网站在线观看视频| 亚洲激情av| 亚洲啪啪aⅴ一区二区三区9色| 欧美激情在线视频二区| 顶级嫩模精品视频在线看| 欧美家庭影院| 欧美亚州在线观看| 91精品欧美福利在线观看| 亚洲精品va| 在线免费福利| 91精品国产91久久久久福利| 不卡区在线中文字幕| freexxx性亚洲精品| 国产伦精品一区二区三区照片| 午夜精品影院在线观看| 免费看日本一区二区| www.99av| 78m国产成人精品视频| 亚洲国产精品99久久久久久久久 | 久久躁日日躁aaaaxxxx| 国产福利一区二区三区视频在线 | 国产日韩在线| 日韩在线观看av| 国产91高潮流白浆在线麻豆| 国产福利在线免费观看| 免费在线成人av电影| 欧美日韩高清一区二区不卡| 国精品一区二区| 91官网在线| 欧美污视频久久久| 欧美一区二区女人| 一区二区三区福利| 日韩另类在线| 日韩欧美国产二区| 日韩精品一区二区三区中文不卡| 老妇喷水一区二区三区| 激情aⅴ欧美一区二区欲海潮| 日韩精品第一页| 亚洲人成网7777777国产| 成人中文字幕在线| 国产一区二区三区视频在线| 一级特黄性色生活片| 97成人精品区在线播放| 亚洲大型综合色站| 91久久在线| 水蜜桃在线视频| 天堂8在线天堂资源bt| 欧美国产精品日韩| 午夜在线电影亚洲一区| 亚洲狼人精品一区二区三区| 日本孕妇大胆孕交无码| 91亚洲精品国产| 久久国产精品电影| 一区二区三区不卡视频在线观看| 91精品国产乱码久久久久久| 国产网站在线免费观看| 日韩专区第三页| 91成人精品网站| 色综合久久久久网| 蜜臀av性久久久久蜜臀aⅴ流畅| 2019年精品视频自拍| 亚洲午夜精品久久久久久人妖| 极品尤物久久久av免费看| 欧美怡红院视频一区二区三区| 亚洲天堂成人网| 激情综合自拍| 香蕉成人影院| 男人本色网站| 欧美精品亚洲|