These are the modules used by infer that are not packaged into sub-libraries.
The entry point of this library is the module: InferModules.
The modules are split into several directories in the source tree of infer.
Code + utilities for the Infer.AI abstract interpretation framework. Start at InferModules.AbstractInterpreter.
The backend is responsible for the analysis of a project starting from an intermediate representation stored in the results directory, typically infer-out.
The entry point for the analysis is the module InferModules.InferAnalyze.
The module InferModules.InferPrint is used to export the analysis results.
Transfer functions, abstract domains, and checker configuration.
This is the frontend for the clang compiler. The main entry point is InferModules.ClangWrapper.
ASTExporter clang plugin to the relevant commands and run it.SIL via InferModules.CFrontend.
The OCaml data type is defined in atd format. The clang_ast_t.atd file is generated from the comments in the ASTExporter.h file.
For more information, refer to the relevant documentation in facebook-clang-plugins:
.atd fileexample.cpp) source file with construct that needs to be exported. The smaller the better.libtooling/ASTExporter.h. For more information, refer to the ATD_GUIDELINES.facebook-clang-plugins. Running make from top level of Infer repository will do that. Sometimes there may be compilation errors due to .atd file changes - they need to be fixed.Tips & Tricks:
.bdump file: infer -g -- clang -c example.cpp && sh example.cpp.ast.sh. Then open example.cpp.ast.bdump.clang -c example.cpp -Xclang -ast-dump. It doesn't include all the information that Infer sees, but it's pretty concisebdump is failing (it happens on huge sources sometimes), there is a way to view it in "Yojson" format. To do that, replace all occurrences of BiniouASTExporter with YojsonASTExporter in the .ast.sh script.
Eradicate @Nullable Checker
Eradicate is a type checker for @Nullable annotations for Java. The goal is to eradicate null pointer exceptions. See the online docs at http://fbinfer.com/docs/eradicate.html.
The main entry point is module InferModules.Eradicate.
Java Frontend; this is the frontend for Java compilers.
The main entry point is InferModules.JMain.
You'll find the infer binary in infer.ml. It is not part of this library.