當前位置:
首頁 > 新聞 > GitHub趨勢榜第一:超級命令行工具Semantic,比較解析源代碼

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

新智元報道

來源:GitHub

編輯:大明

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

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

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

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

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

解析(Parse)

比較(Diff)

圖(Graph)

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

開發環境及版本要求

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

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許可。

參考鏈接:

https://github.com/github/semantic

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

千萬美金助力AI發展,CMU與乂學教育松鼠AI聯合實驗室簽約啟動
快遞小哥再見!機器「快遞員」將用自動駕駛貨車送貨

TAG:新智元 |