在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

GitHub趨勢榜榜首:超級命令行工具Semantic,比較解析源代碼

DPVg_AI_era ? 來源:YXQ ? 2019-06-03 14:15 ? 次閱讀

作為開發者,天天都要與源代碼打交道,面對不同版本,不同語言的代碼進行比較、分析,理順開發流程往往是開發者的日常。近日,一款名為Semantic的源代碼分析比較工具一舉登上了GitHub趨勢榜榜首,一起來看看!

作為開發者,你是否對不同源代碼段之間的解析和比較困惑不已呢?今天的GitHub趨勢熱榜上排名第一的帖子介紹了一款多語言支持的“超級命令行工具”Semantic,或許可以解決這個令人頭疼的問題。

Semantic是一個Haskell庫,也是一個用于分析和比較源代碼的命令行工具。

本文將從應用功能、語言支持、開發、技術和架構、許可等五個方面介紹Semantic這款工具。

用途及功能:源代碼解析、比較、圖應用

解析(Parse)

Usage: semantic parse ([--sexpression] | [--json] | [--json-graph] | [--symbols] | [--dot] | [--show] | [--quiet]) [FILES.。.] Generate parse trees for path(s)Available options: --sexpression Output s-expression parse trees (default) --json Output JSON parse trees --json-graph Output JSON adjacency list --symbols Output JSON symbol list --dot Output DOT graph parse trees --show Output using the Show instance (debug only, format subject to change without notice) --quiet Don‘t produce output, but show timing stats

比較(Diff)

Usage: semantic diff ([--sexpression] | [--json] | [--json-graph] | [--toc] | [--dot] | [--show]) [FILE_A] [FILE_B] Compute changes between pathsAvailable options: --sexpression Output s-expression diff tree (default) --json Output JSON diff trees --json-graph Output JSON diff trees --toc Output JSON table of contents diff summary --dot Output the diff as a DOT graph --show Output using the Show instance (debug only, format subject to change without notice)

圖(Graph)

Usage: semantic graph ([--imports] | [--calls]) [--packages] ([--dot] | [--json] | [--show]) ([--root DIR] [--exclude-dir DIR] DIR:LANGUAGE | FILE | --language ARG (FILES.。. | --stdin)) Compute a graph for a directory or from a top-level entry point moduleAvailable options: --imports Compute an import graph (default) --calls Compute a call graph --packages Include a vertex for the package, with edges from it to each module --dot Output in DOT graph format (default) --json Output JSON graph --show Output using the Show instance (debug only, format subject to change without notice) --root DIR Root directory of project. Optional, defaults to entry file/directory. --exclude-dir DIR Exclude a directory (e.g. vendor) --language ARG The language for the analysis. --stdin Read a list of newline-separated paths to analyze from stdin.

多語言支持:Python、Go,Java均可使用

開發環境及版本要求

我們使用cabal的Nix風格的本地版本進行開發。要快速入門,可以按照下圖中的步驟:

git clone git@github.com:github/semantic.gitcd semanticgit submodule sync --recursive && git submodule update --init --recursive --forcecabal new-updatecabal new-buildcabal new-testcabal new-run semantic -- --help

Semantic最低要求GHC 8.6.4。我們建議使用ghcup沙箱GHC版本。我們使用的版本基于StackageLTS版。目前的LTS版本是13.13。如果您愿意,也可以使用堆棧版。

技術和架構特征

從架構上看,Semantic具備以下特點:

可以讀取blob。

可以為樹形保護程序的blob生成解析樹(用于編程工具的增量解析系統)。

將這些樹分配為語法的通用表示。

執行分析,計算差異,或僅返回解析樹。

以多種支持格式呈現輸出。

Semantic利用了許多有趣的算法和技術:

Myers算法(SES)如論文An O(ND)差分算法及其變化所述

RWS-Diff:在分層數據中靈活高效的變化檢測中描述的RWS。

可以單獨打開Union和數據類型。

簡要定義解釋器(Abstracting Definitional Interpreters)的實現。可擴展為基于語法術語的單點表示。

關于授權許可

Semantic基于MIT許可。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 源代碼
    +關注

    關注

    96

    文章

    2952

    瀏覽量

    68028
  • GitHub
    +關注

    關注

    3

    文章

    481

    瀏覽量

    17510

