日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
我在GitHub上又找到一個(gè)堪稱神器的命令行工具

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

十多年的北安網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整北安建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)公司從事“北安網(wǎng)站設(shè)計(jì)”,“北安網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

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

首先呢,運(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. Available options:
  5.   --sexpression            Output s-expression parse trees (default)
  6.   --json                   Output JSON parse trees
  7.   --json-graph             Output JSON adjacency list
  8.   --symbols                Output JSON symbol list
  9.   --dot                    Output DOT graph parse trees
  10.   --show                   Output using the Show instance (debug only, format
  11.                            subject to change without notice)
  12.   --quiet                  Don't produce output, but show timing stats

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

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

現(xiàn)在,讓我們生成一個(gè)抽象語(yǔ)法樹(shù)(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. Available options:
  5.   --sexpression            Output s-expression diff tree (default)
  6.   --json                   Output JSON diff trees
  7.   --json-graph             Output JSON diff trees
  8.   --toc                    Output JSON table of contents diff summary
  9.   --dot                    Output the diff as a DOT graph
  10.   --show                   Output using the Show instance (debug only, format
  11.                            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. Available options:
  6.   --imports                Compute an import graph (default)
  7.   --calls                  Compute a call graph
  8.   --packages               Include a vertex for the package, with edges from it
  9.                            to each module
  10.   --dot                    Output in DOT graph format (default)
  11.   --json                   Output JSON graph
  12.   --show                   Output using the Show instance (debug only, format
  13.                            subject to change without notice)
  14.   --root DIR               Root directory of project. Optional, defaults to
  15.                            entry file/directory.
  16.   --exclude-dir DIR        Exclude a directory (e.g. vendor)
  17.   --language ARG           The language for the analysis.
  18.   --stdin                  Read a list of newline-separated paths to analyze
  19.                            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版本,為通過(guò)操作系統(tǒng)的軟件包管理器安裝的GHC軟件包可能無(wú)法安裝靜態(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)行開(kāi)發(fā)。要快速入門,可以按照以上操作。

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

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


名稱欄目:我在GitHub上又找到一個(gè)堪稱神器的命令行工具
本文URL:http://www.5511xx.com/article/dpdgddi.html