Skip to content
This repository has been archived by the owner on Jun 4, 2019. It is now read-only.
pad edited this page May 27, 2014 · 129 revisions

Welcome to the pfff Wiki!

Introduction

pfff is a set of tools and APIs to perform some 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 also good support for C, C++, Java, HTML, JavaScript, CSS, and preliminary support for Erlang, Python, C#, Lisp, Scheme, Haskell, OPA, Sql, and even TeX. There is also very good support for OCaml and noweb (literate programming) so that pfff can be used on the code of pfff itself.

Here are the pfff tools:

News

Presentation of codemap and codegraph at the OCaml workshop 2013. Slides available at http://ocaml.org/meetings/ocaml/2013/program.html Notes http://www.syslog.cl.cam.ac.uk/2013/09/24/liveblogging-ocaml-workshop-2013/

Look in Changes.

Install

Click on the "Download Source" button in the top right of this window. If you have git installed on your machine you can also do:

$ git clone https://github.com/facebook/pfff.git

Then follow the instructions in install.txt which essentially tell you to do:

$ ./configure
$ make depend
$ make; make opt

Screenshots

Here is a screenshot of Codemap when applied on the early source of the Linux kernel.

Videos

part1: http://www.youtube.com/watch?v=HRZjBGD3osw

part2: http://www.youtube.com/watch?v=993pmNLY_VU

Documentation

Contribute

Look in Internals.

Bugs/Feedback

Email to pad at fb dot com or click on "Issues" in the github project bar above.

More Screenshots

See also Examples and Examples2.

Linux kernel

OCaml Compiler

Pfff itself

Related work

pfff is a continuation of the work I've done on coccinelle, an advanced refactoring tool for C http://coccinelle.lip6.fr/ I co-designed with Julia Lawall.

Related research work:

Related old-school Unix tools:

  • ctags
  • cscope

Related tools:

Related multi-languages parsing framework:

In the press

Clone this wiki locally