给出以下源文件:
(* /tmp/src/A.mli *)
val f : B.t -> B.t
(* /tmp/src/A.ml *)
let f (x : B.t) = x
(* /tmp/src/B.mli *)
type t
(* /tmp/src/B.ml *)
type t = int
我尝试运行mascot代码检查程序,但它无法绑定.mli
文件引用的模块,尽管-I
标志。它解决了.ml
文件的绑定问题。
$ mascot.native -config mascot.cfg -I /tmp/src /tmp/src/{A,B}.{ml,mli} -html /tmp/out
的 File "/tmp/src/A.mli", line 2, characters 8-11:
的 Error: Unbound module B
loading configuration files...
configuring checks...
analyzing dependencies...
running checks...
reporting to "/tmp/out" with output "html"...
它可以很好地解析来自.ml
文件的绑定。
$ mascot.native -config mascot.cfg -I /tmp/src /tmp/src/{A,B}.ml -html /tmp/out
loading configuration files...
configuring checks...
analyzing dependencies...
running checks...
reporting to "/tmp/out" with output "html"...
我在manual找不到任何解释文件分析的内容,但我相信Mascot应该在接口文件上运行,因为examples页面包括文档问题的例子:
当我只提供源文件时,似乎没有运行(** Module descriptoion. *) type t (* This one is not actually documented (bare comment instead of ocamldoc one). *)
和接口检查。
答案 0 :(得分:1)
我遇到了同样的问题,并且只能通过编译当前目录中具有B
的接口文件和来使Mascot找到模块B.cmi
,例如:
cd /tmp/src
ocamlc B.mli
mascot.native -config mascot.cfg {A,B}.{ml,mli} -html /tmp/out.html
似乎没有命令行选项告诉Mascot在哪里查找.mli
/ .cmi
个文件;如问题中所述,-I
标志不起作用。