原文標題:GitHub趨勢榜第一:超級命令行工具Semantic,比較解析源代碼

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    在STM32實現命令行

    工作中的開發環境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機也要使用命令行工具,百度了一些命令行
    發表于 12-09 11:32 ?3000次閱讀

    caxa命令行中的應用

    caxa命令行中的應用 命令行對于大多用戶來說往往只是輸入數據的作用,但是其中的奧妙還有很多,下面就給大家
    發表于 10-18 18:18 ?2405次閱讀

    監控jvm常用的5個命令行工具

    常用的幾個命令行工具有jps、jstat、jinfo、jmap、jstack等。這幾個工具可以安裝openjdk-devel-debug包。
    的頭像 發表于 02-06 14:47 ?6104次閱讀
    監控jvm常用的5個<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    Xilinx軟件命令行工具:XSCT開發和調試

    了解如何使用XSCT,Xilinx軟件命令行工具進行開發和調試。 該視頻演示了XSCT如何充當Xilinx SDK的命令行控制臺。
    的頭像 發表于 11-21 06:02 ?1.5w次閱讀

    Xilinx軟件命令行工具進行開發和調試

    了解如何使用XSCT,Xilinx軟件命令行工具進行開發和調試。 該視頻演示了XSCT如何充當Xilinx SDK的命令行控制臺。
    的頭像 發表于 11-22 06:53 ?7095次閱讀

    GitHub五萬星登頂 程序員命令行最全技巧寶典!

    最近兩天,「The Art of Command Line(命令行的藝術)」這個開源項目雄踞了 GitHub TOP ,直接以 51,727 Star 登上榜首
    的頭像 發表于 06-06 14:02 ?2607次閱讀

    Git常見的誤區和命令行工具等綜述

    Git常見的誤區和命令行工具等綜述
    發表于 08-31 09:51 ?0次下載

    自己動手實現命令行解析

    一、介紹嵌入式里面經常會自己做命令行,這里分享一個命令解析代碼實現二、代碼實現mycmd.c
    發表于 12-22 18:51 ?13次下載
    自己動手實現<b class='flag-5'>命令行</b><b class='flag-5'>解析</b>器

    如何從命令行獲取和解析參數

    這是一篇技術干貨快文,能夠快速閱讀完。文章內容是關于如何從命令行獲取和解析參數,包括SystemVerilog本身支持的系統函數和UVM提供的函數封裝,并給出示例代碼和仿真結果。
    的頭像 發表于 05-30 14:05 ?3563次閱讀

    Shell命令行解釋器簡介

    Shell 是一個命令行解釋器,Shell 為用戶提供了與設備進行命令行交互的方式,用戶通過串口、以太網、無線等方式將命令傳輸給具有 Shell 功能的設備,設備會解析
    的頭像 發表于 08-19 17:20 ?3516次閱讀

    Golang基于flag庫實現一個命令行工具

    Golang 標準庫中的 flag 庫提供了解析命令行選項的能力,我們可以基于此來開發命令行工具
    的頭像 發表于 10-28 09:26 ?1523次閱讀

    新的開源命令行工具west

    電子發燒友網站提供《新的開源命令行工具west.zip》資料免費下載
    發表于 11-11 09:25 ?0次下載
    新的開源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    用于解析和操作URL的命令行工具

    curl 作者 Daniel 宣布推出新的開源項目:trurl,這是一款用于解析和操作 URL 的命令行工具,主要是面向 shell 腳本作者提供。Daniel 稱項目名字中的 'tr' 代表 transla
    的頭像 發表于 04-11 10:02 ?1354次閱讀

    PetaLinux工具文檔:命令行參考指南

    電子發燒友網站提供《PetaLinux工具文檔:命令行參考指南.pdf》資料免費下載
    發表于 09-15 14:52 ?0次下載
    PetaLinux<b class='flag-5'>工具</b>文檔:<b class='flag-5'>命令行</b>參考指南

    pycharm命令行終端運行代碼

    Python是一種非常流行的編程語言,許多開發者使用它來編寫各種應用程序和腳本。為了方便開發者編寫和測試代碼,PyCharm是一種集成開發環境(IDE),它提供了許多功能和工具,其中包括命令行終端
    的頭像 發表于 11-22 11:20 ?5867次閱讀
    主站蜘蛛池模板: 午夜看片福利 | 久久久久99精品成人片三人毛片 | 一级特黄aa毛片免费观看 | 午夜综合 | 日韩a级毛片免费观看 | 人人射人人草 | 69xxx欧美| 日本不卡视频在线播放 | 国产农村妇女毛片精品久久 | 欧美黄色精品 | 亚洲一区日本 | 极品美女啪啪 | 免费播放欧美毛片欧美aaaaa | 人人爱干 | 人人草人人干 | 欧美激情片网站 | 日本视频一区二区三区 | 国产裸体美女视频全黄 | 欧美日韩视频综合一区无弹窗 | 午夜网站免费版在线观看 | 亚洲精品二区中文字幕 | 网站国产 | 伊人网站在线观看 | 丁香视频在线观看播放 | 欧美激情二区三区 | 精品女同| 天堂在线免费 | 三级黄色片在线播放 | 午夜福利123 | 婷婷开心六月久久综合丁香 | 欧美日韩一区二区三区视频 | 深夜一级毛片 | 日本成人小视频 | 国产亚洲欧美日本一二三本道 | 成人区精品一区二区毛片不卡 | 天天爽天天狼久久久综合 | 亚洲午夜精品久久久久久人妖 | 午夜视频免费在线观看 | 人人操天天射 | 四虎永久地址4hu紧急入口 | 人人爽人人爱 |