1. 程式人生 > >程式碼等靜態分析(Clang/LLVM,Hades)

程式碼等靜態分析(Clang/LLVM,Hades)

> Clang/LLVM
 針對 C/Objective-C 主流的靜態分析開源專案包括:Static Analyzer、Infer、OCLint 等。
 對於 C/Objective-C 而言,主流編譯器是 Clang/LLVM(Low Level Virtual Machine)的,它是一個開源的編譯器架構,並被成功應用到多個應用領域。android llvm-o混淆。Clang(發音為/klæŋ/,不是C浪)是 LLVM的一個編譯器前端,它目前支援 C, C++, Objective-C 等程式語言。Clang 會對源程式進行詞法分析和語義分析,將分析結果轉換為 AST。現有方案中不少 Lint 工具便是基於 Clang 的,Clang 包含了以下特點:
 1.編譯速度快:Clang 的編譯速度遠快於 GCC。
 2.佔用記憶體小:Clang 生成的 AST 所佔用的記憶體是 GCC 的五分之一左右。
 3.模組化設計:Clang 採用基於庫的模組化設計,易於 IDE 整合及其他用途的重用。

> HadesLint(Hades)

  針對Objective-C和Java的靜態分析工具也有不少,常見的有:OCLint、FindBugs、CheckStyle等等,但這些工具定製門檻較高。為了降低靜態檢查接入成本,我們自主研發了一個適應MCI需求的靜態分析框架——Hades。
  Hades的核心思想是對原始碼生成的AST(Abstract Syntax Tree)進行結構化資料的語義表達,在此基礎上我們就可以建立一系列靜態分析工具和服務。

  HadesLint 是基於 Hades 框架製作的靜態分析工具。作為平臺標準的 Lint 工具,目前在持續整合有了廣泛應用。HadesLint 開發語言是 TypeScript。它具備完善的型別系統,結合 VSCode 的智慧補全和完善的 Debug 能力,使得 HadesLint 具備良好的開發體驗。
  大眾點評靜態分析框架 Hades,取名源於古希臘神話中的冥王。Hades 框架支援語義分析能力,我們希望這種能力不僅僅能夠去實現一個傳統的 Lint 工具,而且能成為創造更多能力的基礎,可以幫助我們更輕鬆地審視程式碼,理解把控大型專案。
  嘗試 OCaml+ATD 來構建 Lint 專案- https://atd.readthedocs.io/en/latest/