我在GitHub上又找到一个堪称神器的命令行工具

GitHub上的实用工具还是挺多的,这不,又让我找到了一个堪称神器的支持多语言的命令行工具——Semantic,Semantic是一个解析,分析和比较多种语言源代码的命令行工具,也是一个Haskell库。

十多年的北安网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整北安建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“北安网站设计”,“北安网站推广”以来,每个客户项目都认真落实执行。

平常解析源代码也算是程序员的家常便饭了,如果有个工具帮你一把那是最好不过的了,Semantic具体如何使用,猿妹下面一说你就明白了:

首先呢,运行semantic --help获取最新的完整选项列表:

解析

 
 
 
 
  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使用树形图来生成解析树,现在我们拿一个简单的程序来解析你会看的更明了,打开test.A.py文件,粘贴如下:

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

现在,让我们生成一个抽象语法树(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)))

默认的s-expression输出是一种很好的格式,可以快速可视化代码结构。我们可以看到有一个声明的函数,然后有一个调用表达式,嵌套在另一个调用表达式中,它与函数调用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.

语言支持

多语言支持是Semantic的一大优势,目前支持Ruby、JavaScript、typescript、Python、Go、PHP、Java等主流编程语言都支持

Semantic最低要求GHC 8.6.4和Cabal 2.4,建议使用ghcup沙箱GHC版本,为通过操作系统的软件包管理器安装的GHC软件包可能无法安装静态链接版本的GHC启动库。

 
 
 
 
  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

创建者使用cabal的Nix风格的本地版本进行开发。要快速入门,可以按照以上操作。

目前,semantic已经在GitHub上获得 8000 个Star,450 个Fork,感兴趣的可以到GitHub上查阅更多详情

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

分享题目:我在GitHub上又找到一个堪称神器的命令行工具
网页路径:http://www.shufengxianlan.com/qtweb/news2/491952.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联