次のソース ファイルがあるとします。
(* /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). *)
ソースファイルのみを提供すると、インターフェースチェックが実行されないようです。