You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmh11 400b4eba99
Implement AtomicExpr translation (#1434)
4 years ago
..
clang Patch missing 'limits' in facebook-clang-plugins #1407 (#1409) 4 years ago
clang-ocaml [siof] detect constexpr for all procedures 4 years ago
libtooling Implement AtomicExpr translation (#1434) 4 years ago
scripts [FCP] linting facebook-clang-plugin files [4/N] 4 years ago
.clang-format [FCP] copy facebook-clang-plugins files [2/N] 4 years ago
CODE_OF_CONDUCT.md [FCP] copy facebook-clang-plugins files [2/N] 4 years ago
CONTRIBUTING.md [FCP] copy facebook-clang-plugins files [2/N] 4 years ago
LICENSE [FCP] copy facebook-clang-plugins files [2/N] 4 years ago
LLVM-LICENSE [FCP] copy facebook-clang-plugins files [2/N] 4 years ago
Makefile [FCP] linting facebook-clang-plugin files [4/N] 4 years ago
Makefile.common [FCP] linting facebook-clang-plugin files [4/N] 4 years ago
Makefile.config Fix of building Infer for Objective C (#1345) 4 years ago
Makefile.rules [FCP] linting facebook-clang-plugin files [4/N] 4 years ago
README.md [FCP] copy facebook-clang-plugins files [2/N] 4 years ago

README.md

Facebook Clang Plugins

This repository aims to share some useful clang plugins developed at Facebook. They are mostly used by infer.

It contains frontend plugins to the clang compiler to process the syntax of source files directly to accomplish more general tasks; specifically, we have developed a clang-to-ocaml bridge to make code analyses easier.

Structure of the repository

  • libtooling : frontend plugins (currently a clang-to-json AST exporter),

  • clang-ocaml : OCaml libraries to process the JSON output of frontend plugins,

Quick start

The current version of the plugins requires recent version of the clang compiler, re-compiled from source. Clang source which is used by this project can be found in clang/src/

General instructions to compile clang can be found here: http://clang.llvm.org/get_started.html

To compile and use the required version of clang, please run ./clang/setup.sh. Using this script should make the variable CLANG_PREFIX unnecessary to compile the plugin.

Caveat:

  • Because of the nature of C++, clang and the plugins need to be compiled with the exact same C++ libraries.
  • Also, the default stripping command of clang in release mode breaks plugins.

Once the target compiler is installed, make test should run the unit tests.

OCaml users may also run:

make -C clang-ocaml test  #requires proper ocaml libraries, see included clang-ocaml/README

Additional configuration options are available in Makefile.config.

Licence

The plugins are MIT-licensed.