代码等静态分析(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/
 

猜你喜欢

转载自blog.csdn.net/ShareUs/article/details/84479907