新语言的静态代码分析.从哪儿开始?

tin*_*nny 8 static-analysis coding-style checkstyle

我刚刚获得了一项新任务,看起来它将成为一项有趣的挑战.

客户希望为其内部(即将开源)编程语言开发代码样式检查工具,该编程语言在JVM上运行.语言语法非常像Java.

顾客基本上希望我生产像checkstyle这样的东西.

所以我的问题是,你将如何处理这个问题?鉴于一个清晰的平台,您会向客户提出哪些建议?

我想我有3个选择

  1. 从头开始写点东西.我宁愿不这样做,因为似乎这种代码分析工具问题已经解决了很多次,必须有一个更"框架"或"平台"的方法.

  2. 分叉现有的代码样式检查工具并修改解析以适应这种新语言等

  3. 扩展或插入现有的静态代码分析工具.(也许为Yasca写一个插件?)

Chr*_*ber 4

此类工具基本上必须至少为该语言的一个子集实现编译器前端。最简单的起点通常是调整现有的编译器前端,因此您绝对应该从查看客户的编译器开始。如果幸运的话,它将在前端和后端之间实现清晰的分离,并且能够按原样使用它并使用 AST 或前端生成的任何 IR 来进行额外的分析。