首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于F#代码的类HLint工具?

用于F#代码的类HLint工具?
EN

Stack Overflow用户
提问于 2013-11-01 04:33:50
回答 1查看 913关注 0票数 8

HLint是Haskell代码的命令行静态分析工具,它甚至建议代码的适当重构版本。有人知道类似的命令行工具用于F#代码的链接吗?

EN

回答 1

Stack Overflow用户

发布于 2013-11-02 05:45:52

简短回答:

不,还没有这样的工具。

长答案:

那么,让我们讨论如何构建它。

我做了一些可能有用的背景研究。

参考文献

在函数式语言中有一些衣领工具,它们可以作为灵感的来源。然而,他们倾向于走向不同的方向。

HLint是一种高级工具,其重构能力令人惊叹。重构建议在F#中是比较棘手的,因为(1) F#代码可能会产生副作用,所以等式推理是不健全的(2)在进行无点转换时,价值限制可以消除一些好的建议。如果我们接受假阳性,这可能会变得容易一些。

在Scala的世界中,有疣残留Scala风格。前者侧重于Scala中常见的函数编程错误。后者侧重于人为错误和不一致(例如命名、惯例等)。我想Wart Remover与F#更相关,因为它是一种功能优先的编程语言。但是,样式检查工具在多个开发人员的大代码基础上很有用。

F#最相关的lint工具可能是OCaml的样式检查器吉祥物。它有一个大的、可扩展的规则集。这些规则中有许多是适用于F#的,只是做了较小的调整。

资源(及其缺乏)

我们拥有的:

  • F#编译器在GitHub上。相关组件- F#编译器服务有一个NuGet包,因此引导很容易。F#编译器源代码是一个很好的资源,因为F#编译器的警告是非常好的和信息丰富的。
  • 最近有一些使用F#编译器的工作,例如语言绑定、重构、代码格式化等,因此我们有经验可供借鉴。
  • 我们还有其他的工具可供学习。

我们没有的是:

  • 缺少关于F#中推荐的样式和实践的良好文档。设计准则是有用的,但它还不够完整。
  • 制造棉绒工具既费时又困难.即使使用简单的、单一用途的工具,如扇托马斯;以正确的方式处理F#的AST也需要很长时间。

总之,如果我们定义了一个正确的范围,那么为F#创建一个简单而有用的工具是可以实现的。

更新

F#有一个正在积极开发的链接器,可在https://github.com/duckmatt/FSharpLint上使用.我的分析似乎离得不远:)。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19720845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档