1

给定以下源文件:

(* /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

我尝试运行吉祥物代码检查器,但它无法绑定从.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"...

我在手册中找不到任何解释要分析的文件的内容,但我相信 Mascot 应该在接口文件上运行,因为示例页面包含文档问题的示例:

(** Module descriptoion. *)

type t
(* This one is not actually documented
   (bare comment instead of ocamldoc one). *)

当我只提供源文件时,似乎没有运行接口检查。

4

1 回答 1

1

我遇到了同样的问题,B只能通过编译它的接口文件B.cmi当前目录中使 Mascot 找到模块,例如:

cd /tmp/src
ocamlc B.mli
mascot.native -config mascot.cfg {A,B}.{ml,mli} -html /tmp/out.html

似乎没有命令行选项可以告诉 Mascot 在哪里寻找.mli/.cmi文件;如问题中所述,该-I标志不适用于此。

于 2012-10-26T11:27:29.290 回答