Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Caml-list] [ANN] pfff_visual, a fancy code visualizer/navigator for OCaml, and more

43 views
Skip to first unread message

Yoann Padioleau

unread,
Sep 24, 2010, 1:58:13 AM9/24/10
to caml users
Hi list,

It is my pleasure to announce pfff_visual, a code visualizer/navigator
for OCaml. Note that this is not a replacement for Emacs or vi, but more a
companion that works with Emacs/Vi.

A demo is available here:
part1: http://www.youtube.com/watch?v=HRZjBGD3osw
part2: http://www.youtube.com/watch?v=993pmNLY_VU

pfff_visual is using pfff, which is mainly an OCaml API to write
static analysis, dynamic analysis, code visualizations, code
navigations, or style-preserving source-to-source transformations such
as refactorings on source code. For now the effort is focused on PHP
but there is preliminary support for Javascript, and C++ code.
There is also preliminary support for OCaml code so that the infrastructure
can be used on the code of pfff itself.

You can get the source of pfff and pfff_visual here:
http://github.com/facebook/pfff

Here is how to install it:
$ git clone g...@github.com:facebook/pfff.git
$ ./configure
$ make depend; make; make opt
$ ./pfff_visual /path/to/project/using/supported/languages

pfff has been tested on MacOS and Linux and is licensed under the LGPL.

Thanks to
- Lex Stein for ocamlbdb
- Olivier Andrieu for ocamlcairo
- Jacques Garrigue for ocamlgtk
- Martin Jambon, Mika Illouz and Gert Stolpmann for lib-json
- Nicolas Canasse for lib-xml
- Jane Street for lib-sexp
- Thomas Gazagnaire for dynType
- Maas-Maarten Zeeman for OUnit.ml
- Thorsten Ohl for xHTML.ml
- Sylvain Conchon, Jean-Christophe Filliātre and Julien Signoles for
ocamlgraph
- Xavier Leroy for ocamlmpi
- Markus Mottl for ocamlpcre
- Iain Proctor for ocamlthrift
- Guillaume Cottenceau for pleac


Enjoy.

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Yoann Padioleau

unread,
Sep 24, 2010, 2:24:07 AM9/24/10
to caml users

ben kuin

unread,
Sep 24, 2010, 8:39:39 AM9/24/10
to Yoann Padioleau, caml...@inria.fr
I might have found a small error in a Makefile in h_visualizations,
where a '-I' is missing

~~~~~~~~~~~~~~~
diff h_visualization/Makefile.orig h_visualization/Makefile
22c22
< INCLUDES= -I $(TOP)/commons $(TOP)/commons/lib-json
---
> INCLUDES= -I $(TOP)/commons -I $(TOP)/commons/lib-json

~~~~~~~~~~~~~~~~~

because something like:

ocamlc -g -dtypes -thread -I ../commons ../commons/lib-json/ -c
figures.mli

(without repetition of '-I')
won't compile on my machine.

ben kuin

unread,
Sep 24, 2010, 8:42:31 AM9/24/10
to Yoann Padioleau, caml...@inria.fr
another error:

~~~~~~~~~~~~~~~~~~~~
lang_php/analyze/checker'
make[1]: Leaving directory `/code/lab/pfff/aryx-pfff-22ece30'
make pfff pfff_tags sgrep spatch ppp
make[1]: Entering directory `/code/lab/pfff/aryx-pfff-22ece30'
make[1]: *** No rule to make target `lang_ml/analyze/lib.cma', needed
by `pfff'. Stop.
make[1]: Leaving directory `/code/lab/pfff/aryx-pfff-22ece30'
make: *** [all] Error 2
~~~~~~~~~~~~~~~~~~~~~

On Fri, Sep 24, 2010 at 8:23 AM, Yoann Padioleau <pad...@wanadoo.fr> wrote:

> - Sylvain Conchon, Jean-Christophe Filliâtre and Julien Signoles for


>   ocamlgraph
> - Xavier Leroy for ocamlmpi
> - Markus Mottl for ocamlpcre
> - Iain Proctor for ocamlthrift
> - Guillaume Cottenceau for pleac
>
>
> Enjoy.
>

Yoann Padioleau

unread,
Sep 24, 2010, 10:09:13 AM9/24/10
to ben kuin, caml...@inria.fr

On Sep 24, 2010, at 5:42 AM, ben kuin wrote:

> another error:
>
> ~~~~~~~~~~~~~~~~~~~~
> lang_php/analyze/checker'
> make[1]: Leaving directory `/code/lab/pfff/aryx-pfff-22ece30'
> make pfff pfff_tags sgrep spatch ppp
> make[1]: Entering directory `/code/lab/pfff/aryx-pfff-22ece30'

This is because you didn't download the latest version.
You can try: git clone git://github.com/facebook/pfff.git

You can also download pfff tarballs from this page:
http://github.com/facebook/pfff/archives/master

>> - Sylvain Conchon, Jean-Christophe Filliātre and Julien Signoles for

ben kuin

unread,
Sep 24, 2010, 10:30:41 AM9/24/10
to Yoann Padioleau, caml...@inria.fr
> You can try: git clone git://github.com/facebook/pfff.git

ok did that, but new error:

/configure && make depend
make

~~~~~
make[3]: Entering directory `/code/lab/pfff/latest/pfff/commons'
ocamlc -g -dtypes -thread -I ocamlextra -I ocollection -I lib-sexp -I
lib-json -I lib-xml -I ../external/ocamlgraph -c graph.ml
File "graph.ml", line 1, characters 0-1:
Error: ../external/ocamlgraph/ocamlgraph.cmi
is not a compiled interface
make[3]: *** [graph.cmo] Error 2
~~~~~~

