精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    2942

    瀏覽量

    66440
  • GitHub
    +關注

    關注

    3

    文章

    461

    瀏覽量

    16229

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

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

收藏 人收藏

    評論

    相關推薦

    在STM32實現命令行

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

    caxa命令行中的應用

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

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

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

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

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

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

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

    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 ?2606次閱讀

    Shell命令行解釋器簡介

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

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

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

    新的開源命令行工具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 ?1049次閱讀

    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 ?3261次閱讀

    HarmonyOS開發:【基于命令行(安裝庫和工具集)】

    使用命令行進行設備開發時,可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具
    的頭像 發表于 04-25 21:03 ?276次閱讀
    HarmonyOS開發:【基于<b class='flag-5'>命令行</b>(安裝庫和<b class='flag-5'>工具</b>集)】