3

我想知道是否有任何方法可以使 OCaml 编译器报告有关未使用函数的警告?我用谷歌搜索,但没有太多关于这个功能的话题。

特别是,在下面的程序中,声明了两个函数“foo”和“bar”,但“_”函数中没有使用“bar”。所以我认为 OCaml 编译器应该将“bar”报告为未使用的函数。

let foo x y = x + y

let bar x y z = x + y + z         (* should be reported unused *)

let _ =
  let x = foo 1 2 in
  x
4

2 回答 2

4

您需要定义一个(可能是空的).mli接口文件,说明该模块导出的内容。否则,您只是定义一个bar功能供其他模块使用。

(当然,请确保您在编译时带有警告)

于 2015-06-17T08:56:47.397 回答
3

您可以查看https://github.com/alainfrisch/dead_code_analyzer,这是一个“全局”死代码检测器。它从 .cmi 文件中收集导出值集,并从 .cmt 文件中收集外部引用集,从而允许检测从未使用过的导出值。(还有一些逻辑可以分析可选参数并报告哪些参数永远不会或总是通过。)

于 2015-06-17T21:42:41.957 回答