HLint是Haskell代码的命令行静态分析工具,甚至可以建议适当的重构版本的代码。任何人都知道类似命令行工具的linting F#代码?
答案 0 :(得分:12)
简答:
不,还没有这样的工具。
答案很长:
让我们讨论如何构建它。
我做了一些可能有用的背景研究。
功能语言中有一些lint工具,可用作灵感来源。但是,他们倾向于走向不同的方向。
HLint是一种高级工具,其重构功能令人惊叹。由于(1)F#代码可能具有副作用,因此等式推理不健全(2)在进行无点转换时,价值限制可能会消除一些好的建议,因此重构建议在F#中更为棘手。如果我们接受误报,可能会变得容易一些。
在Scala的世界中,您有Wart Remover和Scala Style。前者侧重于Scala中常见的函数式编程错误。后者的重点是人为错误和不一致(例如命名,惯例等)。我猜Wart Remover与F#更相关,因为它是一种功能优先的编程语言。但是,样式检查器工具在具有多个开发人员的大型代码库中非常有用。
F#最相关的lint工具可能是OCaml的样式检查器,Mascot。它有一个庞大且可扩展的规则集。其中许多规则适用于F#而且适应性很小。
我们拥有什么:
我们没有:
总而言之,如果我们定义一个合适的范围,那么为F#创建一个简单但有用的工具是可以实现的。
https://github.com/duckmatt/FSharpLint有一个积极开发的F#用品。我的分析似乎并不太远:)。