Yoann Padioleau

unread,
Sep 24, 2010, 11:09:08 AM9/24/10
to caml users

On Sep 23, 2010, at 11:23 PM, Yoann Padioleau wrote:

> Hi list,
>
> It is my pleasure to announce pfff_visual, a code visualizer/navigator
> for OCaml. Note that this is not a replacement for Emacs or vi, but more a
> companion that works with Emacs/Vi.
>
> A demo is available here:
> part1: http://www.youtube.com/watch?v=HRZjBGD3osw
> part2: http://www.youtube.com/watch?v=993pmNLY_VU

For the people who refuse to vomit while watching a video,
here are a few screenshots of the visualizer applied on the linux
kernel source, the ocaml source, and the source of pfff itself:

http://padator.org/software/pfff/pfff_linux_source.jpg
http://padator.org/software/pfff/pfff_ocaml_source.jpg
http://padator.org/software/pfff/pfff_ocaml_source2.jpg
http://padator.org/software/pfff/pfff_ocaml_source3.jpg
http://padator.org/software/pfff/pfff_pfff_source.jpg

The screenshots can not show the integration with Emacs though. You'll have
to suffer and watch the videos for that.

If you don't have git, you can still download pfff by following this link:
http://github.com/facebook/pfff/archives/master

Andrei Formiga

unread,
Sep 25, 2010, 5:16:11 PM9/25/10
to Yoann Padioleau, caml users
Hi,

I like the idea of code visualization and would like to try
pfff_visual. Alas, I'm having trouble building it. The first thing I
noticed is that the repository bundles versions of all its
dependencies, apparently. I have most of these installed already
through GODI, and I didn't look at the makefiles, but does the code
try to use the system versions of the libraries, if present? Right now
the error I'm seeing seems to be related to ocaml-bdb, though I have a
version installed (and working) through GODI:

make[2]: Entering directory `/home/andrei/tmp/pfff/external/ocamlbdb'
ocamlc -c bdb.ml
File "bdb.ml", line 255, characters 19-30:
Error: Unbound constructor DB_NOTFOUND
make[2]: *** [bdb.cmo] Error 2
make[2]: Leaving directory `/home/andrei/tmp/pfff/external/ocamlbdb'
make[1]: *** [rec] Error 2
make[1]: Leaving directory `/home/andrei/tmp/pfff'


make: *** [all] Error 2

So maybe this would work if the build could use the version I already
have installed.


--
[]s, Andrei Formiga

Yoann Padioleau

unread,
Sep 25, 2010, 7:18:38 PM9/25/10
to Andrei Formiga, caml users

On Sep 25, 2010, at 2:15 PM, Andrei Formiga wrote:

>
> Hi,

Hi,

>
> I like the idea of code visualization and would like to try
> pfff_visual. Alas, I'm having trouble building it. The first thing I
> noticed is that the repository bundles versions of all its
> dependencies, apparently. I have most of these installed already
> through GODI, and I didn't look at the makefiles, but does the code
> try to use the system versions of the libraries, if present?

Nope. It is using only library code from external/.

> Right now
> the error I'm seeing seems to be related to ocaml-bdb,

I've updated the git repository to remove the dependency to ocamlbdb (it is used
now only when processing PHP code, which I guess you don't care). Can you pull
again or download the latest version (git clone git://github.com/facebook/pfff.git )
and use ./configure -nobdb ?

> though I have a
> version installed (and working) through GODI:
>
> make[2]: Entering directory `/home/andrei/tmp/pfff/external/ocamlbdb'
> ocamlc -c bdb.ml
> File "bdb.ml", line 255, characters 19-30:
> Error: Unbound constructor DB_NOTFOUND

Could you send me bdb.ml and /usr/include/db.h ?
Which OS are you using ?

0 new messages