Hi Arnaud, You first need to build the graph code database. But for that you need to have the .cmt files generated for your project. You can generate them just like you generate the .annot by modifying your makefile, e.g. by adding -bin_annot to OCAMLCFLAGS for instance. Once the .cmt are here, do ~/pfff/codegraph -lang cmt -build /path/to/your/project then you can use ~/pfff/scheck -lang cmt /path/to/your/project > On Jan 19, 2015, at 1:58 AM, Arnaud Spiwack wrote: > > Dear Yoann, > > Could you give the relevant commands to be used in an ocaml project (in particular, it seems that `scheck -lang ml` fails with "unsuported language") ? > > On 15 January 2015 at 19:16, yoann padioleau > wrote: > Indeed the codegraph tool, part of Pfff, does some > global analysis of an ocaml project using the .Mt (generated by ocamlc -bin_annot) and generates > an index of a codebase (a graph_code.marshall file). > Not all features of Ocaml are supported though (e.g. functors). > > Once the graph_code.marshall file has been generated, > you can use check, also part of pfff, to detect dead code > or other errors. > > > https://github.com/facebook/pfff/wiki/CodeGraph > https://github.com/facebook/pfff/wiki/Scheck > > > On Jan 8, 2015, at 7:50 AM, Ashish Agarwal > wrote: > >> Maybe Pfff: >> https://github.com/facebook/pfff >> >> On Thu, Jan 8, 2015 at 10:33 AM, Goswin von Brederlow > wrote: >> On Thu, Jan 08, 2015 at 02:48:12PM +0100, Stéphane Glondu wrote: >> > Le 08/01/2015 14:31, Sébastien Hinderer a écrit : >> > > Are there tools / techniques one could use to make it easier to >> > > discover / explore the source code of a big OCaml project? >> > > >> > > In particular, are there any tools available to help finding dead code >> > > or coe that may need some refactoring? >> > > >> > > Many thanks for any suggestion. >> > >> > One suggestion: http://home.gna.org/oug/index.fr.html >> > >> > >> > Cheers, >> >> That looks cool. But that still needs a lot of manual filtering to get >> results, e.g. to find an unused type or function specified in the >> input signature for a functor. >> >> It could be nice for ocaml to have warnings for this directly. E.g.: >> >> module type M = ssig type t type s val x : int end >> moduel F(M : M) = struct type t = M.t end >> >> Warning: unused value x in signature M for functor F >> Warning: unused type s in signature M for functor F >> >> Similar for types / values defined but not used in .ml files that do >> not appear in the .mli file. >> >> MfG >> Goswin >> >> -- >> Caml-list mailing list. Subscription management and archives: >> https://sympa.inria.fr/sympa/arc/caml-list >> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >> Bug reports: http://caml.inria.fr/bin/caml-bugs >> > >