SHErrLoc:静态整体错误定位器

SHErrLoc是一种新的、通用的方法,用于定位以下程序员错误通过静态程序分析检测,如ML类型推断、信息流分析和数据流分析。

SHErrLoc工具分析约束中的约束系统对于一大类静态程序来说,具有足够表达能力的语言分析,包括由格拉斯哥哈斯克尔编译器(GHC)(具有类型类、GADT和类型家族)。分析了可满足和不可满足约束确定最可能的错误原因。基于贝叶斯理由,评估不同错误解释的可能性通过两种一般的启发:

例如轻松OCaml++工具生成OCaml程序中约束语言格式的约束。SHErrLoc公司工具然后分析这些与应用程序无关的约束,以找到可能的程序员错误,如概览图所示。请尝试我们的OCaml演示.

诊断Haskell类型需要较少的编译器修改错误,因为现有的编译器(如GHC)已经生成类型检查约束。然后是一个轻量级约束转换器将这些约束提供给通用SHErrLoc工具,以便更好地定位程序员错误。请尝试我们的的演示哈斯克尔.

OCaml中非常不同的程序分析和类型推断的评估Haskell以及Jif中的信息流分析提出这种通用方法可以显著识别错误位置比现有工具更准确。

下载

SHErrLoc工具获取描述程序分析的约束文件,并诊断最可能是静态程序分析检测到错误的原因。如PLDI’15论文所述,SHErrLoc的最新版本可用SHErrLoc GitHub存储库.

SHErrLoc GitHub存储库

我们的POPL’14论文中使用的版本打包在这里:

EasyOCaml++,对轻松OCaml,生成描述OCaml类型推断的约束。

相关出版物

项目成员

支持

SHErrLoc的开发得到了该办公室的两项拨款的支持海军研究部,N00014-09-1-0652和N00014-13-1-0089,由MURI拨款FA9550-12-1-0400,由国家科学基金会资助(CCF-09644909),以及由空军研究所管理的拨款实验室。