HLint是Haskell代码的命令行静态分析工具,它甚至建议代码的适当重构版本。有人知道类似的命令行工具用于F#代码的链接吗?
发布于 2013-11-02 05:45:52
简短回答:
不,还没有这样的工具。
长答案:
那么,让我们讨论如何构建它。
我做了一些可能有用的背景研究。
参考文献
在函数式语言中有一些衣领工具,它们可以作为灵感的来源。然而,他们倾向于走向不同的方向。
HLint是一种高级工具,其重构能力令人惊叹。重构建议在F#中是比较棘手的,因为(1) F#代码可能会产生副作用,所以等式推理是不健全的(2)在进行无点转换时,价值限制可以消除一些好的建议。如果我们接受假阳性,这可能会变得容易一些。
在Scala的世界中,有疣残留和Scala风格。前者侧重于Scala中常见的函数编程错误。后者侧重于人为错误和不一致(例如命名、惯例等)。我想Wart Remover与F#更相关,因为它是一种功能优先的编程语言。但是,样式检查工具在多个开发人员的大代码基础上很有用。
F#最相关的lint工具可能是OCaml的样式检查器吉祥物。它有一个大的、可扩展的规则集。这些规则中有许多是适用于F#的,只是做了较小的调整。
资源(及其缺乏)
我们拥有的:
我们没有的是:
总之,如果我们定义了一个正确的范围,那么为F#创建一个简单而有用的工具是可以实现的。
更新
F#有一个正在积极开发的链接器,可在https://github.com/duckmatt/FSharpLint上使用.我的分析似乎离得不远:)。
https://stackoverflow.com/questions/19720845
复制相似问题