HLint是Haskell代码的命令行静态分析工具,甚至可以建议适当的重构版本的代码.任何人都知道类似的命令行工具linting F#代码?
pad*_*pad 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#linter .看来我的分析并不太远:).
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |