From 14aee52eee8e746668d8be7676ca8e915d0b7fd0 Mon Sep 17 00:00:00 2001 From: BSKY Date: Wed, 4 Mar 2020 04:52:16 -0800 Subject: [PATCH] [infer][PR] Migrate Website to Docusaurus 2 Summary: Context: https://github.com/facebook/infer/issues/1171 Pull Request resolved: https://github.com/facebook/infer/pull/1190 Reviewed By: jberdine Differential Revision: D19330662 Pulled By: jvillard fbshipit-source-id: d5b3d920c --- .github/workflows/deploy.yml | 50 + .gitignore | 2 + website/.prettierignore | 2 + website/README.md | 36 + ...22-Infer-on-open-source-android-apps.md.md | 23 + .../2016-03-17-collaboration-with-spotify.md | 60 + .../2016-04-07-mobileatscale-london-talk.md | 8 + .../2016-06-23-first-opensourceversary.md | 44 + website/blog/2016-08-30-curryon-rome-talk.md | 11 + website/blog/2016-11-28-atscale16.md | 10 + .../blog/2017-10-20-ocamlformat-released.md | 26 + website/docs/00-getting-started.md | 47 + website/docs/00-hello-world.md | 350 + website/docs/01-adding-models.md | 283 + website/docs/01-advanced-features.md | 145 + website/docs/01-analyzing-apps-or-projects.md | 161 + website/docs/01-checkers.md | 26 + website/docs/01-eradicate.md | 82 + website/docs/01-experimental-checkers.md | 38 + website/docs/01-infer-workflow.md | 192 + website/docs/01-linters.md | 698 ++ website/docs/01-man-pages.md | 15 + website/docs/01-racerd.md | 494 + website/docs/01-steps-for-ci.md | 64 + website/docs/02-about-infer.md | 27 + website/docs/02-limitations.md | 83 + .../02-separation-logic-and-biabduction.md | 271 + website/docs/03-checker-bug-types.md | 1017 ++ website/docs/03-eradicate-warnings.md | 274 + website/docs/03-linter-bug-types.md | 193 + website/docs/04-absint-framework.md | 297 + website/docs/04-adding-checkers.md | 210 + website/docs/04-internal-API.md | 12 + website/docs/support.md | 173 + website/docusaurus.config.js | 80 + website/package.json | 33 + website/sidebars.js | 36 + website/src/components/Script.js | 31 + website/src/css/custom.css | 22 + website/src/pages/index.js | 203 + website/src/pages/styles.module.css | 81 + website/static/img/AL/always_holds.jpeg | Bin 0 -> 153839 bytes .../img/AL/always_holds_everywhere.jpeg | Bin 0 -> 153832 bytes website/static/img/AL/holds_eventually.jpeg | Bin 0 -> 61080 bytes .../img/AL/holds_everywhere_eventually.jpeg | Bin 0 -> 156275 bytes .../static/img/AL/holds_everywhere_next.jpeg | Bin 0 -> 155062 bytes website/static/img/AL/holds_in_node.jpeg | Bin 0 -> 59190 bytes website/static/img/AL/holds_next.jpeg | Bin 0 -> 60554 bytes website/static/img/AL/holds_until.jpeg | Bin 0 -> 154580 bytes .../img/AL/in_node_with_transition.jpeg | Bin 0 -> 149174 bytes website/static/img/AL/linters_help.png | Bin 0 -> 86321 bytes website/static/img/SepSplit.jpg | Bin 0 -> 21513 bytes website/static/img/blog/Infer-Spotify.png | Bin 0 -> 11913 bytes website/static/img/favicon.png | Bin 0 -> 1118 bytes website/static/img/logo.png | Bin 0 -> 16582 bytes website/static/img/who/aws.svg | 174 + website/static/img/who/facebook.png | Bin 0 -> 26161 bytes website/static/img/who/freefem.png | Bin 0 -> 19133 bytes website/static/img/who/instagram.png | Bin 0 -> 39579 bytes website/static/img/who/mozilla.png | Bin 0 -> 5791 bytes website/static/img/who/oculus.png | Bin 0 -> 21636 bytes website/static/img/who/spotify.png | Bin 0 -> 43822 bytes website/static/img/who/uber.svg | 39 + website/static/img/who/whatsapp.svg | 59 + website/static/man/infer-analyze.1.html | 712 ++ website/static/man/infer-capture.1.html | 529 + website/static/man/infer-compile.1.html | 206 + website/static/man/infer-explore.1.html | 253 + website/static/man/infer-report.1.html | 340 + website/static/man/infer-reportdiff.1.html | 197 + website/static/man/infer-run.1.html | 381 + website/static/man/infer.1.html | 1657 +++ .../0.15.0/InferBase/InferBase/.jbuilder-keep | 0 .../InferBase/InferBase/CommandDoc/index.html | 2 + .../InferBase/CommandLineOption/index.html | 49 + .../InferBase/InferBase/Config/index.html | 7 + .../InferBase/DB/Results_dir/index.html | 2 + .../0.15.0/InferBase/InferBase/DB/index.html | 8 + .../0.15.0/InferBase/InferBase/Die/index.html | 2 + .../InferBase/InferBase/Epilogues/index.html | 3 + .../InferBase/EventLogger/index.html | 2 + .../index.html | 2 + .../InferBase/FileDiff/UnixDiff/index.html | 2 + .../index.html | 2 + .../InferBase/InferBase/FileDiff/index.html | 5 + .../InferBase/InferBase/IssueType/index.html | 5 + .../InferBase/JsonBuilder/index.html | 2 + .../InferBase/InferBase/Language/index.html | 2 + .../InferBase/InferBase/Location/index.html | 2 + .../InferBase/InferBase/Logging/index.html | 3 + .../InferBase/MarkupFormatter/index.html | 2 + .../InferBase/MergeResults/index.html | 3 + .../InferBase/InferBase/Multilinks/index.html | 4 + .../InferBase/InferBase/Process/index.html | 5 + .../InferBase/ProcessPool/index.html | 3 + .../InferBase/ProcessPoolState/index.html | 2 + .../InferBase/ResultsDatabase/index.html | 6 + .../InferBase/InferBase/ResultsDir/index.html | 2 + .../InferBase/InferBase/RunState/index.html | 2 + .../InferBase/Serialization/Key/index.html | 2 + .../InferBase/Serialization/index.html | 3 + .../InferBase/SourceFile/SQLite/index.html | 2 + .../InferBase/InferBase/SourceFile/index.html | 13 + .../MarshalledData/argument-1-D/index.html | 2 + .../SqliteUtils/MarshalledData/index.html | 2 + .../InferBase/SqliteUtils/index.html | 2 + .../SqliteUtils/module-type-Data/index.html | 2 + .../InferBase/InferBase/SymOp/index.html | 6 + .../InferBase/InferBase/Utils/index.html | 15 + .../InferBase/InferBase/Version/index.html | 2 + .../InferBase/InferBase/ZipLib/index.html | 4 + .../0.15.0/InferBase/InferBase/index.html | 2 + .../InferBase__CommandDoc/.jbuilder-keep | 0 .../InferBase__CommandDoc/index.html | 2 + .../.jbuilder-keep | 0 .../InferBase__CommandLineOption/index.html | 49 + .../InferBase__Config/.jbuilder-keep | 0 .../InferBase/InferBase__Config/index.html | 7 + .../InferBase/InferBase__DB/.jbuilder-keep | 0 .../InferBase__DB/Results_dir/index.html | 2 + .../0.15.0/InferBase/InferBase__DB/index.html | 8 + .../InferBase/InferBase__Die/.jbuilder-keep | 0 .../InferBase/InferBase__Die/index.html | 2 + .../InferBase__Epilogues/.jbuilder-keep | 0 .../InferBase/InferBase__Epilogues/index.html | 3 + .../InferBase__EventLogger/.jbuilder-keep | 0 .../InferBase__EventLogger/index.html | 2 + .../InferBase__FileDiff/.jbuilder-keep | 0 .../index.html | 2 + .../InferBase__FileDiff/UnixDiff/index.html | 2 + .../index.html | 2 + .../InferBase/InferBase__FileDiff/index.html | 5 + .../InferBase__IssueType/.jbuilder-keep | 0 .../InferBase/InferBase__IssueType/index.html | 5 + .../InferBase__JsonBuilder/.jbuilder-keep | 0 .../InferBase__JsonBuilder/index.html | 2 + .../InferBase__Language/.jbuilder-keep | 0 .../InferBase/InferBase__Language/index.html | 2 + .../InferBase__Location/.jbuilder-keep | 0 .../InferBase/InferBase__Location/index.html | 2 + .../InferBase__Logging/.jbuilder-keep | 0 .../InferBase/InferBase__Logging/index.html | 3 + .../InferBase__MarkupFormatter/.jbuilder-keep | 0 .../InferBase__MarkupFormatter/index.html | 2 + .../InferBase__MergeResults/.jbuilder-keep | 0 .../InferBase__MergeResults/index.html | 3 + .../InferBase__Multilinks/.jbuilder-keep | 0 .../InferBase__Multilinks/index.html | 4 + .../InferBase__Process/.jbuilder-keep | 0 .../InferBase/InferBase__Process/index.html | 5 + .../InferBase__ProcessPool/.jbuilder-keep | 0 .../InferBase__ProcessPool/index.html | 3 + .../.jbuilder-keep | 0 .../InferBase__ProcessPoolState/index.html | 2 + .../InferBase__ResultsDatabase/.jbuilder-keep | 0 .../InferBase__ResultsDatabase/index.html | 6 + .../InferBase__ResultsDir/.jbuilder-keep | 0 .../InferBase__ResultsDir/index.html | 2 + .../InferBase__RunState/.jbuilder-keep | 0 .../InferBase/InferBase__RunState/index.html | 2 + .../InferBase__Serialization/.jbuilder-keep | 0 .../InferBase__Serialization/Key/index.html | 2 + .../InferBase__Serialization/index.html | 3 + .../InferBase__SourceFile/.jbuilder-keep | 0 .../InferBase__SourceFile/SQLite/index.html | 2 + .../InferBase__SourceFile/index.html | 13 + .../InferBase__SqliteUtils/.jbuilder-keep | 0 .../MarshalledData/argument-1-D/index.html | 2 + .../MarshalledData/index.html | 2 + .../InferBase__SqliteUtils/index.html | 2 + .../module-type-Data/index.html | 2 + .../InferBase/InferBase__SymOp/.jbuilder-keep | 0 .../InferBase/InferBase__SymOp/index.html | 6 + .../InferBase/InferBase__Utils/.jbuilder-keep | 0 .../InferBase/InferBase__Utils/index.html | 15 + .../InferBase__Version/.jbuilder-keep | 0 .../InferBase/InferBase__Version/index.html | 2 + .../InferBase__ZipLib/.jbuilder-keep | 0 .../InferBase/InferBase__ZipLib/index.html | 4 + .../static/odoc/0.15.0/InferBase/index.html | 5 + .../InferGenerated/.jbuilder-keep | 0 .../InferGenerated/Clang_ast_b/index.html | 498 + .../InferGenerated/Clang_ast_j/index.html | 374 + .../InferGenerated/Clang_ast_proj/index.html | 2 + .../InferGenerated/Clang_ast_t/index.html | 2 + .../Clang_ast_types/TypePtr/index.html | 2 + .../InferGenerated/Clang_ast_types/index.html | 2 + .../InferGenerated/Clang_ast_v/index.html | 2 + .../InferGenerated/Clang_ast_visit/index.html | 2 + .../InferGenerated/InferCommand/index.html | 4 + .../Java_method_decl_j/index.html | 8 + .../Java_method_decl_t/index.html | 2 + .../InferGenerated/Jsonbug_j/index.html | 17 + .../InferGenerated/Jsonbug_t/index.html | 2 + .../InferGenerated/Runstate_j/index.html | 14 + .../InferGenerated/Runstate_t/index.html | 2 + .../InferGenerated/Stacktree_j/index.html | 14 + .../InferGenerated/Stacktree_t/index.html | 2 + .../InferGenerated/InferGenerated/index.html | 2 + .../.jbuilder-keep | 0 .../InferGenerated__Clang_ast_b/index.html | 498 + .../.jbuilder-keep | 0 .../InferGenerated__Clang_ast_j/index.html | 374 + .../.jbuilder-keep | 0 .../InferGenerated__Clang_ast_proj/index.html | 2 + .../.jbuilder-keep | 0 .../InferGenerated__Clang_ast_t/index.html | 2 + .../.jbuilder-keep | 0 .../TypePtr/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../InferGenerated__Clang_ast_v/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../InferGenerated__InferCommand/index.html | 4 + .../.jbuilder-keep | 0 .../index.html | 8 + .../.jbuilder-keep | 0 .../index.html | 2 + .../InferGenerated__Jsonbug_j/.jbuilder-keep | 0 .../InferGenerated__Jsonbug_j/index.html | 17 + .../InferGenerated__Jsonbug_t/.jbuilder-keep | 0 .../InferGenerated__Jsonbug_t/index.html | 2 + .../InferGenerated__Runstate_j/.jbuilder-keep | 0 .../InferGenerated__Runstate_j/index.html | 14 + .../InferGenerated__Runstate_t/.jbuilder-keep | 0 .../InferGenerated__Runstate_t/index.html | 2 + .../.jbuilder-keep | 0 .../InferGenerated__Stacktree_j/index.html | 14 + .../.jbuilder-keep | 0 .../InferGenerated__Stacktree_t/index.html | 2 + .../odoc/0.15.0/InferGenerated/index.html | 4 + .../0.15.0/InferIR/InferIR/.jbuilder-keep | 0 .../InferIR/AccessExpression/index.html | 2 + .../InferIR/InferIR/AccessPath/Abs/index.html | 4 + .../InferIR/InferIR/AccessPath/index.html | 12 + .../InferIR/InferIR/Annot/Class/index.html | 2 + .../InferIR/InferIR/Annot/Item/index.html | 2 + .../InferIR/InferIR/Annot/Method/index.html | 2 + .../0.15.0/InferIR/InferIR/Annot/index.html | 2 + .../InferIR/InferIR/Attributes/index.html | 4 + .../InferIR/InferIR/BUILTINS/index.html | 2 + .../InferIR/BUILTINS/module-type-S/index.html | 2 + .../0.15.0/InferIR/InferIR/Binop/index.html | 5 + .../InferIR/InferIR/BuiltinDecl/index.html | 2 + .../InferIR/InferIR/CallFlags/index.html | 2 + .../InferIR/InferIR/CallSite/index.html | 2 + .../InferIR/InferIR/Cfg/SQLite/index.html | 2 + .../0.15.0/InferIR/InferIR/Cfg/index.html | 3 + .../0.15.0/InferIR/InferIR/Const/index.html | 2 + .../InferIR/InferIR/DecompiledExp/index.html | 3 + .../0.15.0/InferIR/InferIR/Errlog/index.html | 5 + .../InferIR/InferIR/Exceptions/index.html | 2 + .../0.15.0/InferIR/InferIR/Exp/index.html | 8 + .../0.15.0/InferIR/InferIR/HilExp/index.html | 4 + .../InferIR/InferIR/HilInstr/index.html | 5 + .../InferIR/Ident/NameGenerator/index.html | 2 + .../0.15.0/InferIR/InferIR/Ident/index.html | 2 + .../0.15.0/InferIR/InferIR/Instrs/index.html | 2 + .../0.15.0/InferIR/InferIR/IntLit/index.html | 3 + .../InferIR/InferIR/Io_infer/Html/index.html | 5 + .../InferIR/InferIR/Io_infer/Xml/index.html | 2 + .../InferIR/InferIR/Io_infer/index.html | 2 + .../InferIR/InferIR/IssueLog/index.html | 5 + .../InferIR/Localise/BucketLevel/index.html | 2 + .../InferIR/InferIR/Localise/Tags/index.html | 2 + .../InferIR/InferIR/Localise/index.html | 2 + .../0.15.0/InferIR/InferIR/Mangled/index.html | 2 + .../InferIR/InferIR/Mleak_buckets/index.html | 2 + .../InferIR/InferIR/Objc_models/index.html | 3 + .../InferIR/InferIR/PredSymb/index.html | 9 + .../InferIR/ProcAttributes/SQLite/index.html | 2 + .../InferIR/InferIR/ProcAttributes/index.html | 2 + .../InferIR/InferIR/Procdesc/Node/index.html | 3 + .../InferIR/InferIR/Procdesc/index.html | 10 + .../Call/FuncArg/index.html | 2 + .../ProcnameDispatcher/Call/index.html | 4 + .../ProcnameDispatcher/ProcName/index.html | 3 + .../ProcnameDispatcher/TypName/index.html | 3 + .../InferIR/ProcnameDispatcher/index.html | 2 + .../module-type-Common/index.html | 2 + .../module-type-NameCommon/index.html | 3 + .../0.15.0/InferIR/InferIR/Pvar/index.html | 11 + .../InferIR/QualifiedCppName/Match/index.html | 19 + .../InferIR/QualifiedCppName/index.html | 6 + .../InferIR/InferIR/Sil/Predicates/index.html | 5 + .../0.15.0/InferIR/InferIR/Sil/index.html | 70 + .../InferIR/InferIR/SourceFiles/index.html | 2 + .../0.15.0/InferIR/InferIR/Subtype/index.html | 8 + .../InferIR/InferIR/Tenv/SQLite/index.html | 2 + .../0.15.0/InferIR/InferIR/Tenv/index.html | 3 + .../InferIR/Typ/Fieldname/Clang/index.html | 2 + .../InferIR/Typ/Fieldname/Java/index.html | 3 + .../InferIR/InferIR/Typ/Fieldname/index.html | 2 + .../InferIR/InferIR/Typ/Name/C/index.html | 2 + .../InferIR/InferIR/Typ/Name/Cpp/index.html | 2 + .../InferIR/Typ/Name/Java/Split/index.html | 3 + .../InferIR/InferIR/Typ/Name/Java/index.html | 3 + .../InferIR/InferIR/Typ/Name/Objc/index.html | 2 + .../InferIR/InferIR/Typ/Name/index.html | 2 + .../InferIR/Typ/Procname/Java/index.html | 5 + .../InferIR/Typ/Procname/ObjC_Cpp/index.html | 2 + .../InferIR/Typ/Procname/SQLite/index.html | 2 + .../Typ/Procname/SQLiteList/index.html | 2 + .../InferIR/InferIR/Typ/Procname/index.html | 10 + .../InferIR/InferIR/Typ/Struct/index.html | 3 + .../0.15.0/InferIR/InferIR/Typ/index.html | 5 + .../0.15.0/InferIR/InferIR/Unop/index.html | 2 + .../0.15.0/InferIR/InferIR/Var/index.html | 3 + .../odoc/0.15.0/InferIR/InferIR/index.html | 2 + .../InferIR__AccessExpression/.jbuilder-keep | 0 .../InferIR__AccessExpression/index.html | 2 + .../InferIR__AccessPath/.jbuilder-keep | 0 .../InferIR__AccessPath/Abs/index.html | 4 + .../InferIR/InferIR__AccessPath/index.html | 12 + .../InferIR/InferIR__Annot/.jbuilder-keep | 0 .../InferIR/InferIR__Annot/Class/index.html | 2 + .../InferIR/InferIR__Annot/Item/index.html | 2 + .../InferIR/InferIR__Annot/Method/index.html | 2 + .../0.15.0/InferIR/InferIR__Annot/index.html | 2 + .../InferIR__Attributes/.jbuilder-keep | 0 .../InferIR/InferIR__Attributes/index.html | 4 + .../InferIR/InferIR__BUILTINS/.jbuilder-keep | 0 .../InferIR/InferIR__BUILTINS/index.html | 2 + .../module-type-S/index.html | 2 + .../InferIR/InferIR__Binop/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Binop/index.html | 5 + .../InferIR__BuiltinDecl/.jbuilder-keep | 0 .../InferIR/InferIR__BuiltinDecl/index.html | 2 + .../InferIR/InferIR__CallFlags/.jbuilder-keep | 0 .../InferIR/InferIR__CallFlags/index.html | 2 + .../InferIR/InferIR__CallSite/.jbuilder-keep | 0 .../InferIR/InferIR__CallSite/index.html | 2 + .../InferIR/InferIR__Cfg/.jbuilder-keep | 0 .../InferIR/InferIR__Cfg/SQLite/index.html | 2 + .../0.15.0/InferIR/InferIR__Cfg/index.html | 3 + .../InferIR/InferIR__Const/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Const/index.html | 2 + .../InferIR__DecompiledExp/.jbuilder-keep | 0 .../InferIR/InferIR__DecompiledExp/index.html | 3 + .../InferIR/InferIR__Errlog/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Errlog/index.html | 5 + .../InferIR__Exceptions/.jbuilder-keep | 0 .../InferIR/InferIR__Exceptions/index.html | 2 + .../InferIR/InferIR__Exp/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Exp/index.html | 8 + .../InferIR/InferIR__HilExp/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__HilExp/index.html | 4 + .../InferIR/InferIR__HilInstr/.jbuilder-keep | 0 .../InferIR/InferIR__HilInstr/index.html | 5 + .../InferIR/InferIR__Ident/.jbuilder-keep | 0 .../InferIR__Ident/NameGenerator/index.html | 2 + .../0.15.0/InferIR/InferIR__Ident/index.html | 2 + .../InferIR/InferIR__Instrs/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Instrs/index.html | 2 + .../InferIR/InferIR__IntLit/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__IntLit/index.html | 3 + .../InferIR/InferIR__Io_infer/.jbuilder-keep | 0 .../InferIR/InferIR__Io_infer/Html/index.html | 5 + .../InferIR/InferIR__Io_infer/Xml/index.html | 2 + .../InferIR/InferIR__Io_infer/index.html | 2 + .../InferIR/InferIR__IssueLog/.jbuilder-keep | 0 .../InferIR/InferIR__IssueLog/index.html | 5 + .../InferIR/InferIR__Localise/.jbuilder-keep | 0 .../InferIR__Localise/BucketLevel/index.html | 2 + .../InferIR/InferIR__Localise/Tags/index.html | 2 + .../InferIR/InferIR__Localise/index.html | 2 + .../InferIR/InferIR__Mangled/.jbuilder-keep | 0 .../InferIR/InferIR__Mangled/index.html | 2 + .../InferIR__Mleak_buckets/.jbuilder-keep | 0 .../InferIR/InferIR__Mleak_buckets/index.html | 2 + .../InferIR__Objc_models/.jbuilder-keep | 0 .../InferIR/InferIR__Objc_models/index.html | 3 + .../InferIR/InferIR__PredSymb/.jbuilder-keep | 0 .../InferIR/InferIR__PredSymb/index.html | 9 + .../InferIR__ProcAttributes/.jbuilder-keep | 0 .../InferIR__ProcAttributes/SQLite/index.html | 2 + .../InferIR__ProcAttributes/index.html | 2 + .../InferIR/InferIR__Procdesc/.jbuilder-keep | 0 .../InferIR/InferIR__Procdesc/Node/index.html | 3 + .../InferIR/InferIR__Procdesc/index.html | 10 + .../.jbuilder-keep | 0 .../Call/FuncArg/index.html | 2 + .../Call/index.html | 4 + .../ProcName/index.html | 3 + .../TypName/index.html | 3 + .../InferIR__ProcnameDispatcher/index.html | 2 + .../module-type-Common/index.html | 2 + .../module-type-NameCommon/index.html | 3 + .../InferIR/InferIR__Pvar/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Pvar/index.html | 11 + .../InferIR__QualifiedCppName/.jbuilder-keep | 0 .../Match/index.html | 19 + .../InferIR__QualifiedCppName/index.html | 6 + .../InferIR/InferIR__Sil/.jbuilder-keep | 0 .../InferIR__Sil/Predicates/index.html | 5 + .../0.15.0/InferIR/InferIR__Sil/index.html | 70 + .../InferIR__SourceFiles/.jbuilder-keep | 0 .../InferIR/InferIR__SourceFiles/index.html | 2 + .../InferIR/InferIR__Subtype/.jbuilder-keep | 0 .../InferIR/InferIR__Subtype/index.html | 8 + .../InferIR/InferIR__Tenv/.jbuilder-keep | 0 .../InferIR/InferIR__Tenv/SQLite/index.html | 2 + .../0.15.0/InferIR/InferIR__Tenv/index.html | 3 + .../InferIR/InferIR__Typ/.jbuilder-keep | 0 .../InferIR__Typ/Fieldname/Clang/index.html | 2 + .../InferIR__Typ/Fieldname/Java/index.html | 3 + .../InferIR/InferIR__Typ/Fieldname/index.html | 2 + .../InferIR/InferIR__Typ/Name/C/index.html | 2 + .../InferIR/InferIR__Typ/Name/Cpp/index.html | 2 + .../InferIR__Typ/Name/Java/Split/index.html | 3 + .../InferIR/InferIR__Typ/Name/Java/index.html | 3 + .../InferIR/InferIR__Typ/Name/Objc/index.html | 2 + .../InferIR/InferIR__Typ/Name/index.html | 2 + .../InferIR__Typ/Procname/Java/index.html | 5 + .../InferIR__Typ/Procname/ObjC_Cpp/index.html | 2 + .../InferIR__Typ/Procname/SQLite/index.html | 2 + .../Procname/SQLiteList/index.html | 2 + .../InferIR/InferIR__Typ/Procname/index.html | 10 + .../InferIR/InferIR__Typ/Struct/index.html | 3 + .../0.15.0/InferIR/InferIR__Typ/index.html | 5 + .../InferIR/InferIR__Unop/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Unop/index.html | 2 + .../InferIR/InferIR__Var/.jbuilder-keep | 0 .../0.15.0/InferIR/InferIR__Var/index.html | 3 + website/static/odoc/0.15.0/InferIR/index.html | 4 + .../InferStdlib/InferStdlib/.jbuilder-keep | 0 .../InferStdlib/InferStdlib/Escape/index.html | 3 + .../InferStdlib/IContainer/index.html | 2 + .../InferStdlib/InferStdlib/IExn/index.html | 4 + .../InferStdlib/InferStdlib/IList/index.html | 6 + .../InferStdlib/IOption/index.html | 2 + .../InferStdlib/ISequence/index.html | 2 + .../InferStdlib/InferStdlib/IStd/index.html | 8 + .../InferStdlib/IStd/module-type-T/index.html | 2 + .../IStd/module-type-T1/index.html | 2 + .../IStd/module-type-T2/index.html | 2 + .../IStd/module-type-T3/index.html | 2 + .../IStd/module-type-T_bin/index.html | 2 + .../InferStdlib/InferStdlib/IntSet/index.html | 2 + .../InferStdlib/PolyVariantEqual/index.html | 2 + .../InferStdlib/InferStdlib/Pp/index.html | 4 + .../InferStdlib/PrettyPrintable/index.html | 2 + .../module-type-PPMap/index.html | 2 + .../module-type-PPSet/index.html | 2 + .../index.html | 2 + .../InferStdlib/StatisticsToolbox/index.html | 2 + .../0.15.0/InferStdlib/InferStdlib/index.html | 2 + .../InferStdlib__Escape/.jbuilder-keep | 0 .../InferStdlib__Escape/index.html | 3 + .../InferStdlib__IContainer/.jbuilder-keep | 0 .../InferStdlib__IContainer/index.html | 2 + .../InferStdlib__IExn/.jbuilder-keep | 0 .../InferStdlib/InferStdlib__IExn/index.html | 4 + .../InferStdlib__IList/.jbuilder-keep | 0 .../InferStdlib/InferStdlib__IList/index.html | 6 + .../InferStdlib__IOption/.jbuilder-keep | 0 .../InferStdlib__IOption/index.html | 2 + .../InferStdlib__ISequence/.jbuilder-keep | 0 .../InferStdlib__ISequence/index.html | 2 + .../InferStdlib__IStd/.jbuilder-keep | 0 .../InferStdlib/InferStdlib__IStd/index.html | 8 + .../module-type-T/index.html | 2 + .../module-type-T1/index.html | 2 + .../module-type-T2/index.html | 2 + .../module-type-T3/index.html | 2 + .../module-type-T_bin/index.html | 2 + .../InferStdlib__IntSet/.jbuilder-keep | 0 .../InferStdlib__IntSet/index.html | 2 + .../.jbuilder-keep | 0 .../InferStdlib__PolyVariantEqual/index.html | 2 + .../InferStdlib__Pp/.jbuilder-keep | 0 .../InferStdlib/InferStdlib__Pp/index.html | 4 + .../.jbuilder-keep | 0 .../InferStdlib__PrettyPrintable/index.html | 2 + .../module-type-PPMap/index.html | 2 + .../module-type-PPSet/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../InferStdlib__StatisticsToolbox/index.html | 2 + .../static/odoc/0.15.0/InferStdlib/index.html | 5 + website/static/odoc/0.15.0/index.html | 21 + .../0.15.0/infer/InferModules/.jbuilder-keep | 0 .../infer/InferModules/ALVar/index.html | 2 + .../0.15.0/infer/InferModules/Abs/index.html | 4 + .../InferModules/AbsLoc/Allocsite/index.html | 2 + .../infer/InferModules/AbsLoc/Loc/index.html | 2 + .../InferModules/AbsLoc/PowLoc/index.html | 2 + .../infer/InferModules/AbsLoc/index.html | 2 + .../infer/InferModules/Absarray/index.html | 2 + .../AbstractDomain/BooleanAnd/index.html | 2 + .../AbstractDomain/BooleanOr/index.html | 5 + .../BottomLifted/argument-1-Domain/index.html | 2 + .../AbstractDomain/BottomLifted/index.html | 4 + .../argument-1-MaxCount/index.html | 2 + .../AbstractDomain/CountDomain/index.html | 5 + .../FiniteSet/argument-1-Element/index.html | 2 + .../AbstractDomain/FiniteSet/index.html | 5 + .../argument-1-PPSet/index.html | 2 + .../FiniteSetOfPPSet/index.html | 5 + .../InvertedMap/argument-1-Key/index.html | 2 + .../argument-2-ValueDomain/index.html | 2 + .../AbstractDomain/InvertedMap/index.html | 3 + .../InvertedSet/argument-1-Element/index.html | 2 + .../AbstractDomain/InvertedSet/index.html | 2 + .../Map/argument-1-Key/index.html | 2 + .../Map/argument-2-ValueDomain/index.html | 2 + .../AbstractDomain/Map/index.html | 5 + .../MapOfPPMap/argument-1-PPMap/index.html | 2 + .../argument-2-ValueDomain/index.html | 2 + .../AbstractDomain/MapOfPPMap/index.html | 6 + .../Pair/argument-1-Domain1/index.html | 2 + .../Pair/argument-2-Domain2/index.html | 2 + .../AbstractDomain/Pair/index.html | 2 + .../StackDomain/argument-1-Element/index.html | 2 + .../AbstractDomain/StackDomain/index.html | 5 + .../TopLifted/argument-1-Domain/index.html | 2 + .../AbstractDomain/TopLifted/index.html | 2 + .../AbstractDomain/Types/index.html | 2 + .../InferModules/AbstractDomain/index.html | 14 + .../module-type-MaxCount/index.html | 2 + .../AbstractDomain/module-type-S/index.html | 2 + .../module-type-WithBottom/index.html | 4 + .../module-type-WithTop/index.html | 2 + .../Make/argument-1-CFG/Node/index.html | 2 + .../Make/argument-1-CFG/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../AbstractInterpreter/Make/index.html | 5 + .../argument-1-Scheduler/CFG/Node/index.html | 2 + .../argument-1-Scheduler/CFG/index.html | 2 + .../MakeNoCFG/argument-1-Scheduler/index.html | 3 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-2-TransferFunctions/index.html | 2 + .../AbstractInterpreter/MakeNoCFG/index.html | 4 + .../AbstractInterpreter/index.html | 3 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../module-type-S/index.html | 4 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../ExceptionalTestInterpreter/I/index.html | 2 + .../ExceptionalTestInterpreter/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../NormalTestInterpreter/I/index.html | 2 + .../NormalTestInterpreter/index.html | 2 + .../PathCountDomain/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../PathCountTransferFunctions/index.html | 2 + .../AbstractInterpreterTests/index.html | 4 + .../AccessPathDomains/Set/index.html | 12 + .../InferModules/AccessPathDomains/index.html | 6 + .../AccessPathTestUtils/index.html | 2 + .../InferModules/AccessPathTests/index.html | 2 + .../AccessTree/DefaultConfig/index.html | 2 + .../Make/argument-1-TraceDomain/index.html | 4 + .../Make/argument-2-Config/index.html | 2 + .../InferModules/AccessTree/Make/index.html | 15 + .../AccessTree/PathSet/AccessMap/index.html | 2 + .../AccessTree/PathSet/TraceDomain/index.html | 2 + .../PathSet/argument-1-Config/index.html | 2 + .../AccessTree/PathSet/index.html | 13 + .../infer/InferModules/AccessTree/index.html | 2 + .../AccessTree/module-type-Config/index.html | 2 + .../module-type-S/TraceDomain/index.html | 4 + .../AccessTree/module-type-S/index.html | 15 + .../Domain/AccessMap/index.html | 2 + .../Domain/TraceDomain/index.html | 2 + .../AccessTreeTests/Domain/index.html | 2 + .../MakeTree/AccessMap/index.html | 2 + .../MakeTree/TraceDomain/index.html | 2 + .../MakeTree/argument-1-Config/index.html | 2 + .../AccessTreeTests/MakeTree/index.html | 2 + .../MockTraceDomain/index.html | 2 + .../InferModules/AccessTreeTests/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../AddressTaken/Analyzer/index.html | 2 + .../AddressTaken/Domain/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../AddressTaken/TransferFunctions/index.html | 2 + .../InferModules/AddressTaken/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../TestInterpreter/index.html | 2 + .../InferModules/AddressTakenTests/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../Make/I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../Make/I/TransferFunctions/index.html | 2 + .../AnalyzerTester/Make/I/index.html | 2 + .../Make/argument-1-CFG/Node/index.html | 2 + .../Make/argument-1-CFG/index.html | 2 + .../Make/argument-2-T/CFG/Node/index.html | 2 + .../Make/argument-2-T/CFG/index.html | 2 + .../Make/argument-2-T/Domain/index.html | 2 + .../argument-2-T/argument-1-C/Node/index.html | 2 + .../Make/argument-2-T/argument-1-C/index.html | 2 + .../Make/argument-2-T/index.html | 2 + .../AnalyzerTester/Make/index.html | 2 + .../AnalyzerTester/StructuredSil/index.html | 3 + .../InferModules/AnalyzerTester/index.html | 2 + .../InferModules/AndroidFramework/index.html | 2 + .../CallSites/index.html | 2 + .../SinkMap/index.html | 2 + .../AnnotReachabilityDomain/index.html | 2 + .../AnnotatedSignature/index.html | 2 + .../AnnotationReachability/index.html | 2 + .../infer/InferModules/Annotations/index.html | 8 + .../InferModules/ArrayBlk/ArrInfo/index.html | 2 + .../infer/InferModules/ArrayBlk/index.html | 2 + .../InferModules/Ast_expressions/index.html | 4 + .../infer/InferModules/Attribute/index.html | 6 + .../BiabductionSummary/Jprop/index.html | 4 + .../BiabductionSummary/NormSpec/index.html | 2 + .../BiabductionSummary/index.html | 5 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../BoundedCallTree/Analyzer/index.html | 2 + .../BoundedCallTree/Domain/index.html | 2 + .../BoundedCallTree/SpecPayload/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../InferModules/BoundedCallTree/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../TestInterpreter/index.html | 2 + .../BoundedCallTreeTests/index.html | 2 + .../0.15.0/infer/InferModules/Buck/index.html | 6 + .../infer/InferModules/Buckets/index.html | 2 + .../BufferOverrunChecker/Payload/index.html | 2 + .../BufferOverrunChecker/index.html | 2 + .../BufferOverrunDomain/Alias/index.html | 2 + .../BufferOverrunDomain/AliasMap/M/index.html | 2 + .../BufferOverrunDomain/AliasMap/index.html | 2 + .../BufferOverrunDomain/AliasRet/index.html | 2 + .../AliasTarget/index.html | 2 + .../BufferOverrunDomain/Heap/index.html | 2 + .../LatestPrune/index.html | 2 + .../BufferOverrunDomain/Mem/index.html | 2 + .../BufferOverrunDomain/MemReach/index.html | 2 + .../PrunePairs/PrunePair/index.html | 2 + .../BufferOverrunDomain/PrunePairs/index.html | 2 + .../BufferOverrunDomain/Stack/index.html | 2 + .../BufferOverrunDomain/Summary/index.html | 2 + .../BufferOverrunDomain/Val/Itv/index.html | 2 + .../BufferOverrunDomain/Val/index.html | 2 + .../BufferOverrunDomain/index.html | 2 + .../Boost/Split/index.html | 2 + .../BufferOverrunModels/Boost/index.html | 2 + .../BufferOverrunModels/Call/index.html | 2 + .../Folly/Split/index.html | 2 + .../BufferOverrunModels/Folly/index.html | 2 + .../BufferOverrunModels/Split/index.html | 2 + .../BufferOverrunModels/StdArray/index.html | 2 + .../BufferOverrunModels/TypName/index.html | 2 + .../BufferOverrunModels/index.html | 2 + .../AllocSizeCondition/index.html | 2 + .../ArrayAccessCondition/index.html | 2 + .../Condition/index.html | 2 + .../ConditionSet/index.html | 2 + .../ConditionTrace/index.html | 2 + .../ConditionWithTrace/index.html | 2 + .../BufferOverrunProofObligations/index.html | 2 + .../BufferOverrunSemantics/Prune/index.html | 2 + .../BufferOverrunSemantics/index.html | 2 + .../BufferOverrunTrace/BoTrace/index.html | 2 + .../BufferOverrunTrace/Set/index.html | 2 + .../BufferOverrunTrace/index.html | 2 + .../BufferOverrunUtils/Check/index.html | 2 + .../BufferOverrunUtils/Exec/index.html | 2 + .../BufferOverrunUtils/index.html | 2 + .../infer/InferModules/Builtin/index.html | 2 + .../infer/InferModules/BuiltinDefn/index.html | 4 + .../InferModules/CArithmetic_trans/index.html | 4 + .../infer/InferModules/CAst_utils/index.html | 12 + .../infer/InferModules/CContext/index.html | 3 + .../infer/InferModules/CEnum_decl/index.html | 2 + .../infer/InferModules/CField_decl/index.html | 2 + .../infer/InferModules/CFrontend/index.html | 5 + .../CFrontend_checkers/index.html | 2 + .../CFrontend_checkers_main/index.html | 2 + .../InferModules/CFrontend_config/index.html | 5 + .../argument-1-T/index.html | 4 + .../CFrontend_decl_funct/index.html | 2 + .../InferModules/CFrontend_decl/index.html | 2 + .../InferModules/CFrontend_errors/index.html | 2 + .../CFrontend_errorsTests/index.html | 2 + .../InferModules/CGeneral_utils/index.html | 2 + .../infer/InferModules/CIssue/index.html | 2 + .../InferModules/CLintersContext/index.html | 3 + .../infer/InferModules/CLocation/index.html | 2 + .../InferModules/CMethodProperties/index.html | 2 + .../InferModules/CMethodSignature/index.html | 3 + .../InferModules/CMethod_trans/index.html | 6 + .../InferModules/CModule_type/index.html | 2 + .../module-type-CFrontend/index.html | 2 + .../module-type-CTranslation/index.html | 4 + .../infer/InferModules/CPredicates/index.html | 84 + .../infer/InferModules/CTL/Debug/index.html | 2 + .../0.15.0/infer/InferModules/CTL/index.html | 8 + .../InferModules/CTLExceptions/index.html | 2 + .../InferModules/CTLParserHelper/index.html | 2 + .../CTrans_funct/argument-1-F/index.html | 2 + .../CTrans/CTrans_funct/index.html | 4 + .../infer/InferModules/CTrans/index.html | 2 + .../InferModules/CTrans_models/index.html | 2 + .../CTrans_utils/GotoLabel/index.html | 2 + .../CTrans_utils/Loops/index.html | 2 + .../CTrans_utils/Nodes/index.html | 2 + .../CTrans_utils/PriorityNode/index.html | 13 + .../CTrans_utils/Scope/index.html | 2 + .../InferModules/CTrans_utils/Self/index.html | 3 + .../InferModules/CTrans_utils/index.html | 20 + .../infer/InferModules/CType/index.html | 2 + .../CType_decl/CProcname/NoAstDecl/index.html | 2 + .../CType_decl/CProcname/index.html | 6 + .../infer/InferModules/CType_decl/index.html | 3 + .../InferModules/CType_to_sil_type/index.html | 2 + .../infer/InferModules/CVar_decl/index.html | 2 + .../infer/InferModules/Callbacks/index.html | 3 + .../infer/InferModules/Capture/index.html | 2 + .../CaptureCompilationDatabase/index.html | 6 + .../infer/InferModules/Checkers/ST/index.html | 2 + .../infer/InferModules/Checkers/index.html | 2 + .../CiOSVersionNumbers/index.html | 2 + .../CiOSVersionNumbersTests/index.html | 2 + .../infer/InferModules/Clang/index.html | 2 + .../InferModules/ClangCommand/index.html | 7 + .../InferModules/ClangLogging/index.html | 2 + .../ClangPointers/Map/Key/index.html | 2 + .../Provide_bin_io/argument-1-Key/index.html | 2 + .../Map/Provide_bin_io/index.html | 2 + .../Provide_hash/argument-1-Key/index.html | 2 + .../ClangPointers/Map/Provide_hash/index.html | 2 + .../Provide_of_sexp/argument-1-Key/index.html | 2 + .../Map/Provide_of_sexp/index.html | 2 + .../Provide_of_sexp/argument-1-K/index.html | 2 + .../Map/Tree/Provide_of_sexp/index.html | 2 + .../ClangPointers/Map/Tree/index.html | 2 + .../InferModules/ClangPointers/Map/index.html | 2 + .../InferModules/ClangPointers/index.html | 3 + .../infer/InferModules/ClangQuotes/index.html | 2 + .../ClangTaintAnalysis/index.html | 2 + .../infer/InferModules/ClangTests/index.html | 2 + .../ClangTrace/Sanitizer/index.html | 2 + .../ClangTrace/Sink/Kind/index.html | 5 + .../InferModules/ClangTrace/Sink/index.html | 2 + .../ClangTrace/Source/Kind/index.html | 5 + .../InferModules/ClangTrace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../ClangTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../ClangTrace/Sources/Known/index.html | 2 + .../ClangTrace/Sources/Sanitizers/index.html | 2 + .../ClangTrace/Sources/index.html | 2 + .../infer/InferModules/ClangTrace/index.html | 11 + .../InferModules/ClangWrapper/index.html | 2 + .../TypePointerMap/index.html | 2 + .../TypePointerOrd/index.html | 2 + .../InferModules/Clang_ast_extend/index.html | 2 + .../CompilationDatabase/index.html | 5 + .../InferModules/ComponentKit/index.html | 4 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../Control/ControlDepAnalyzer/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../Control/DataDepAnalyzer/index.html | 2 + .../Control/DataDepMap/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctionsControlDeps/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctionsDataDeps/index.html | 2 + .../InferModules/Control/VarSet/index.html | 2 + .../infer/InferModules/Control/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../Cost/AnalyzerNodesBasicCost/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../AnalyzerWCET/TransferFunctions/index.html | 2 + .../InferModules/Cost/AnalyzerWCET/index.html | 2 + .../InferModules/Cost/BoundMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../InstrCFGScheduler/CFG/Node/index.html | 2 + .../Cost/InstrCFGScheduler/CFG/index.html | 2 + .../InstrCFGScheduler/WorkUnit/index.html | 2 + .../Cost/InstrCFGScheduler/index.html | 2 + .../Cost/MinTree/BuiltTreeMap/index.html | 2 + .../Cost/MinTree/SetOfSetsOfNodes/index.html | 2 + .../InferModules/Cost/MinTree/index.html | 2 + .../InferModules/Cost/Payload/index.html | 2 + .../Cost/ReportedOnNodes/index.html | 2 + .../Cost/StructuralConstraints/index.html | 2 + .../index.html | 2 + .../TransferFunctionsWCET/Domain/index.html | 2 + .../Cost/TransferFunctionsWCET/index.html | 2 + .../0.15.0/infer/InferModules/Cost/index.html | 2 + .../NodeInstructionToCostMap/index.html | 2 + .../infer/InferModules/CostDomain/index.html | 2 + .../InferModules/Crashcontext/index.html | 17 + .../infer/InferModules/Ctl_lexer/index.html | 2 + .../infer/InferModules/Ctl_parser/index.html | 2 + .../InferModules/Ctl_parser_types/index.html | 5 + .../Dataflow/MakeDF/argument-1-St/index.html | 2 + .../InferModules/Dataflow/MakeDF/index.html | 3 + .../infer/InferModules/Dataflow/index.html | 2 + .../Dataflow/module-type-DF/index.html | 3 + .../module-type-DFStateType/index.html | 2 + .../0.15.0/infer/InferModules/Diff/index.html | 2 + .../InferModules/Differential/index.html | 2 + .../index.html | 2 + .../FileRenamings/index.html | 2 + .../index.html | 2 + .../DifferentialFilters/index.html | 2 + .../DifferentialFiltersTests/index.html | 2 + .../InferModules/DifferentialTests/index.html | 2 + .../DifferentialTestsUtils/index.html | 2 + .../0.15.0/infer/InferModules/Dom/index.html | 5 + .../infer/InferModules/Dotty/index.html | 2 + .../infer/InferModules/Driver/index.html | 3 + .../infer/InferModules/Eradicate/index.html | 2 + .../module-type-CallBackT/index.html | 2 + .../module-type-ExtensionT/index.html | 2 + .../InferModules/EradicateChecks/index.html | 3 + .../infer/InferModules/Errdesc/index.html | 9 + .../infer/InferModules/Exe_env/index.html | 2 + .../InferModules/FbThreadSafety/index.html | 2 + .../InferModules/FileDiffTests/index.html | 2 + .../infer/InferModules/FormalMap/index.html | 3 + .../FragmentRetainsViewChecker/index.html | 2 + .../IdAccessPathMapDomain/index.html | 4 + .../infer/InferModules/Idenv/index.html | 3 + .../InferModules/ImmutableChecker/index.html | 2 + .../InferModules/InferAnalyze/index.html | 2 + .../infer/InferModules/InferPrint/index.html | 2 + .../infer/InferModules/Inferconfig/index.html | 2 + .../infer/InferModules/Interproc/index.html | 2 + .../InferModules/IssueAuxData/index.html | 2 + .../infer/InferModules/Itv/Boolean/index.html | 2 + .../infer/InferModules/Itv/Bound/index.html | 2 + .../infer/InferModules/Itv/Counter/index.html | 2 + .../infer/InferModules/Itv/ItvPure/index.html | 2 + .../InferModules/Itv/ItvRange/index.html | 2 + .../Itv/NonNegativePolynomial/index.html | 2 + .../infer/InferModules/Itv/Symbol/index.html | 2 + .../0.15.0/infer/InferModules/Itv/index.html | 2 + .../infer/InferModules/JAnnotation/index.html | 2 + .../infer/InferModules/JClasspath/index.html | 3 + .../infer/InferModules/JConfig/index.html | 2 + .../infer/InferModules/JContext/index.html | 6 + .../infer/InferModules/JFrontend/index.html | 2 + .../infer/InferModules/JMain/index.html | 2 + .../infer/InferModules/JTrans/index.html | 3 + .../infer/InferModules/JTransExn/index.html | 2 + .../infer/InferModules/JTransType/index.html | 3 + .../index.html | 2 + .../JavaProfilerSamples/JNI/index.html | 2 + .../JavaProfilerSamples/index.html | 2 + .../JavaProfilerSamplesTest/index.html | 2 + .../InferModules/JavaTaintAnalysis/index.html | 2 + .../JavaTrace/Sanitizer/index.html | 2 + .../JavaTrace/Sink/Kind/index.html | 5 + .../InferModules/JavaTrace/Sink/index.html | 2 + .../JavaTrace/Source/Kind/index.html | 5 + .../InferModules/JavaTrace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../JavaTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../JavaTrace/Sources/Known/index.html | 2 + .../JavaTrace/Sources/Sanitizers/index.html | 2 + .../InferModules/JavaTrace/Sources/index.html | 2 + .../infer/InferModules/JavaTrace/index.html | 11 + .../infer/InferModules/Javac/index.html | 2 + .../infer/InferModules/JoinState/index.html | 2 + .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Litho/Analyzer/Interpreter/index.html | 2 + .../InferModules/Litho/Analyzer/index.html | 2 + .../Litho/GraphQLGetters/index.html | 2 + .../Litho/LithoFramework/index.html | 2 + .../InferModules/Litho/Payload/index.html | 2 + .../Litho/RequiredProps/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Litho/TransferFunctions/index.html | 2 + .../infer/InferModules/Litho/index.html | 2 + .../LithoDomain/CallSet/index.html | 2 + .../LithoDomain/LocalAccessPath/index.html | 2 + .../LithoDomain/MethodCall/index.html | 2 + .../infer/InferModules/LithoDomain/index.html | 3 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../InferModules/Liveness/Analyzer/index.html | 2 + .../Liveness/CFG/Node/IdMap/index.html | 2 + .../Liveness/CFG/Node/IdSet/index.html | 2 + .../InferModules/Liveness/CFG/Node/index.html | 2 + .../InferModules/Liveness/CFG/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../Liveness/CapturedByRefAnalyzer/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../CapturedByRefTransferFunctions/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Liveness/TransferFunctions/index.html | 2 + .../InferModules/Liveness/VarSet/index.html | 2 + .../infer/InferModules/Liveness/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../LivenessTests/TestInterpreter/index.html | 2 + .../InferModules/LivenessTests/index.html | 2 + .../LowerHil/DefaultConfig/index.html | 2 + .../InferModules/LowerHil/Make/CFG/index.html | 2 + .../LowerHil/Make/Domain/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Make/TransferFunctions/CFG/index.html | 2 + .../Make/TransferFunctions/Domain/index.html | 2 + .../Make/TransferFunctions/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../Make/argument-2-HilConfig/index.html | 2 + .../Make/argument-3-CFG/Node/index.html | 2 + .../LowerHil/Make/argument-3-CFG/index.html | 2 + .../InferModules/LowerHil/Make/index.html | 2 + .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Interpreter/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../MakeAbstractInterpreter/index.html | 3 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Interpreter/index.html | 2 + .../argument-1-HilConfig/index.html | 2 + .../argument-2-CFG/Node/index.html | 2 + .../argument-2-CFG/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../index.html | 3 + .../infer/InferModules/LowerHil/index.html | 2 + .../LowerHil/module-type-HilConfig/index.html | 2 + .../infer/InferModules/Match/index.html | 21 + .../infer/InferModules/Maven/index.html | 2 + .../InferModules/MergeCapture/index.html | 2 + .../infer/InferModules/ModelTables/index.html | 2 + .../InferModules/Models/Inference/index.html | 2 + .../infer/InferModules/Models/index.html | 2 + .../infer/InferModules/NodePrinter/index.html | 2 + .../InferModules/NullabilityCheck/index.html | 2 + .../NullabilityPreanalysis/index.html | 2 + .../NullabilitySuggest/index.html | 2 + .../InferModules/ObjcCategory_decl/index.html | 2 + .../ObjcInterface_decl/index.html | 3 + .../InferModules/ObjcMethod_decl/index.html | 2 + .../InferModules/ObjcProperty_decl/index.html | 2 + .../InferModules/ObjcProtocol_decl/index.html | 3 + .../infer/InferModules/Ondemand/index.html | 4 + .../InferModules/OndemandCapture/index.html | 4 + .../infer/InferModules/Ownership/index.html | 2 + .../infer/InferModules/Passthrough/index.html | 2 + .../infer/InferModules/Paths/Path/index.html | 6 + .../InferModules/Paths/PathSet/index.html | 2 + .../infer/InferModules/Paths/index.html | 2 + .../InferModules/PatternMatch/index.html | 7 + .../infer/InferModules/Payloads/index.html | 2 + .../infer/InferModules/PerfStats/index.html | 2 + .../infer/InferModules/Preanal/index.html | 2 + .../Printer/LineReader/index.html | 3 + .../infer/InferModules/Printer/index.html | 3 + .../infer/InferModules/PrintfArgs/index.html | 2 + .../Backward/argument-1-Base/Node/index.html | 2 + .../Backward/argument-1-Base/index.html | 2 + .../InferModules/ProcCfg/Backward/index.html | 2 + .../ProcCfg/DefaultNode/index.html | 2 + .../ProcCfg/Exceptional/index.html | 2 + .../InferModules/ProcCfg/InstrNode/index.html | 2 + .../InferModules/ProcCfg/Normal/index.html | 2 + .../Node/IdMap/index.html | 2 + .../Node/IdSet/index.html | 2 + .../NormalOneInstrPerNode/Node/index.html | 2 + .../ProcCfg/NormalOneInstrPerNode/index.html | 2 + .../argument-1-Base/index.html | 2 + .../ProcCfg/OneInstrPerNode/index.html | 2 + .../infer/InferModules/ProcCfg/index.html | 4 + .../ProcCfg/module-type-Node/index.html | 2 + .../ProcCfg/module-type-S/Node/index.html | 2 + .../ProcCfg/module-type-S/index.html | 2 + .../BackwardCfg/Node/IdMap/index.html | 2 + .../BackwardCfg/Node/IdSet/index.html | 2 + .../ProcCfgTests/BackwardCfg/Node/index.html | 2 + .../ProcCfgTests/BackwardCfg/index.html | 2 + .../BackwardInstrCfg/Node/IdMap/index.html | 2 + .../BackwardInstrCfg/Node/IdSet/index.html | 2 + .../BackwardInstrCfg/Node/index.html | 2 + .../ProcCfgTests/BackwardInstrCfg/index.html | 2 + .../InstrCfg/Node/IdMap/index.html | 2 + .../InstrCfg/Node/IdSet/index.html | 2 + .../ProcCfgTests/InstrCfg/Node/index.html | 2 + .../ProcCfgTests/InstrCfg/index.html | 2 + .../InferModules/ProcCfgTests/index.html | 2 + .../infer/InferModules/ProcData/index.html | 2 + .../infer/InferModules/Procedures/index.html | 2 + .../Prop/CategorizePreconditions/index.html | 2 + .../InferModules/Prop/Metrics/index.html | 2 + .../0.15.0/infer/InferModules/Prop/index.html | 17 + .../infer/InferModules/PropUtil/index.html | 3 + .../infer/InferModules/Propgraph/index.html | 6 + .../infer/InferModules/Propset/index.html | 6 + .../Prover/Subtyping_check/index.html | 3 + .../infer/InferModules/Prover/index.html | 9 + .../infer/InferModules/PythonMain/index.html | 2 + .../QualifiedCppNameTests/index.html | 2 + .../QuandaryConfig/Endpoint/index.html | 2 + .../QuandaryConfig/Sanitizer/index.html | 2 + .../QuandaryConfig/Sink/index.html | 2 + .../QuandaryConfig/Source/index.html | 2 + .../InferModules/QuandaryConfig/index.html | 2 + .../QuandarySummary/AccessTree/index.html | 2 + .../Clang/AccessMap/index.html | 2 + .../Clang/TraceDomain/index.html | 2 + .../QuandarySummary/Clang/index.html | 2 + .../QuandarySummary/Java/AccessMap/index.html | 2 + .../Java/TraceDomain/index.html | 2 + .../QuandarySummary/Java/index.html | 2 + .../InferModules/QuandarySummary/index.html | 2 + .../infer/InferModules/RacerD/index.html | 2 + .../RacerDConfig/Models/index.html | 16 + .../InferModules/RacerDConfig/index.html | 2 + .../RacerDDomain/Access/index.html | 3 + .../RacerDDomain/AccessDomain/index.html | 3 + .../OwnershipPrecondition/index.html | 3 + .../RacerDDomain/AccessSnapshot/index.html | 3 + .../RacerDDomain/Attribute/index.html | 2 + .../AttributeMapDomain/index.html | 2 + .../AttributeSetDomain/index.html | 2 + .../RacerDDomain/Choice/index.html | 2 + .../RacerDDomain/LocksDomain/index.html | 4 + .../OwnershipAbstractValue/index.html | 3 + .../RacerDDomain/OwnershipDomain/index.html | 2 + .../PathDomain/Sanitizer/index.html | 2 + .../PathDomain/Sink/Kind/index.html | 5 + .../RacerDDomain/PathDomain/Sink/index.html | 2 + .../PathDomain/Source/Kind/index.html | 5 + .../RacerDDomain/PathDomain/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../PathDomain/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../PathDomain/Sources/Known/index.html | 2 + .../PathDomain/Sources/Sanitizers/index.html | 2 + .../PathDomain/Sources/index.html | 2 + .../RacerDDomain/PathDomain/index.html | 12 + .../StabilityDomain/AccessMap/index.html | 2 + .../StabilityDomain/BaseMap/index.html | 2 + .../StabilityDomain/TraceDomain/index.html | 2 + .../RacerDDomain/StabilityDomain/index.html | 2 + .../RacerDDomain/ThreadsDomain/index.html | 9 + .../RacerDDomain/TraceElem/index.html | 3 + .../InferModules/RacerDDomain/index.html | 10 + .../infer/InferModules/Rearrange/index.html | 5 + .../InferModules/RegisterCheckers/index.html | 2 + .../infer/InferModules/ReportDiff/index.html | 2 + .../infer/InferModules/Reporting/index.html | 8 + .../ResourceLeakDomain/index.html | 2 + .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Analyzer/Interpreter/index.html | 2 + .../ResourceLeaks/Analyzer/index.html | 2 + .../ResourceLeaks/Payload/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../InferModules/ResourceLeaks/index.html | 2 + .../InferModules/RetainCycles/index.html | 2 + .../InferModules/RetainCyclesType/index.html | 3 + .../InferModules/Sanitizer/Dummy/index.html | 2 + .../infer/InferModules/Sanitizer/index.html | 2 + .../Sanitizer/module-type-S/index.html | 2 + .../ReversePostorder/WorkUnit/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Scheduler/ReversePostorder/index.html | 4 + .../infer/InferModules/Scheduler/index.html | 3 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Scheduler/module-type-Make/index.html | 3 + .../module-type-S/CFG/Node/index.html | 2 + .../Scheduler/module-type-S/CFG/index.html | 2 + .../Scheduler/module-type-S/index.html | 3 + .../SchedulerTests/MockNode/IdMap/index.html | 2 + .../SchedulerTests/MockNode/IdSet/index.html | 2 + .../MockNode/OrderedId/index.html | 2 + .../SchedulerTests/MockNode/index.html | 2 + .../SchedulerTests/MockProcCfg/index.html | 2 + .../S/CFG/Node/IdMap/index.html | 2 + .../S/CFG/Node/IdSet/index.html | 2 + .../SchedulerTests/S/CFG/Node/index.html | 2 + .../SchedulerTests/S/CFG/index.html | 2 + .../SchedulerTests/S/WorkUnit/index.html | 2 + .../InferModules/SchedulerTests/S/index.html | 2 + .../InferModules/SchedulerTests/index.html | 2 + .../Make/argument-1-Spec/index.html | 2 + .../SimpleChecker/Make/index.html | 2 + .../InferModules/SimpleChecker/index.html | 2 + .../SimpleChecker/module-type-S/index.html | 2 + .../SimpleChecker/module-type-Spec/index.html | 2 + .../InferModules/Sink/Make/Kind/index.html | 5 + .../Sink/Make/argument-1-Kind/index.html | 5 + .../infer/InferModules/Sink/Make/index.html | 2 + .../0.15.0/infer/InferModules/Sink/index.html | 2 + .../Sink/module-type-Kind/index.html | 5 + .../Sink/module-type-S/Kind/index.html | 5 + .../Sink/module-type-S/index.html | 2 + .../SinkTrace/Make/Sanitizer/index.html | 2 + .../SinkTrace/Make/Sink/Kind/index.html | 5 + .../SinkTrace/Make/Sink/index.html | 2 + .../SinkTrace/Make/Source/Kind/index.html | 5 + .../SinkTrace/Make/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Make/Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Make/Sources/Footprint/index.html | 2 + .../Make/Sources/FootprintConfig/index.html | 2 + .../SinkTrace/Make/Sources/Known/index.html | 2 + .../Make/Sources/Sanitizers/index.html | 2 + .../SinkTrace/Make/Sources/index.html | 2 + .../Make/argument-1-TraceElem/Kind/index.html | 5 + .../Make/argument-1-TraceElem/index.html | 2 + .../InferModules/SinkTrace/Make/index.html | 12 + .../SinkTrace/MakeSink/Kind/index.html | 5 + .../argument-1-TraceElem/Kind/index.html | 5 + .../MakeSink/argument-1-TraceElem/index.html | 2 + .../SinkTrace/MakeSink/index.html | 2 + .../infer/InferModules/SinkTrace/index.html | 2 + .../module-type-S/Sanitizer/index.html | 2 + .../module-type-S/Sink/Kind/index.html | 5 + .../SinkTrace/module-type-S/Sink/index.html | 2 + .../module-type-S/Source/Kind/index.html | 5 + .../SinkTrace/module-type-S/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../module-type-S/Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../module-type-S/Sources/index.html | 2 + .../SinkTrace/module-type-S/index.html | 12 + .../0.15.0/infer/InferModules/Siof/index.html | 2 + .../SiofDomain/Summary/index.html | 2 + .../SiofDomain/VarNames/index.html | 2 + .../infer/InferModules/SiofDomain/index.html | 2 + .../SiofTrace/Sanitizer/index.html | 2 + .../SiofTrace/Sink/Kind/index.html | 5 + .../InferModules/SiofTrace/Sink/index.html | 2 + .../SiofTrace/Source/Kind/index.html | 5 + .../InferModules/SiofTrace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../SiofTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../SiofTrace/Sources/Known/index.html | 2 + .../SiofTrace/Sources/Sanitizers/index.html | 2 + .../InferModules/SiofTrace/Sources/index.html | 2 + .../infer/InferModules/SiofTrace/index.html | 12 + .../InferModules/Source/Dummy/Kind/index.html | 5 + .../InferModules/Source/Dummy/index.html | 3 + .../InferModules/Source/Make/Kind/index.html | 5 + .../Source/Make/argument-1-Kind/index.html | 6 + .../infer/InferModules/Source/Make/index.html | 3 + .../infer/InferModules/Source/index.html | 2 + .../Source/module-type-Kind/index.html | 6 + .../Source/module-type-S/Kind/index.html | 5 + .../Source/module-type-S/index.html | 3 + .../infer/InferModules/Stacktrace/index.html | 2 + .../InferModules/StacktraceTests/index.html | 2 + .../infer/InferModules/Starvation/index.html | 2 + .../StarvationDomain/Event/index.html | 2 + .../StarvationDomain/EventDomain/index.html | 2 + .../StarvationDomain/Lock/index.html | 3 + .../StarvationDomain/LockState/index.html | 4 + .../StarvationDomain/Order/index.html | 6 + .../StarvationDomain/OrderDomain/index.html | 4 + .../UIThreadDomain/index.html | 4 + .../InferModules/StarvationDomain/index.html | 7 + .../infer/InferModules/State/index.html | 5 + .../InferModules/StatsAggregator/index.html | 3 + .../InferModules/Summary/Stats/index.html | 2 + .../InferModules/Summary/Status/index.html | 2 + .../infer/InferModules/Summary/index.html | 7 + .../Make/argument-1-P/index.html | 2 + .../SummaryPayload/Make/index.html | 2 + .../InferModules/SummaryPayload/index.html | 2 + .../module-type-Payload/index.html | 2 + .../SummaryPayload/module-type-S/index.html | 2 + .../infer/InferModules/SwitchCase/index.html | 2 + .../infer/InferModules/SymExec/index.html | 3 + .../InferModules/SymExecBlocks/index.html | 2 + .../infer/InferModules/Tableaux/index.html | 2 + .../infer/InferModules/Tabulation/index.html | 4 + .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Make/Analyzer/Interpreter/index.html | 2 + .../TaintAnalysis/Make/Analyzer/index.html | 2 + .../TaintAnalysis/Make/HilConfig/index.html | 2 + .../TaintAnalysis/Make/Payload/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Make/TransferFunctions/index.html | 2 + .../AccessTree/AccessMap/index.html | 2 + .../AccessTree/TraceDomain/index.html | 2 + .../AccessTree/index.html | 2 + .../Trace/Sanitizer/index.html | 2 + .../Trace/Sink/Kind/index.html | 5 + .../Trace/Sink/index.html | 2 + .../Trace/Source/Kind/index.html | 5 + .../Trace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Trace/Sources/Footprint/index.html | 2 + .../Trace/Sources/FootprintConfig/index.html | 2 + .../Trace/Sources/Known/index.html | 2 + .../Trace/Sources/Sanitizers/index.html | 2 + .../Trace/Sources/index.html | 2 + .../Trace/index.html | 11 + .../argument-1-TaintSpecification/index.html | 4 + .../TaintAnalysis/Make/index.html | 2 + .../InferModules/TaintAnalysis/index.html | 2 + .../infer/InferModules/TaintSpec/index.html | 3 + .../AccessTree/AccessMap/index.html | 2 + .../AccessTree/TraceDomain/index.html | 2 + .../module-type-S/AccessTree/index.html | 2 + .../module-type-S/Trace/Sanitizer/index.html | 2 + .../module-type-S/Trace/Sink/Kind/index.html | 5 + .../module-type-S/Trace/Sink/index.html | 2 + .../Trace/Source/Kind/index.html | 5 + .../module-type-S/Trace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Trace/Sources/Footprint/index.html | 2 + .../Trace/Sources/FootprintConfig/index.html | 2 + .../Trace/Sources/Known/index.html | 2 + .../Trace/Sources/Sanitizers/index.html | 2 + .../module-type-S/Trace/Sources/index.html | 2 + .../TaintSpec/module-type-S/Trace/index.html | 11 + .../TaintSpec/module-type-S/index.html | 4 + .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Analyzer/Interpreter/index.html | 2 + .../MockTaintAnalysis/Analyzer/index.html | 2 + .../MockTaintAnalysis/HilConfig/index.html | 2 + .../MockTaintAnalysis/Payload/index.html | 2 + .../TaintDomain/AccessMap/index.html | 2 + .../TaintDomain/BaseMap/index.html | 2 + .../TaintDomain/TraceDomain/index.html | 2 + .../MockTaintAnalysis/TaintDomain/index.html | 2 + .../TraceDomain/Sanitizer/index.html | 2 + .../TraceDomain/Sink/Kind/index.html | 2 + .../TraceDomain/Sink/Set/index.html | 2 + .../TraceDomain/Sink/index.html | 2 + .../TraceDomain/Source/Kind/index.html | 2 + .../TraceDomain/Source/Set/index.html | 2 + .../TraceDomain/Source/index.html | 2 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../TraceDomain/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../TraceDomain/Sources/Known/index.html | 2 + .../TraceDomain/Sources/Sanitizers/index.html | 2 + .../TraceDomain/Sources/index.html | 2 + .../MockTaintAnalysis/TraceDomain/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../TaintTests/MockTaintAnalysis/index.html | 2 + .../TaintTests/MockTrace/Sanitizer/index.html | 2 + .../TaintTests/MockTrace/Sink/Kind/index.html | 2 + .../TaintTests/MockTrace/Sink/Set/index.html | 2 + .../TaintTests/MockTrace/Sink/index.html | 2 + .../MockTrace/Source/Kind/index.html | 2 + .../MockTrace/Source/Set/index.html | 2 + .../TaintTests/MockTrace/Source/index.html | 2 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../MockTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../MockTrace/Sources/Known/index.html | 2 + .../MockTrace/Sources/Sanitizers/index.html | 2 + .../TaintTests/MockTrace/Sources/index.html | 2 + .../TaintTests/MockTrace/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TaintTests/TestInterpreter/I/index.html | 2 + .../TaintTests/TestInterpreter/index.html | 2 + .../infer/InferModules/TaintTests/index.html | 2 + .../InferModules/Tasks/Runner/index.html | 2 + .../infer/InferModules/Tasks/index.html | 4 + .../InferModules/TestDeterminator/index.html | 2 + .../infer/InferModules/Timeout/index.html | 2 + .../Trace/Make/Sanitizer/index.html | 2 + .../Trace/Make/Sink/Kind/index.html | 5 + .../InferModules/Trace/Make/Sink/index.html | 2 + .../Trace/Make/Source/Kind/index.html | 5 + .../InferModules/Trace/Make/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Make/Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Trace/Make/Sources/Footprint/index.html | 2 + .../Make/Sources/FootprintConfig/index.html | 2 + .../Trace/Make/Sources/Known/index.html | 2 + .../Trace/Make/Sources/Sanitizers/index.html | 2 + .../Trace/Make/Sources/index.html | 2 + .../Make/argument-1-Spec/Sanitizer/index.html | 2 + .../Make/argument-1-Spec/Sink/Kind/index.html | 5 + .../Make/argument-1-Spec/Sink/index.html | 2 + .../argument-1-Spec/Source/Kind/index.html | 5 + .../Make/argument-1-Spec/Source/index.html | 3 + .../Trace/Make/argument-1-Spec/index.html | 3 + .../infer/InferModules/Trace/Make/index.html | 11 + .../infer/InferModules/Trace/index.html | 2 + .../Trace/module-type-S/Sanitizer/index.html | 2 + .../Trace/module-type-S/Sink/Kind/index.html | 5 + .../Trace/module-type-S/Sink/index.html | 2 + .../module-type-S/Source/Kind/index.html | 5 + .../Trace/module-type-S/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../module-type-S/Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../Trace/module-type-S/Sources/index.html | 2 + .../Trace/module-type-S/index.html | 11 + .../module-type-Spec/Sanitizer/index.html | 2 + .../module-type-Spec/Sink/Kind/index.html | 5 + .../Trace/module-type-Spec/Sink/index.html | 2 + .../module-type-Spec/Source/Kind/index.html | 5 + .../Trace/module-type-Spec/Source/index.html | 3 + .../Trace/module-type-Spec/index.html | 3 + .../infer/InferModules/TraceElem/index.html | 2 + .../TraceElem/module-type-Kind/index.html | 5 + .../TraceElem/module-type-S/Kind/index.html | 5 + .../TraceElem/module-type-S/index.html | 2 + .../TraceTests/MockSink/index.html | 2 + .../TraceTests/MockSource/Kind/index.html | 2 + .../TraceTests/MockSource/Set/index.html | 2 + .../TraceTests/MockSource/index.html | 2 + .../TraceTests/MockTrace/Sanitizer/index.html | 2 + .../TraceTests/MockTrace/Sink/Kind/index.html | 2 + .../TraceTests/MockTrace/Sink/Set/index.html | 2 + .../TraceTests/MockTrace/Sink/index.html | 2 + .../MockTrace/Source/Kind/index.html | 2 + .../MockTrace/Source/Set/index.html | 2 + .../TraceTests/MockTrace/Source/index.html | 2 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../MockTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../MockTrace/Sources/Known/index.html | 2 + .../MockTrace/Sources/Sanitizers/index.html | 2 + .../TraceTests/MockTrace/Sources/index.html | 2 + .../TraceTests/MockTrace/index.html | 2 + .../TraceTests/MockTraceElem/Kind/index.html | 2 + .../TraceTests/MockTraceElem/Set/index.html | 2 + .../TraceTests/MockTraceElem/index.html | 2 + .../infer/InferModules/TraceTests/index.html | 2 + .../InferModules/TransferFunctions/index.html | 3 + .../module-type-HIL/CFG/Node/index.html | 2 + .../module-type-HIL/CFG/index.html | 2 + .../module-type-HIL/Domain/index.html | 2 + .../module-type-HIL/index.html | 2 + .../module-type-MakeHIL/CFG/Node/index.html | 2 + .../module-type-MakeHIL/CFG/index.html | 2 + .../module-type-MakeHIL/Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../module-type-MakeHIL/index.html | 2 + .../module-type-MakeSIL/CFG/Node/index.html | 2 + .../module-type-MakeSIL/CFG/index.html | 2 + .../module-type-MakeSIL/Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../module-type-MakeSIL/index.html | 2 + .../module-type-S/CFG/Node/index.html | 2 + .../module-type-S/CFG/index.html | 2 + .../module-type-S/Domain/index.html | 2 + .../module-type-S/index.html | 2 + .../module-type-SIL/CFG/Node/index.html | 2 + .../module-type-SIL/CFG/index.html | 2 + .../module-type-SIL/Domain/index.html | 2 + .../module-type-SIL/index.html | 2 + .../InferModules/TypeAnnotation/index.html | 2 + .../infer/InferModules/TypeCheck/index.html | 2 + .../InferModules/TypeErr/InstrRef/index.html | 2 + .../InferModules/TypeErr/Strict/index.html | 2 + .../infer/InferModules/TypeErr/index.html | 2 + .../TypeErr/module-type-InstrRefT/index.html | 2 + .../infer/InferModules/TypeOrigin/index.html | 2 + .../infer/InferModules/TypeState/index.html | 2 + .../infer/InferModules/Types_lexer/index.html | 2 + .../InferModules/Types_parser/index.html | 2 + .../Uninit/AliasedVars/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../InferModules/Uninit/Analyzer/index.html | 2 + .../InferModules/Uninit/Payload/index.html | 2 + .../Uninit/RecordDomain/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Uninit/TransferFunctions/index.html | 2 + .../InferModules/Uninit/UninitVars/index.html | 2 + .../infer/InferModules/Uninit/index.html | 2 + .../UninitDomain/Domain/index.html | 2 + .../Record/argument-1-Domain1/index.html | 2 + .../Record/argument-2-Domain2/index.html | 2 + .../Record/argument-3-Domain3/index.html | 2 + .../UninitDomain/Record/index.html | 2 + .../UninitDomain/VarPair/index.html | 2 + .../InferModules/UninitDomain/index.html | 2 + .../odoc/0.15.0/infer/InferModules/index.html | 2 + .../infer/InferModules__ALVar/.jbuilder-keep | 0 .../infer/InferModules__ALVar/index.html | 2 + .../infer/InferModules__Abs/.jbuilder-keep | 0 .../0.15.0/infer/InferModules__Abs/index.html | 4 + .../infer/InferModules__AbsLoc/.jbuilder-keep | 0 .../InferModules__AbsLoc/Allocsite/index.html | 2 + .../infer/InferModules__AbsLoc/Loc/index.html | 2 + .../InferModules__AbsLoc/PowLoc/index.html | 2 + .../infer/InferModules__AbsLoc/index.html | 2 + .../InferModules__Absarray/.jbuilder-keep | 0 .../infer/InferModules__Absarray/index.html | 2 + .../.jbuilder-keep | 0 .../BooleanAnd/index.html | 2 + .../BooleanOr/index.html | 5 + .../BottomLifted/argument-1-Domain/index.html | 2 + .../BottomLifted/index.html | 4 + .../argument-1-MaxCount/index.html | 2 + .../CountDomain/index.html | 5 + .../FiniteSet/argument-1-Element/index.html | 2 + .../FiniteSet/index.html | 5 + .../argument-1-PPSet/index.html | 2 + .../FiniteSetOfPPSet/index.html | 5 + .../InvertedMap/argument-1-Key/index.html | 2 + .../argument-2-ValueDomain/index.html | 2 + .../InvertedMap/index.html | 3 + .../InvertedSet/argument-1-Element/index.html | 2 + .../InvertedSet/index.html | 2 + .../Map/argument-1-Key/index.html | 2 + .../Map/argument-2-ValueDomain/index.html | 2 + .../Map/index.html | 5 + .../MapOfPPMap/argument-1-PPMap/index.html | 2 + .../argument-2-ValueDomain/index.html | 2 + .../MapOfPPMap/index.html | 6 + .../Pair/argument-1-Domain1/index.html | 2 + .../Pair/argument-2-Domain2/index.html | 2 + .../Pair/index.html | 2 + .../StackDomain/argument-1-Element/index.html | 2 + .../StackDomain/index.html | 5 + .../TopLifted/argument-1-Domain/index.html | 2 + .../TopLifted/index.html | 2 + .../Types/index.html | 2 + .../InferModules__AbstractDomain/index.html | 14 + .../module-type-MaxCount/index.html | 2 + .../module-type-S/index.html | 2 + .../module-type-WithBottom/index.html | 4 + .../module-type-WithTop/index.html | 2 + .../.jbuilder-keep | 0 .../Make/argument-1-CFG/Node/index.html | 2 + .../Make/argument-1-CFG/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../Make/index.html | 5 + .../argument-1-Scheduler/CFG/Node/index.html | 2 + .../argument-1-Scheduler/CFG/index.html | 2 + .../MakeNoCFG/argument-1-Scheduler/index.html | 3 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-2-TransferFunctions/index.html | 2 + .../MakeNoCFG/index.html | 4 + .../index.html | 3 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../module-type-S/index.html | 4 + .../.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../ExceptionalTestInterpreter/I/index.html | 2 + .../ExceptionalTestInterpreter/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../NormalTestInterpreter/I/index.html | 2 + .../NormalTestInterpreter/index.html | 2 + .../PathCountDomain/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../PathCountTransferFunctions/index.html | 2 + .../index.html | 4 + .../.jbuilder-keep | 0 .../Set/index.html | 12 + .../index.html | 6 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__AccessPathTests/index.html | 2 + .../InferModules__AccessTree/.jbuilder-keep | 0 .../DefaultConfig/index.html | 2 + .../Make/argument-1-TraceDomain/index.html | 4 + .../Make/argument-2-Config/index.html | 2 + .../InferModules__AccessTree/Make/index.html | 15 + .../PathSet/AccessMap/index.html | 2 + .../PathSet/TraceDomain/index.html | 2 + .../PathSet/argument-1-Config/index.html | 2 + .../PathSet/index.html | 13 + .../infer/InferModules__AccessTree/index.html | 2 + .../module-type-Config/index.html | 2 + .../module-type-S/TraceDomain/index.html | 4 + .../module-type-S/index.html | 15 + .../.jbuilder-keep | 0 .../Domain/AccessMap/index.html | 2 + .../Domain/TraceDomain/index.html | 2 + .../Domain/index.html | 2 + .../MakeTree/AccessMap/index.html | 2 + .../MakeTree/TraceDomain/index.html | 2 + .../MakeTree/argument-1-Config/index.html | 2 + .../MakeTree/index.html | 2 + .../MockTraceDomain/index.html | 2 + .../InferModules__AccessTreeTests/index.html | 2 + .../InferModules__AddressTaken/.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../Analyzer/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../InferModules__AddressTaken/index.html | 2 + .../.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../TestInterpreter/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../Make/I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../Make/I/TransferFunctions/index.html | 2 + .../Make/I/index.html | 2 + .../Make/argument-1-CFG/Node/index.html | 2 + .../Make/argument-1-CFG/index.html | 2 + .../Make/argument-2-T/CFG/Node/index.html | 2 + .../Make/argument-2-T/CFG/index.html | 2 + .../Make/argument-2-T/Domain/index.html | 2 + .../argument-2-T/argument-1-C/Node/index.html | 2 + .../Make/argument-2-T/argument-1-C/index.html | 2 + .../Make/argument-2-T/index.html | 2 + .../Make/index.html | 2 + .../StructuredSil/index.html | 3 + .../InferModules__AnalyzerTester/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__AndroidFramework/index.html | 2 + .../.jbuilder-keep | 0 .../CallSites/index.html | 2 + .../SinkMap/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../InferModules__Annotations/.jbuilder-keep | 0 .../InferModules__Annotations/index.html | 8 + .../InferModules__ArrayBlk/.jbuilder-keep | 0 .../InferModules__ArrayBlk/ArrInfo/index.html | 2 + .../infer/InferModules__ArrayBlk/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__Ast_expressions/index.html | 4 + .../InferModules__Attribute/.jbuilder-keep | 0 .../infer/InferModules__Attribute/index.html | 6 + .../.jbuilder-keep | 0 .../Jprop/index.html | 4 + .../NormSpec/index.html | 2 + .../index.html | 5 + .../.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../Analyzer/index.html | 2 + .../Domain/index.html | 2 + .../SpecPayload/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../InferModules__BoundedCallTree/index.html | 2 + .../.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../TestInterpreter/index.html | 2 + .../index.html | 2 + .../infer/InferModules__Buck/.jbuilder-keep | 0 .../infer/InferModules__Buck/index.html | 6 + .../InferModules__Buckets/.jbuilder-keep | 0 .../infer/InferModules__Buckets/index.html | 2 + .../.jbuilder-keep | 0 .../Payload/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../Alias/index.html | 2 + .../AliasMap/M/index.html | 2 + .../AliasMap/index.html | 2 + .../AliasRet/index.html | 2 + .../AliasTarget/index.html | 2 + .../Heap/index.html | 2 + .../LatestPrune/index.html | 2 + .../Mem/index.html | 2 + .../MemReach/index.html | 2 + .../PrunePairs/PrunePair/index.html | 2 + .../PrunePairs/index.html | 2 + .../Stack/index.html | 2 + .../Summary/index.html | 2 + .../Val/Itv/index.html | 2 + .../Val/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../Boost/Split/index.html | 2 + .../Boost/index.html | 2 + .../Call/index.html | 2 + .../Folly/Split/index.html | 2 + .../Folly/index.html | 2 + .../Split/index.html | 2 + .../StdArray/index.html | 2 + .../TypName/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../AllocSizeCondition/index.html | 2 + .../ArrayAccessCondition/index.html | 2 + .../Condition/index.html | 2 + .../ConditionSet/index.html | 2 + .../ConditionTrace/index.html | 2 + .../ConditionWithTrace/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../Prune/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../BoTrace/index.html | 2 + .../Set/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../Check/index.html | 2 + .../Exec/index.html | 2 + .../index.html | 2 + .../InferModules__Builtin/.jbuilder-keep | 0 .../infer/InferModules__Builtin/index.html | 2 + .../InferModules__BuiltinDefn/.jbuilder-keep | 0 .../InferModules__BuiltinDefn/index.html | 4 + .../.jbuilder-keep | 0 .../index.html | 4 + .../InferModules__CAst_utils/.jbuilder-keep | 0 .../infer/InferModules__CAst_utils/index.html | 12 + .../InferModules__CContext/.jbuilder-keep | 0 .../infer/InferModules__CContext/index.html | 3 + .../InferModules__CEnum_decl/.jbuilder-keep | 0 .../infer/InferModules__CEnum_decl/index.html | 2 + .../InferModules__CField_decl/.jbuilder-keep | 0 .../InferModules__CField_decl/index.html | 2 + .../InferModules__CFrontend/.jbuilder-keep | 0 .../infer/InferModules__CFrontend/index.html | 5 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CFrontend_config/index.html | 5 + .../.jbuilder-keep | 0 .../argument-1-T/index.html | 4 + .../CFrontend_decl_funct/index.html | 2 + .../InferModules__CFrontend_decl/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CFrontend_errors/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CGeneral_utils/index.html | 2 + .../infer/InferModules__CIssue/.jbuilder-keep | 0 .../infer/InferModules__CIssue/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CLintersContext/index.html | 3 + .../InferModules__CLocation/.jbuilder-keep | 0 .../infer/InferModules__CLocation/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CMethodSignature/index.html | 3 + .../.jbuilder-keep | 0 .../InferModules__CMethod_trans/index.html | 6 + .../InferModules__CModule_type/.jbuilder-keep | 0 .../InferModules__CModule_type/index.html | 2 + .../module-type-CFrontend/index.html | 2 + .../module-type-CTranslation/index.html | 4 + .../InferModules__CPredicates/.jbuilder-keep | 0 .../InferModules__CPredicates/index.html | 84 + .../infer/InferModules__CTL/.jbuilder-keep | 0 .../infer/InferModules__CTL/Debug/index.html | 2 + .../0.15.0/infer/InferModules__CTL/index.html | 8 + .../.jbuilder-keep | 0 .../InferModules__CTLExceptions/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CTLParserHelper/index.html | 2 + .../infer/InferModules__CTrans/.jbuilder-keep | 0 .../CTrans_funct/argument-1-F/index.html | 2 + .../CTrans_funct/index.html | 4 + .../infer/InferModules__CTrans/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__CTrans_models/index.html | 2 + .../InferModules__CTrans_utils/.jbuilder-keep | 0 .../GotoLabel/index.html | 2 + .../Loops/index.html | 2 + .../Nodes/index.html | 2 + .../PriorityNode/index.html | 13 + .../Scope/index.html | 2 + .../Self/index.html | 3 + .../InferModules__CTrans_utils/index.html | 20 + .../infer/InferModules__CType/.jbuilder-keep | 0 .../infer/InferModules__CType/index.html | 2 + .../InferModules__CType_decl/.jbuilder-keep | 0 .../CProcname/NoAstDecl/index.html | 2 + .../CProcname/index.html | 6 + .../infer/InferModules__CType_decl/index.html | 3 + .../.jbuilder-keep | 0 .../index.html | 2 + .../InferModules__CVar_decl/.jbuilder-keep | 0 .../infer/InferModules__CVar_decl/index.html | 2 + .../InferModules__Callbacks/.jbuilder-keep | 0 .../infer/InferModules__Callbacks/index.html | 3 + .../InferModules__Capture/.jbuilder-keep | 0 .../infer/InferModules__Capture/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 6 + .../InferModules__Checkers/.jbuilder-keep | 0 .../InferModules__Checkers/ST/index.html | 2 + .../infer/InferModules__Checkers/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../infer/InferModules__Clang/.jbuilder-keep | 0 .../infer/InferModules__Clang/index.html | 2 + .../InferModules__ClangCommand/.jbuilder-keep | 0 .../InferModules__ClangCommand/index.html | 7 + .../InferModules__ClangLogging/.jbuilder-keep | 0 .../InferModules__ClangLogging/index.html | 2 + .../.jbuilder-keep | 0 .../Map/Key/index.html | 2 + .../Provide_bin_io/argument-1-Key/index.html | 2 + .../Map/Provide_bin_io/index.html | 2 + .../Provide_hash/argument-1-Key/index.html | 2 + .../Map/Provide_hash/index.html | 2 + .../Provide_of_sexp/argument-1-Key/index.html | 2 + .../Map/Provide_of_sexp/index.html | 2 + .../Provide_of_sexp/argument-1-K/index.html | 2 + .../Map/Tree/Provide_of_sexp/index.html | 2 + .../Map/Tree/index.html | 2 + .../Map/index.html | 2 + .../InferModules__ClangPointers/index.html | 3 + .../InferModules__ClangQuotes/.jbuilder-keep | 0 .../InferModules__ClangQuotes/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../InferModules__ClangTests/.jbuilder-keep | 0 .../infer/InferModules__ClangTests/index.html | 2 + .../InferModules__ClangTrace/.jbuilder-keep | 0 .../Sanitizer/index.html | 2 + .../Sink/Kind/index.html | 5 + .../InferModules__ClangTrace/Sink/index.html | 2 + .../Source/Kind/index.html | 5 + .../Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../Sources/index.html | 2 + .../infer/InferModules__ClangTrace/index.html | 11 + .../InferModules__ClangWrapper/.jbuilder-keep | 0 .../InferModules__ClangWrapper/index.html | 2 + .../.jbuilder-keep | 0 .../TypePointerMap/index.html | 2 + .../TypePointerOrd/index.html | 2 + .../InferModules__Clang_ast_extend/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 5 + .../InferModules__ComponentKit/.jbuilder-keep | 0 .../InferModules__ComponentKit/index.html | 4 + .../InferModules__Control/.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../ControlDepAnalyzer/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../DataDepAnalyzer/index.html | 2 + .../DataDepMap/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctionsControlDeps/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctionsDataDeps/index.html | 2 + .../InferModules__Control/VarSet/index.html | 2 + .../infer/InferModules__Control/index.html | 2 + .../infer/InferModules__Cost/.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../AnalyzerNodesBasicCost/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../AnalyzerWCET/TransferFunctions/index.html | 2 + .../AnalyzerWCET/index.html | 2 + .../InferModules__Cost/BoundMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../InstrCFGScheduler/CFG/Node/index.html | 2 + .../InstrCFGScheduler/CFG/index.html | 2 + .../InstrCFGScheduler/WorkUnit/index.html | 2 + .../InstrCFGScheduler/index.html | 2 + .../MinTree/BuiltTreeMap/index.html | 2 + .../MinTree/SetOfSetsOfNodes/index.html | 2 + .../InferModules__Cost/MinTree/index.html | 2 + .../InferModules__Cost/Payload/index.html | 2 + .../ReportedOnNodes/index.html | 2 + .../StructuralConstraints/index.html | 2 + .../index.html | 2 + .../TransferFunctionsWCET/Domain/index.html | 2 + .../TransferFunctionsWCET/index.html | 2 + .../infer/InferModules__Cost/index.html | 2 + .../InferModules__CostDomain/.jbuilder-keep | 0 .../NodeInstructionToCostMap/index.html | 2 + .../infer/InferModules__CostDomain/index.html | 2 + .../InferModules__Crashcontext/.jbuilder-keep | 0 .../InferModules__Crashcontext/index.html | 17 + .../InferModules__Ctl_lexer/.jbuilder-keep | 0 .../infer/InferModules__Ctl_lexer/index.html | 2 + .../InferModules__Ctl_parser/.jbuilder-keep | 0 .../infer/InferModules__Ctl_parser/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__Ctl_parser_types/index.html | 5 + .../InferModules__Dataflow/.jbuilder-keep | 0 .../MakeDF/argument-1-St/index.html | 2 + .../InferModules__Dataflow/MakeDF/index.html | 3 + .../infer/InferModules__Dataflow/index.html | 2 + .../module-type-DF/index.html | 3 + .../module-type-DFStateType/index.html | 2 + .../infer/InferModules__Diff/.jbuilder-keep | 0 .../infer/InferModules__Diff/index.html | 2 + .../InferModules__Differential/.jbuilder-keep | 0 .../InferModules__Differential/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../FileRenamings/index.html | 2 + .../index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../infer/InferModules__Dom/.jbuilder-keep | 0 .../0.15.0/infer/InferModules__Dom/index.html | 5 + .../infer/InferModules__Dotty/.jbuilder-keep | 0 .../infer/InferModules__Dotty/index.html | 2 + .../infer/InferModules__Driver/.jbuilder-keep | 0 .../infer/InferModules__Driver/index.html | 3 + .../InferModules__Eradicate/.jbuilder-keep | 0 .../infer/InferModules__Eradicate/index.html | 2 + .../module-type-CallBackT/index.html | 2 + .../module-type-ExtensionT/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__EradicateChecks/index.html | 3 + .../InferModules__Errdesc/.jbuilder-keep | 0 .../infer/InferModules__Errdesc/index.html | 9 + .../InferModules__Exe_env/.jbuilder-keep | 0 .../infer/InferModules__Exe_env/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__FbThreadSafety/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__FileDiffTests/index.html | 2 + .../InferModules__FormalMap/.jbuilder-keep | 0 .../infer/InferModules__FormalMap/index.html | 3 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 4 + .../infer/InferModules__Idenv/.jbuilder-keep | 0 .../infer/InferModules__Idenv/index.html | 3 + .../.jbuilder-keep | 0 .../InferModules__ImmutableChecker/index.html | 2 + .../InferModules__InferAnalyze/.jbuilder-keep | 0 .../InferModules__InferAnalyze/index.html | 2 + .../InferModules__InferPrint/.jbuilder-keep | 0 .../infer/InferModules__InferPrint/index.html | 2 + .../InferModules__Inferconfig/.jbuilder-keep | 0 .../InferModules__Inferconfig/index.html | 2 + .../InferModules__Interproc/.jbuilder-keep | 0 .../infer/InferModules__Interproc/index.html | 2 + .../InferModules__IssueAuxData/.jbuilder-keep | 0 .../InferModules__IssueAuxData/index.html | 2 + .../infer/InferModules__Itv/.jbuilder-keep | 0 .../InferModules__Itv/Boolean/index.html | 2 + .../infer/InferModules__Itv/Bound/index.html | 2 + .../InferModules__Itv/Counter/index.html | 2 + .../InferModules__Itv/ItvPure/index.html | 2 + .../InferModules__Itv/ItvRange/index.html | 2 + .../NonNegativePolynomial/index.html | 2 + .../infer/InferModules__Itv/Symbol/index.html | 2 + .../0.15.0/infer/InferModules__Itv/index.html | 2 + .../InferModules__JAnnotation/.jbuilder-keep | 0 .../InferModules__JAnnotation/index.html | 2 + .../InferModules__JClasspath/.jbuilder-keep | 0 .../infer/InferModules__JClasspath/index.html | 3 + .../InferModules__JConfig/.jbuilder-keep | 0 .../infer/InferModules__JConfig/index.html | 2 + .../InferModules__JContext/.jbuilder-keep | 0 .../infer/InferModules__JContext/index.html | 6 + .../InferModules__JFrontend/.jbuilder-keep | 0 .../infer/InferModules__JFrontend/index.html | 2 + .../infer/InferModules__JMain/.jbuilder-keep | 0 .../infer/InferModules__JMain/index.html | 2 + .../infer/InferModules__JTrans/.jbuilder-keep | 0 .../infer/InferModules__JTrans/index.html | 3 + .../InferModules__JTransExn/.jbuilder-keep | 0 .../infer/InferModules__JTransExn/index.html | 2 + .../InferModules__JTransType/.jbuilder-keep | 0 .../infer/InferModules__JTransType/index.html | 3 + .../.jbuilder-keep | 0 .../index.html | 2 + .../JNI/index.html | 2 + .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../InferModules__JavaTrace/.jbuilder-keep | 0 .../Sanitizer/index.html | 2 + .../Sink/Kind/index.html | 5 + .../InferModules__JavaTrace/Sink/index.html | 2 + .../Source/Kind/index.html | 5 + .../InferModules__JavaTrace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../Sources/index.html | 2 + .../infer/InferModules__JavaTrace/index.html | 11 + .../infer/InferModules__Javac/.jbuilder-keep | 0 .../infer/InferModules__Javac/index.html | 2 + .../InferModules__JoinState/.jbuilder-keep | 0 .../infer/InferModules__JoinState/index.html | 2 + .../infer/InferModules__Litho/.jbuilder-keep | 0 .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Analyzer/Interpreter/index.html | 2 + .../InferModules__Litho/Analyzer/index.html | 2 + .../GraphQLGetters/index.html | 2 + .../LithoFramework/index.html | 2 + .../InferModules__Litho/Payload/index.html | 2 + .../RequiredProps/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../infer/InferModules__Litho/index.html | 2 + .../InferModules__LithoDomain/.jbuilder-keep | 0 .../CallSet/index.html | 2 + .../LocalAccessPath/index.html | 2 + .../MethodCall/index.html | 2 + .../InferModules__LithoDomain/index.html | 3 + .../InferModules__Liveness/.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../Analyzer/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../CFG/Node/index.html | 2 + .../InferModules__Liveness/CFG/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../TransferFunctions/index.html | 2 + .../CapturedByRefAnalyzer/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../CapturedByRefTransferFunctions/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../InferModules__Liveness/VarSet/index.html | 2 + .../infer/InferModules__Liveness/index.html | 2 + .../.jbuilder-keep | 0 .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../TestInterpreter/index.html | 2 + .../InferModules__LivenessTests/index.html | 2 + .../InferModules__LowerHil/.jbuilder-keep | 0 .../DefaultConfig/index.html | 2 + .../Make/CFG/index.html | 2 + .../Make/Domain/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Make/TransferFunctions/CFG/index.html | 2 + .../Make/TransferFunctions/Domain/index.html | 2 + .../Make/TransferFunctions/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../Make/argument-2-HilConfig/index.html | 2 + .../Make/argument-3-CFG/Node/index.html | 2 + .../Make/argument-3-CFG/index.html | 2 + .../InferModules__LowerHil/Make/index.html | 2 + .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Interpreter/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../MakeAbstractInterpreter/index.html | 3 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Interpreter/index.html | 2 + .../argument-1-HilConfig/index.html | 2 + .../argument-2-CFG/Node/index.html | 2 + .../argument-2-CFG/index.html | 2 + .../CFG/Node/index.html | 2 + .../CFG/index.html | 2 + .../Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../index.html | 2 + .../index.html | 3 + .../infer/InferModules__LowerHil/index.html | 2 + .../module-type-HilConfig/index.html | 2 + .../infer/InferModules__Match/.jbuilder-keep | 0 .../infer/InferModules__Match/index.html | 21 + .../infer/InferModules__Maven/.jbuilder-keep | 0 .../infer/InferModules__Maven/index.html | 2 + .../InferModules__MergeCapture/.jbuilder-keep | 0 .../InferModules__MergeCapture/index.html | 2 + .../InferModules__ModelTables/.jbuilder-keep | 0 .../InferModules__ModelTables/index.html | 2 + .../infer/InferModules__Models/.jbuilder-keep | 0 .../InferModules__Models/Inference/index.html | 2 + .../infer/InferModules__Models/index.html | 2 + .../InferModules__NodePrinter/.jbuilder-keep | 0 .../InferModules__NodePrinter/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__NullabilityCheck/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 3 + .../.jbuilder-keep | 0 .../InferModules__ObjcMethod_decl/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 3 + .../InferModules__Ondemand/.jbuilder-keep | 0 .../infer/InferModules__Ondemand/index.html | 4 + .../.jbuilder-keep | 0 .../InferModules__OndemandCapture/index.html | 4 + .../InferModules__Ownership/.jbuilder-keep | 0 .../infer/InferModules__Ownership/index.html | 2 + .../InferModules__Passthrough/.jbuilder-keep | 0 .../InferModules__Passthrough/index.html | 2 + .../infer/InferModules__Paths/.jbuilder-keep | 0 .../infer/InferModules__Paths/Path/index.html | 6 + .../InferModules__Paths/PathSet/index.html | 2 + .../infer/InferModules__Paths/index.html | 2 + .../InferModules__PatternMatch/.jbuilder-keep | 0 .../InferModules__PatternMatch/index.html | 7 + .../InferModules__Payloads/.jbuilder-keep | 0 .../infer/InferModules__Payloads/index.html | 2 + .../InferModules__PerfStats/.jbuilder-keep | 0 .../infer/InferModules__PerfStats/index.html | 2 + .../InferModules__Preanal/.jbuilder-keep | 0 .../infer/InferModules__Preanal/index.html | 2 + .../InferModules__Printer/.jbuilder-keep | 0 .../LineReader/index.html | 3 + .../infer/InferModules__Printer/index.html | 3 + .../InferModules__PrintfArgs/.jbuilder-keep | 0 .../infer/InferModules__PrintfArgs/index.html | 2 + .../InferModules__ProcCfg/.jbuilder-keep | 0 .../Backward/argument-1-Base/Node/index.html | 2 + .../Backward/argument-1-Base/index.html | 2 + .../InferModules__ProcCfg/Backward/index.html | 2 + .../DefaultNode/index.html | 2 + .../Exceptional/index.html | 2 + .../InstrNode/index.html | 2 + .../InferModules__ProcCfg/Normal/index.html | 2 + .../Node/IdMap/index.html | 2 + .../Node/IdSet/index.html | 2 + .../NormalOneInstrPerNode/Node/index.html | 2 + .../NormalOneInstrPerNode/index.html | 2 + .../argument-1-Base/index.html | 2 + .../OneInstrPerNode/index.html | 2 + .../infer/InferModules__ProcCfg/index.html | 4 + .../module-type-Node/index.html | 2 + .../module-type-S/Node/index.html | 2 + .../module-type-S/index.html | 2 + .../InferModules__ProcCfgTests/.jbuilder-keep | 0 .../BackwardCfg/Node/IdMap/index.html | 2 + .../BackwardCfg/Node/IdSet/index.html | 2 + .../BackwardCfg/Node/index.html | 2 + .../BackwardCfg/index.html | 2 + .../BackwardInstrCfg/Node/IdMap/index.html | 2 + .../BackwardInstrCfg/Node/IdSet/index.html | 2 + .../BackwardInstrCfg/Node/index.html | 2 + .../BackwardInstrCfg/index.html | 2 + .../InstrCfg/Node/IdMap/index.html | 2 + .../InstrCfg/Node/IdSet/index.html | 2 + .../InstrCfg/Node/index.html | 2 + .../InstrCfg/index.html | 2 + .../InferModules__ProcCfgTests/index.html | 2 + .../InferModules__ProcData/.jbuilder-keep | 0 .../infer/InferModules__ProcData/index.html | 2 + .../InferModules__Procedures/.jbuilder-keep | 0 .../infer/InferModules__Procedures/index.html | 2 + .../infer/InferModules__Prop/.jbuilder-keep | 0 .../CategorizePreconditions/index.html | 2 + .../InferModules__Prop/Metrics/index.html | 2 + .../infer/InferModules__Prop/index.html | 17 + .../InferModules__PropUtil/.jbuilder-keep | 0 .../infer/InferModules__PropUtil/index.html | 3 + .../InferModules__Propgraph/.jbuilder-keep | 0 .../infer/InferModules__Propgraph/index.html | 6 + .../InferModules__Propset/.jbuilder-keep | 0 .../infer/InferModules__Propset/index.html | 6 + .../infer/InferModules__Prover/.jbuilder-keep | 0 .../Subtyping_check/index.html | 3 + .../infer/InferModules__Prover/index.html | 9 + .../InferModules__PythonMain/.jbuilder-keep | 0 .../infer/InferModules__PythonMain/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../Endpoint/index.html | 2 + .../Sanitizer/index.html | 2 + .../Sink/index.html | 2 + .../Source/index.html | 2 + .../InferModules__QuandaryConfig/index.html | 2 + .../.jbuilder-keep | 0 .../AccessTree/index.html | 2 + .../Clang/AccessMap/index.html | 2 + .../Clang/TraceDomain/index.html | 2 + .../Clang/index.html | 2 + .../Java/AccessMap/index.html | 2 + .../Java/TraceDomain/index.html | 2 + .../Java/index.html | 2 + .../InferModules__QuandarySummary/index.html | 2 + .../infer/InferModules__RacerD/.jbuilder-keep | 0 .../infer/InferModules__RacerD/index.html | 2 + .../InferModules__RacerDConfig/.jbuilder-keep | 0 .../Models/index.html | 16 + .../InferModules__RacerDConfig/index.html | 2 + .../InferModules__RacerDDomain/.jbuilder-keep | 0 .../Access/index.html | 3 + .../AccessDomain/index.html | 3 + .../OwnershipPrecondition/index.html | 3 + .../AccessSnapshot/index.html | 3 + .../Attribute/index.html | 2 + .../AttributeMapDomain/index.html | 2 + .../AttributeSetDomain/index.html | 2 + .../Choice/index.html | 2 + .../LocksDomain/index.html | 4 + .../OwnershipAbstractValue/index.html | 3 + .../OwnershipDomain/index.html | 2 + .../PathDomain/Sanitizer/index.html | 2 + .../PathDomain/Sink/Kind/index.html | 5 + .../PathDomain/Sink/index.html | 2 + .../PathDomain/Source/Kind/index.html | 5 + .../PathDomain/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../PathDomain/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../PathDomain/Sources/Known/index.html | 2 + .../PathDomain/Sources/Sanitizers/index.html | 2 + .../PathDomain/Sources/index.html | 2 + .../PathDomain/index.html | 12 + .../StabilityDomain/AccessMap/index.html | 2 + .../StabilityDomain/BaseMap/index.html | 2 + .../StabilityDomain/TraceDomain/index.html | 2 + .../StabilityDomain/index.html | 2 + .../ThreadsDomain/index.html | 9 + .../TraceElem/index.html | 3 + .../InferModules__RacerDDomain/index.html | 10 + .../InferModules__Rearrange/.jbuilder-keep | 0 .../infer/InferModules__Rearrange/index.html | 5 + .../.jbuilder-keep | 0 .../InferModules__RegisterCheckers/index.html | 2 + .../InferModules__ReportDiff/.jbuilder-keep | 0 .../infer/InferModules__ReportDiff/index.html | 2 + .../InferModules__Reporting/.jbuilder-keep | 0 .../infer/InferModules__Reporting/index.html | 8 + .../.jbuilder-keep | 0 .../index.html | 2 + .../.jbuilder-keep | 0 .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Analyzer/Interpreter/index.html | 2 + .../Analyzer/index.html | 2 + .../Payload/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../InferModules__ResourceLeaks/index.html | 2 + .../InferModules__RetainCycles/.jbuilder-keep | 0 .../InferModules__RetainCycles/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__RetainCyclesType/index.html | 3 + .../InferModules__Sanitizer/.jbuilder-keep | 0 .../InferModules__Sanitizer/Dummy/index.html | 2 + .../infer/InferModules__Sanitizer/index.html | 2 + .../module-type-S/index.html | 2 + .../InferModules__Scheduler/.jbuilder-keep | 0 .../ReversePostorder/WorkUnit/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../ReversePostorder/index.html | 4 + .../infer/InferModules__Scheduler/index.html | 3 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../module-type-Make/index.html | 3 + .../module-type-S/CFG/Node/index.html | 2 + .../module-type-S/CFG/index.html | 2 + .../module-type-S/index.html | 3 + .../.jbuilder-keep | 0 .../MockNode/IdMap/index.html | 2 + .../MockNode/IdSet/index.html | 2 + .../MockNode/OrderedId/index.html | 2 + .../MockNode/index.html | 2 + .../MockProcCfg/index.html | 2 + .../S/CFG/Node/IdMap/index.html | 2 + .../S/CFG/Node/IdSet/index.html | 2 + .../S/CFG/Node/index.html | 2 + .../S/CFG/index.html | 2 + .../S/WorkUnit/index.html | 2 + .../InferModules__SchedulerTests/S/index.html | 2 + .../InferModules__SchedulerTests/index.html | 2 + .../.jbuilder-keep | 0 .../Make/argument-1-Spec/index.html | 2 + .../Make/index.html | 2 + .../InferModules__SimpleChecker/index.html | 2 + .../module-type-S/index.html | 2 + .../module-type-Spec/index.html | 2 + .../infer/InferModules__Sink/.jbuilder-keep | 0 .../InferModules__Sink/Make/Kind/index.html | 5 + .../Make/argument-1-Kind/index.html | 5 + .../infer/InferModules__Sink/Make/index.html | 2 + .../infer/InferModules__Sink/index.html | 2 + .../module-type-Kind/index.html | 5 + .../module-type-S/Kind/index.html | 5 + .../module-type-S/index.html | 2 + .../InferModules__SinkTrace/.jbuilder-keep | 0 .../Make/Sanitizer/index.html | 2 + .../Make/Sink/Kind/index.html | 5 + .../Make/Sink/index.html | 2 + .../Make/Source/Kind/index.html | 5 + .../Make/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Make/Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Make/Sources/Footprint/index.html | 2 + .../Make/Sources/FootprintConfig/index.html | 2 + .../Make/Sources/Known/index.html | 2 + .../Make/Sources/Sanitizers/index.html | 2 + .../Make/Sources/index.html | 2 + .../Make/argument-1-TraceElem/Kind/index.html | 5 + .../Make/argument-1-TraceElem/index.html | 2 + .../InferModules__SinkTrace/Make/index.html | 12 + .../MakeSink/Kind/index.html | 5 + .../argument-1-TraceElem/Kind/index.html | 5 + .../MakeSink/argument-1-TraceElem/index.html | 2 + .../MakeSink/index.html | 2 + .../infer/InferModules__SinkTrace/index.html | 2 + .../module-type-S/Sanitizer/index.html | 2 + .../module-type-S/Sink/Kind/index.html | 5 + .../module-type-S/Sink/index.html | 2 + .../module-type-S/Source/Kind/index.html | 5 + .../module-type-S/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../module-type-S/Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../module-type-S/Sources/index.html | 2 + .../module-type-S/index.html | 12 + .../infer/InferModules__Siof/.jbuilder-keep | 0 .../infer/InferModules__Siof/index.html | 2 + .../InferModules__SiofDomain/.jbuilder-keep | 0 .../Summary/index.html | 2 + .../VarNames/index.html | 2 + .../infer/InferModules__SiofDomain/index.html | 2 + .../InferModules__SiofTrace/.jbuilder-keep | 0 .../Sanitizer/index.html | 2 + .../Sink/Kind/index.html | 5 + .../InferModules__SiofTrace/Sink/index.html | 2 + .../Source/Kind/index.html | 5 + .../InferModules__SiofTrace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../Sources/index.html | 2 + .../infer/InferModules__SiofTrace/index.html | 12 + .../infer/InferModules__Source/.jbuilder-keep | 0 .../Dummy/Kind/index.html | 5 + .../InferModules__Source/Dummy/index.html | 3 + .../InferModules__Source/Make/Kind/index.html | 5 + .../Make/argument-1-Kind/index.html | 6 + .../InferModules__Source/Make/index.html | 3 + .../infer/InferModules__Source/index.html | 2 + .../module-type-Kind/index.html | 6 + .../module-type-S/Kind/index.html | 5 + .../module-type-S/index.html | 3 + .../InferModules__Stacktrace/.jbuilder-keep | 0 .../infer/InferModules__Stacktrace/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__StacktraceTests/index.html | 2 + .../InferModules__Starvation/.jbuilder-keep | 0 .../infer/InferModules__Starvation/index.html | 2 + .../.jbuilder-keep | 0 .../Event/index.html | 2 + .../EventDomain/index.html | 2 + .../Lock/index.html | 3 + .../LockState/index.html | 4 + .../Order/index.html | 6 + .../OrderDomain/index.html | 4 + .../UIThreadDomain/index.html | 4 + .../InferModules__StarvationDomain/index.html | 7 + .../infer/InferModules__State/.jbuilder-keep | 0 .../infer/InferModules__State/index.html | 5 + .../.jbuilder-keep | 0 .../InferModules__StatsAggregator/index.html | 3 + .../InferModules__Summary/.jbuilder-keep | 0 .../InferModules__Summary/Stats/index.html | 2 + .../InferModules__Summary/Status/index.html | 2 + .../infer/InferModules__Summary/index.html | 7 + .../.jbuilder-keep | 0 .../Make/argument-1-P/index.html | 2 + .../Make/index.html | 2 + .../InferModules__SummaryPayload/index.html | 2 + .../module-type-Payload/index.html | 2 + .../module-type-S/index.html | 2 + .../InferModules__SwitchCase/.jbuilder-keep | 0 .../infer/InferModules__SwitchCase/index.html | 2 + .../InferModules__SymExec/.jbuilder-keep | 0 .../infer/InferModules__SymExec/index.html | 3 + .../.jbuilder-keep | 0 .../InferModules__SymExecBlocks/index.html | 2 + .../InferModules__Tableaux/.jbuilder-keep | 0 .../infer/InferModules__Tableaux/index.html | 2 + .../InferModules__Tabulation/.jbuilder-keep | 0 .../infer/InferModules__Tabulation/index.html | 4 + .../.jbuilder-keep | 0 .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Make/Analyzer/Interpreter/index.html | 2 + .../Make/Analyzer/index.html | 2 + .../Make/HilConfig/index.html | 2 + .../Make/Payload/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../Make/TransferFunctions/index.html | 2 + .../AccessTree/AccessMap/index.html | 2 + .../AccessTree/TraceDomain/index.html | 2 + .../AccessTree/index.html | 2 + .../Trace/Sanitizer/index.html | 2 + .../Trace/Sink/Kind/index.html | 5 + .../Trace/Sink/index.html | 2 + .../Trace/Source/Kind/index.html | 5 + .../Trace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Trace/Sources/Footprint/index.html | 2 + .../Trace/Sources/FootprintConfig/index.html | 2 + .../Trace/Sources/Known/index.html | 2 + .../Trace/Sources/Sanitizers/index.html | 2 + .../Trace/Sources/index.html | 2 + .../Trace/index.html | 11 + .../argument-1-TaintSpecification/index.html | 4 + .../Make/index.html | 2 + .../InferModules__TaintAnalysis/index.html | 2 + .../InferModules__TaintSpec/.jbuilder-keep | 0 .../infer/InferModules__TaintSpec/index.html | 3 + .../AccessTree/AccessMap/index.html | 2 + .../AccessTree/TraceDomain/index.html | 2 + .../module-type-S/AccessTree/index.html | 2 + .../module-type-S/Trace/Sanitizer/index.html | 2 + .../module-type-S/Trace/Sink/Kind/index.html | 5 + .../module-type-S/Trace/Sink/index.html | 2 + .../Trace/Source/Kind/index.html | 5 + .../module-type-S/Trace/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Trace/Sources/Footprint/index.html | 2 + .../Trace/Sources/FootprintConfig/index.html | 2 + .../Trace/Sources/Known/index.html | 2 + .../Trace/Sources/Sanitizers/index.html | 2 + .../module-type-S/Trace/Sources/index.html | 2 + .../module-type-S/Trace/index.html | 11 + .../module-type-S/index.html | 4 + .../InferModules__TaintTests/.jbuilder-keep | 0 .../Interpreter/InvariantMap/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Interpreter/TransferFunctions/index.html | 2 + .../Analyzer/Interpreter/index.html | 2 + .../MockTaintAnalysis/Analyzer/index.html | 2 + .../MockTaintAnalysis/HilConfig/index.html | 2 + .../MockTaintAnalysis/Payload/index.html | 2 + .../TaintDomain/AccessMap/index.html | 2 + .../TaintDomain/BaseMap/index.html | 2 + .../TaintDomain/TraceDomain/index.html | 2 + .../MockTaintAnalysis/TaintDomain/index.html | 2 + .../TraceDomain/Sanitizer/index.html | 2 + .../TraceDomain/Sink/Kind/index.html | 2 + .../TraceDomain/Sink/Set/index.html | 2 + .../TraceDomain/Sink/index.html | 2 + .../TraceDomain/Source/Kind/index.html | 2 + .../TraceDomain/Source/Set/index.html | 2 + .../TraceDomain/Source/index.html | 2 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../TraceDomain/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../TraceDomain/Sources/Known/index.html | 2 + .../TraceDomain/Sources/Sanitizers/index.html | 2 + .../TraceDomain/Sources/index.html | 2 + .../MockTaintAnalysis/TraceDomain/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../TransferFunctions/CFG/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../MockTaintAnalysis/index.html | 2 + .../MockTrace/Sanitizer/index.html | 2 + .../MockTrace/Sink/Kind/index.html | 2 + .../MockTrace/Sink/Set/index.html | 2 + .../MockTrace/Sink/index.html | 2 + .../MockTrace/Source/Kind/index.html | 2 + .../MockTrace/Source/Set/index.html | 2 + .../MockTrace/Source/index.html | 2 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../MockTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../MockTrace/Sources/Known/index.html | 2 + .../MockTrace/Sources/Sanitizers/index.html | 2 + .../MockTrace/Sources/index.html | 2 + .../MockTrace/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../I/TransferFunctions/CFG/Node/index.html | 2 + .../I/TransferFunctions/CFG/index.html | 2 + .../I/TransferFunctions/Domain/index.html | 2 + .../I/TransferFunctions/index.html | 2 + .../TestInterpreter/I/index.html | 2 + .../TestInterpreter/index.html | 2 + .../infer/InferModules__TaintTests/index.html | 2 + .../infer/InferModules__Tasks/.jbuilder-keep | 0 .../InferModules__Tasks/Runner/index.html | 2 + .../infer/InferModules__Tasks/index.html | 4 + .../.jbuilder-keep | 0 .../InferModules__TestDeterminator/index.html | 2 + .../InferModules__Timeout/.jbuilder-keep | 0 .../infer/InferModules__Timeout/index.html | 2 + .../infer/InferModules__Trace/.jbuilder-keep | 0 .../Make/Sanitizer/index.html | 2 + .../Make/Sink/Kind/index.html | 5 + .../InferModules__Trace/Make/Sink/index.html | 2 + .../Make/Source/Kind/index.html | 5 + .../Make/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Make/Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Make/Sources/Footprint/index.html | 2 + .../Make/Sources/FootprintConfig/index.html | 2 + .../Make/Sources/Known/index.html | 2 + .../Make/Sources/Sanitizers/index.html | 2 + .../Make/Sources/index.html | 2 + .../Make/argument-1-Spec/Sanitizer/index.html | 2 + .../Make/argument-1-Spec/Sink/Kind/index.html | 5 + .../Make/argument-1-Spec/Sink/index.html | 2 + .../argument-1-Spec/Source/Kind/index.html | 5 + .../Make/argument-1-Spec/Source/index.html | 3 + .../Make/argument-1-Spec/index.html | 3 + .../infer/InferModules__Trace/Make/index.html | 11 + .../infer/InferModules__Trace/index.html | 2 + .../module-type-S/Sanitizer/index.html | 2 + .../module-type-S/Sink/Kind/index.html | 5 + .../module-type-S/Sink/index.html | 2 + .../module-type-S/Source/Kind/index.html | 5 + .../module-type-S/Source/index.html | 3 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../module-type-S/Sources/Known/index.html | 2 + .../Sources/Sanitizers/index.html | 2 + .../module-type-S/Sources/index.html | 2 + .../module-type-S/index.html | 11 + .../module-type-Spec/Sanitizer/index.html | 2 + .../module-type-Spec/Sink/Kind/index.html | 5 + .../module-type-Spec/Sink/index.html | 2 + .../module-type-Spec/Source/Kind/index.html | 5 + .../module-type-Spec/Source/index.html | 3 + .../module-type-Spec/index.html | 3 + .../InferModules__TraceElem/.jbuilder-keep | 0 .../infer/InferModules__TraceElem/index.html | 2 + .../module-type-Kind/index.html | 5 + .../module-type-S/Kind/index.html | 5 + .../module-type-S/index.html | 2 + .../InferModules__TraceTests/.jbuilder-keep | 0 .../MockSink/index.html | 2 + .../MockSource/Kind/index.html | 2 + .../MockSource/Set/index.html | 2 + .../MockSource/index.html | 2 + .../MockTrace/Sanitizer/index.html | 2 + .../MockTrace/Sink/Kind/index.html | 2 + .../MockTrace/Sink/Set/index.html | 2 + .../MockTrace/Sink/index.html | 2 + .../MockTrace/Source/Kind/index.html | 2 + .../MockTrace/Source/Set/index.html | 2 + .../MockTrace/Source/index.html | 2 + .../Sources/Footprint/AccessMap/index.html | 2 + .../Sources/Footprint/BaseMap/index.html | 2 + .../Sources/Footprint/TraceDomain/index.html | 2 + .../MockTrace/Sources/Footprint/index.html | 2 + .../Sources/FootprintConfig/index.html | 2 + .../MockTrace/Sources/Known/index.html | 2 + .../MockTrace/Sources/Sanitizers/index.html | 2 + .../MockTrace/Sources/index.html | 2 + .../MockTrace/index.html | 2 + .../MockTraceElem/Kind/index.html | 2 + .../MockTraceElem/Set/index.html | 2 + .../MockTraceElem/index.html | 2 + .../infer/InferModules__TraceTests/index.html | 2 + .../.jbuilder-keep | 0 .../index.html | 3 + .../module-type-HIL/CFG/Node/index.html | 2 + .../module-type-HIL/CFG/index.html | 2 + .../module-type-HIL/Domain/index.html | 2 + .../module-type-HIL/index.html | 2 + .../module-type-MakeHIL/CFG/Node/index.html | 2 + .../module-type-MakeHIL/CFG/index.html | 2 + .../module-type-MakeHIL/Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../module-type-MakeHIL/index.html | 2 + .../module-type-MakeSIL/CFG/Node/index.html | 2 + .../module-type-MakeSIL/CFG/index.html | 2 + .../module-type-MakeSIL/Domain/index.html | 2 + .../argument-1-C/Node/index.html | 2 + .../argument-1-C/index.html | 2 + .../module-type-MakeSIL/index.html | 2 + .../module-type-S/CFG/Node/index.html | 2 + .../module-type-S/CFG/index.html | 2 + .../module-type-S/Domain/index.html | 2 + .../module-type-S/index.html | 2 + .../module-type-SIL/CFG/Node/index.html | 2 + .../module-type-SIL/CFG/index.html | 2 + .../module-type-SIL/Domain/index.html | 2 + .../module-type-SIL/index.html | 2 + .../.jbuilder-keep | 0 .../InferModules__TypeAnnotation/index.html | 2 + .../InferModules__TypeCheck/.jbuilder-keep | 0 .../infer/InferModules__TypeCheck/index.html | 2 + .../InferModules__TypeErr/.jbuilder-keep | 0 .../InferModules__TypeErr/InstrRef/index.html | 2 + .../InferModules__TypeErr/Strict/index.html | 2 + .../infer/InferModules__TypeErr/index.html | 2 + .../module-type-InstrRefT/index.html | 2 + .../InferModules__TypeOrigin/.jbuilder-keep | 0 .../infer/InferModules__TypeOrigin/index.html | 2 + .../InferModules__TypeState/.jbuilder-keep | 0 .../infer/InferModules__TypeState/index.html | 2 + .../InferModules__Types_lexer/.jbuilder-keep | 0 .../InferModules__Types_lexer/index.html | 2 + .../InferModules__Types_parser/.jbuilder-keep | 0 .../InferModules__Types_parser/index.html | 2 + .../infer/InferModules__Uninit/.jbuilder-keep | 0 .../AliasedVars/index.html | 2 + .../CFG/Node/IdMap/index.html | 2 + .../CFG/Node/IdSet/index.html | 2 + .../TransferFunctions/CFG/Node/index.html | 2 + .../Analyzer/TransferFunctions/CFG/index.html | 2 + .../TransferFunctions/Domain/index.html | 2 + .../Analyzer/TransferFunctions/index.html | 2 + .../InferModules__Uninit/Analyzer/index.html | 2 + .../InferModules__Uninit/Payload/index.html | 2 + .../RecordDomain/index.html | 2 + .../argument-1-CFG/Node/index.html | 2 + .../argument-1-CFG/index.html | 2 + .../TransferFunctions/index.html | 2 + .../UninitVars/index.html | 2 + .../infer/InferModules__Uninit/index.html | 2 + .../InferModules__UninitDomain/.jbuilder-keep | 0 .../Domain/index.html | 2 + .../Record/argument-1-Domain1/index.html | 2 + .../Record/argument-2-Domain2/index.html | 2 + .../Record/argument-3-Domain3/index.html | 2 + .../Record/index.html | 2 + .../VarPair/index.html | 2 + .../InferModules__UninitDomain/index.html | 2 + website/static/odoc/0.15.0/infer/index.html | 14 + website/static/odoc/0.15.0/odoc.css | 234 + website/static/odoc/latest | 1 + website/yarn.lock | 9312 +++++++++++++++++ 2878 files changed, 28905 insertions(+) create mode 100644 .github/workflows/deploy.yml create mode 100644 website/.prettierignore create mode 100755 website/README.md create mode 100755 website/blog/2015-05-22-Infer-on-open-source-android-apps.md.md create mode 100755 website/blog/2016-03-17-collaboration-with-spotify.md create mode 100644 website/blog/2016-04-07-mobileatscale-london-talk.md create mode 100644 website/blog/2016-06-23-first-opensourceversary.md create mode 100644 website/blog/2016-08-30-curryon-rome-talk.md create mode 100644 website/blog/2016-11-28-atscale16.md create mode 100644 website/blog/2017-10-20-ocamlformat-released.md create mode 100755 website/docs/00-getting-started.md create mode 100644 website/docs/00-hello-world.md create mode 100644 website/docs/01-adding-models.md create mode 100644 website/docs/01-advanced-features.md create mode 100644 website/docs/01-analyzing-apps-or-projects.md create mode 100644 website/docs/01-checkers.md create mode 100644 website/docs/01-eradicate.md create mode 100644 website/docs/01-experimental-checkers.md create mode 100644 website/docs/01-infer-workflow.md create mode 100644 website/docs/01-linters.md create mode 100644 website/docs/01-man-pages.md create mode 100644 website/docs/01-racerd.md create mode 100644 website/docs/01-steps-for-ci.md create mode 100644 website/docs/02-about-infer.md create mode 100644 website/docs/02-limitations.md create mode 100644 website/docs/02-separation-logic-and-biabduction.md create mode 100644 website/docs/03-checker-bug-types.md create mode 100644 website/docs/03-eradicate-warnings.md create mode 100644 website/docs/03-linter-bug-types.md create mode 100644 website/docs/04-absint-framework.md create mode 100644 website/docs/04-adding-checkers.md create mode 100644 website/docs/04-internal-API.md create mode 100644 website/docs/support.md create mode 100755 website/docusaurus.config.js create mode 100755 website/package.json create mode 100755 website/sidebars.js create mode 100644 website/src/components/Script.js create mode 100755 website/src/css/custom.css create mode 100755 website/src/pages/index.js create mode 100755 website/src/pages/styles.module.css create mode 100644 website/static/img/AL/always_holds.jpeg create mode 100644 website/static/img/AL/always_holds_everywhere.jpeg create mode 100644 website/static/img/AL/holds_eventually.jpeg create mode 100644 website/static/img/AL/holds_everywhere_eventually.jpeg create mode 100644 website/static/img/AL/holds_everywhere_next.jpeg create mode 100644 website/static/img/AL/holds_in_node.jpeg create mode 100644 website/static/img/AL/holds_next.jpeg create mode 100644 website/static/img/AL/holds_until.jpeg create mode 100644 website/static/img/AL/in_node_with_transition.jpeg create mode 100644 website/static/img/AL/linters_help.png create mode 100644 website/static/img/SepSplit.jpg create mode 100644 website/static/img/blog/Infer-Spotify.png create mode 100644 website/static/img/favicon.png create mode 100644 website/static/img/logo.png create mode 100644 website/static/img/who/aws.svg create mode 100644 website/static/img/who/facebook.png create mode 100644 website/static/img/who/freefem.png create mode 100644 website/static/img/who/instagram.png create mode 100644 website/static/img/who/mozilla.png create mode 100644 website/static/img/who/oculus.png create mode 100644 website/static/img/who/spotify.png create mode 100644 website/static/img/who/uber.svg create mode 100644 website/static/img/who/whatsapp.svg create mode 100644 website/static/man/infer-analyze.1.html create mode 100644 website/static/man/infer-capture.1.html create mode 100644 website/static/man/infer-compile.1.html create mode 100644 website/static/man/infer-explore.1.html create mode 100644 website/static/man/infer-report.1.html create mode 100644 website/static/man/infer-reportdiff.1.html create mode 100644 website/static/man/infer-run.1.html create mode 100644 website/static/man/infer.1.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/CommandDoc/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/CommandLineOption/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Config/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/DB/Results_dir/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/DB/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Die/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Epilogues/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/EventLogger/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/FileDiff/UnixDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/FileDiff/UnixDiff/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/FileDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/FileDiff/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/IssueType/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/JsonBuilder/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Language/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Location/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Logging/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/MarkupFormatter/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/MergeResults/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Multilinks/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Process/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/ProcessPool/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/ProcessPoolState/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/ResultsDatabase/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/ResultsDir/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/RunState/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Serialization/Key/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Serialization/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SourceFile/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SourceFile/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SqliteUtils/MarshalledData/argument-1-D/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SqliteUtils/MarshalledData/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SqliteUtils/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SqliteUtils/module-type-Data/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/SymOp/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Utils/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/Version/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/ZipLib/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__CommandDoc/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__CommandDoc/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__CommandLineOption/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__CommandLineOption/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Config/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Config/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__DB/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__DB/Results_dir/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__DB/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Die/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Die/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Epilogues/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Epilogues/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__EventLogger/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__EventLogger/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__FileDiff/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__FileDiff/UnixDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__FileDiff/UnixDiff/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__FileDiff/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__FileDiff/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__IssueType/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__IssueType/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__JsonBuilder/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__JsonBuilder/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Language/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Language/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Location/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Location/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Logging/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Logging/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__MarkupFormatter/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__MarkupFormatter/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__MergeResults/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__MergeResults/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Multilinks/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Multilinks/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Process/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Process/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ProcessPool/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ProcessPool/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ProcessPoolState/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ProcessPoolState/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ResultsDatabase/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ResultsDatabase/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ResultsDir/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ResultsDir/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__RunState/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__RunState/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Serialization/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Serialization/Key/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Serialization/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SourceFile/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SourceFile/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SourceFile/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SqliteUtils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SqliteUtils/MarshalledData/argument-1-D/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SqliteUtils/MarshalledData/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SqliteUtils/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SqliteUtils/module-type-Data/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SymOp/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__SymOp/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Utils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Utils/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Version/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__Version/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ZipLib/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferBase/InferBase__ZipLib/index.html create mode 100644 website/static/odoc/0.15.0/InferBase/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_b/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_proj/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_types/TypePtr/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_types/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_v/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Clang_ast_visit/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/InferCommand/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Java_method_decl_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Java_method_decl_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Jsonbug_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Jsonbug_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Runstate_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Runstate_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Stacktree_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/Stacktree_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_b/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_b/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_j/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_proj/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_proj/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_t/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_types/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_types/TypePtr/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_types/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_v/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_v/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_visit/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Clang_ast_visit/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__InferCommand/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__InferCommand/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Java_method_decl_j/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Java_method_decl_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Java_method_decl_t/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Java_method_decl_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Jsonbug_j/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Jsonbug_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Jsonbug_t/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Jsonbug_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Runstate_j/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Runstate_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Runstate_t/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Runstate_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Stacktree_j/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Stacktree_j/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Stacktree_t/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferGenerated/InferGenerated__Stacktree_t/index.html create mode 100644 website/static/odoc/0.15.0/InferGenerated/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/AccessExpression/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/AccessPath/Abs/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/AccessPath/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Annot/Class/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Annot/Item/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Annot/Method/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Annot/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Attributes/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/BUILTINS/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/BUILTINS/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Binop/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/BuiltinDecl/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/CallFlags/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/CallSite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Cfg/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Cfg/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Const/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/DecompiledExp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Errlog/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Exceptions/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Exp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/HilExp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/HilInstr/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Ident/NameGenerator/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Ident/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Instrs/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/IntLit/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Io_infer/Html/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Io_infer/Xml/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Io_infer/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/IssueLog/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Localise/BucketLevel/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Localise/Tags/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Localise/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Mangled/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Mleak_buckets/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Objc_models/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/PredSymb/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcAttributes/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcAttributes/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Procdesc/Node/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Procdesc/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/Call/FuncArg/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/Call/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/ProcName/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/TypName/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/module-type-Common/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/ProcnameDispatcher/module-type-NameCommon/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Pvar/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/QualifiedCppName/Match/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/QualifiedCppName/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Sil/Predicates/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Sil/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/SourceFiles/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Subtype/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Tenv/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Tenv/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Fieldname/Clang/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Fieldname/Java/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Fieldname/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Name/C/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Name/Cpp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Name/Java/Split/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Name/Java/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Name/Objc/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Name/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Procname/Java/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Procname/ObjC_Cpp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Procname/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Procname/SQLiteList/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Procname/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/Struct/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Typ/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Unop/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/Var/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__AccessExpression/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__AccessExpression/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__AccessPath/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__AccessPath/Abs/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__AccessPath/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Annot/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Annot/Class/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Annot/Item/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Annot/Method/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Annot/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Attributes/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Attributes/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__BUILTINS/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__BUILTINS/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__BUILTINS/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Binop/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Binop/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__BuiltinDecl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__BuiltinDecl/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__CallFlags/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__CallFlags/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__CallSite/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__CallSite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Cfg/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Cfg/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Cfg/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Const/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Const/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__DecompiledExp/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__DecompiledExp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Errlog/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Errlog/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Exceptions/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Exceptions/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Exp/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Exp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__HilExp/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__HilExp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__HilInstr/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__HilInstr/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Ident/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Ident/NameGenerator/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Ident/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Instrs/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Instrs/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__IntLit/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__IntLit/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Io_infer/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Io_infer/Html/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Io_infer/Xml/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Io_infer/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__IssueLog/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__IssueLog/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Localise/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Localise/BucketLevel/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Localise/Tags/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Localise/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Mangled/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Mangled/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Mleak_buckets/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Mleak_buckets/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Objc_models/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Objc_models/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__PredSymb/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__PredSymb/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcAttributes/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcAttributes/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcAttributes/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Procdesc/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Procdesc/Node/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Procdesc/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/Call/FuncArg/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/Call/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/ProcName/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/TypName/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/module-type-Common/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__ProcnameDispatcher/module-type-NameCommon/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Pvar/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Pvar/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__QualifiedCppName/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__QualifiedCppName/Match/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__QualifiedCppName/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Sil/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Sil/Predicates/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Sil/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__SourceFiles/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__SourceFiles/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Subtype/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Subtype/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Tenv/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Tenv/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Tenv/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Fieldname/Clang/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Fieldname/Java/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Fieldname/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Name/C/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Name/Cpp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Name/Java/Split/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Name/Java/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Name/Objc/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Name/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Procname/Java/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Procname/ObjC_Cpp/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Procname/SQLite/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Procname/SQLiteList/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Procname/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/Struct/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Typ/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Unop/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Unop/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Var/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferIR/InferIR__Var/index.html create mode 100644 website/static/odoc/0.15.0/InferIR/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/Escape/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IContainer/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IExn/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IList/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IOption/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/ISequence/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IStd/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IStd/module-type-T/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IStd/module-type-T1/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IStd/module-type-T2/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IStd/module-type-T3/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IStd/module-type-T_bin/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/IntSet/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/PolyVariantEqual/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/Pp/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/PrettyPrintable/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/PrettyPrintable/module-type-PPMap/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/PrettyPrintable/module-type-PPSet/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/PrettyPrintable/module-type-PrintableOrderedType/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/StatisticsToolbox/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__Escape/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__Escape/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IContainer/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IContainer/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IExn/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IExn/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IList/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IList/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IOption/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IOption/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__ISequence/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__ISequence/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/module-type-T/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/module-type-T1/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/module-type-T2/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/module-type-T3/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IStd/module-type-T_bin/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IntSet/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__IntSet/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PolyVariantEqual/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PolyVariantEqual/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__Pp/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__Pp/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PrettyPrintable/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PrettyPrintable/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PrettyPrintable/module-type-PPMap/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PrettyPrintable/module-type-PPSet/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__PrettyPrintable/module-type-PrintableOrderedType/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__StatisticsToolbox/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/InferStdlib/InferStdlib__StatisticsToolbox/index.html create mode 100644 website/static/odoc/0.15.0/InferStdlib/index.html create mode 100644 website/static/odoc/0.15.0/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ALVar/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Abs/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbsLoc/Allocsite/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbsLoc/Loc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbsLoc/PowLoc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbsLoc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Absarray/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/BooleanAnd/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/BooleanOr/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/BottomLifted/argument-1-Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/BottomLifted/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/CountDomain/argument-1-MaxCount/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/CountDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/FiniteSet/argument-1-Element/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/FiniteSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/FiniteSetOfPPSet/argument-1-PPSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/FiniteSetOfPPSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/InvertedMap/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/InvertedMap/argument-2-ValueDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/InvertedMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/InvertedSet/argument-1-Element/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/InvertedSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Map/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Map/argument-2-ValueDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Map/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/MapOfPPMap/argument-1-PPMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/MapOfPPMap/argument-2-ValueDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/MapOfPPMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Pair/argument-1-Domain1/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Pair/argument-2-Domain2/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Pair/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/StackDomain/argument-1-Element/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/StackDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/TopLifted/argument-1-Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/TopLifted/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/Types/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/module-type-MaxCount/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/module-type-WithBottom/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractDomain/module-type-WithTop/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-2-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-2-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-2-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-2-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-2-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/argument-2-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-1-Scheduler/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-1-Scheduler/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-1-Scheduler/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/MakeNoCFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/module-type-S/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/module-type-S/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/module-type-S/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreter/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/ExceptionalTestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/NormalTestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/PathCountDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/PathCountTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AbstractInterpreterTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessPathDomains/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessPathDomains/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessPathTestUtils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessPathTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/DefaultConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/Make/argument-1-TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/Make/argument-2-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/PathSet/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/PathSet/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/PathSet/argument-1-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/PathSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/module-type-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/module-type-S/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTree/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/Domain/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/Domain/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/MakeTree/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/MakeTree/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/MakeTree/argument-1-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/MakeTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/MockTraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AccessTreeTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTaken/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AddressTakenTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-2-T/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-2-T/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-2-T/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-2-T/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-2-T/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/argument-2-T/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/StructuredSil/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnalyzerTester/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AndroidFramework/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnnotReachabilityDomain/CallSites/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnnotReachabilityDomain/SinkMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnnotReachabilityDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnnotatedSignature/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/AnnotationReachability/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Annotations/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ArrayBlk/ArrInfo/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ArrayBlk/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Ast_expressions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Attribute/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BiabductionSummary/Jprop/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BiabductionSummary/NormSpec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BiabductionSummary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/SpecPayload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BoundedCallTreeTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Buck/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Buckets/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunChecker/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Alias/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/AliasMap/M/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/AliasMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/AliasRet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/AliasTarget/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Heap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/LatestPrune/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Mem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/MemReach/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/PrunePairs/PrunePair/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/PrunePairs/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Stack/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Summary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Val/Itv/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/Val/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/Boost/Split/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/Boost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/Call/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/Folly/Split/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/Folly/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/Split/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/StdArray/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/TypName/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunModels/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/AllocSizeCondition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/ArrayAccessCondition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/Condition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/ConditionSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/ConditionTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/ConditionWithTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunProofObligations/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunSemantics/Prune/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunSemantics/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunTrace/BoTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunTrace/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunUtils/Check/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunUtils/Exec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BufferOverrunUtils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Builtin/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/BuiltinDefn/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CArithmetic_trans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CAst_utils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CContext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CEnum_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CField_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_checkers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_checkers_main/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_decl/CFrontend_decl_funct/argument-1-T/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_decl/CFrontend_decl_funct/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_errors/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CFrontend_errorsTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CGeneral_utils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CIssue/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CLintersContext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CLocation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CMethodProperties/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CMethodSignature/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CMethod_trans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CModule_type/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CModule_type/module-type-CFrontend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CModule_type/module-type-CTranslation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CPredicates/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTL/Debug/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTLExceptions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTLParserHelper/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans/CTrans_funct/argument-1-F/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans/CTrans_funct/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_models/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/GotoLabel/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/Loops/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/Nodes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/PriorityNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/Scope/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/Self/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CTrans_utils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CType_decl/CProcname/NoAstDecl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CType_decl/CProcname/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CType_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CType_to_sil_type/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CVar_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Callbacks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Capture/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CaptureCompilationDatabase/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Checkers/ST/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Checkers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CiOSVersionNumbers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CiOSVersionNumbersTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Clang/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangCommand/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangLogging/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Provide_bin_io/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Provide_bin_io/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Provide_hash/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Provide_hash/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Provide_of_sexp/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Provide_of_sexp/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Tree/Provide_of_sexp/argument-1-K/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Tree/Provide_of_sexp/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/Tree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/Map/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangPointers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangQuotes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ClangWrapper/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Clang_ast_extend/TypePointerMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Clang_ast_extend/TypePointerOrd/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Clang_ast_extend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CompilationDatabase/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ComponentKit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/ControlDepAnalyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepAnalyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/DataDepMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/TransferFunctionsControlDeps/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/TransferFunctionsControlDeps/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/TransferFunctionsControlDeps/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/TransferFunctionsDataDeps/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/TransferFunctionsDataDeps/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/TransferFunctionsDataDeps/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/VarSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Control/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerNodesBasicCost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/AnalyzerWCET/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/BoundMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/InstrCFGScheduler/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/InstrCFGScheduler/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/InstrCFGScheduler/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/InstrCFGScheduler/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/InstrCFGScheduler/WorkUnit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/InstrCFGScheduler/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/MinTree/BuiltTreeMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/MinTree/SetOfSetsOfNodes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/MinTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/ReportedOnNodes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/StructuralConstraints/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/TransferFunctionsNodesBasicCost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/TransferFunctionsWCET/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/TransferFunctionsWCET/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Cost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CostDomain/NodeInstructionToCostMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/CostDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Crashcontext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Ctl_lexer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Ctl_parser/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Ctl_parser_types/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dataflow/MakeDF/argument-1-St/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dataflow/MakeDF/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dataflow/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dataflow/module-type-DF/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dataflow/module-type-DFStateType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Diff/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Differential/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialFilters/FileRenamings/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialFilters/FileRenamings/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialFilters/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialFilters/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialFiltersTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/DifferentialTestsUtils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dom/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Dotty/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Driver/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Eradicate/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Eradicate/module-type-CallBackT/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Eradicate/module-type-ExtensionT/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/EradicateChecks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Errdesc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Exe_env/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/FbThreadSafety/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/FileDiffTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/FormalMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/FragmentRetainsViewChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/IdAccessPathMapDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Idenv/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ImmutableChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/InferAnalyze/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/InferPrint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Inferconfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Interproc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/IssueAuxData/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/Boolean/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/Bound/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/Counter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/ItvPure/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/ItvRange/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/NonNegativePolynomial/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/Symbol/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Itv/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JAnnotation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JClasspath/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JContext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JFrontend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JMain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JTrans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JTransExn/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JTransType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaProfilerSamples/JNI/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaProfilerSamples/JNI/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaProfilerSamples/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaProfilerSamplesTest/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JavaTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Javac/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/JoinState/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/GraphQLGetters/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/LithoFramework/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/RequiredProps/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Litho/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LithoDomain/CallSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LithoDomain/LocalAccessPath/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LithoDomain/MethodCall/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LithoDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefAnalyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefTransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefTransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/CapturedByRefTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/VarSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Liveness/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LivenessTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/DefaultConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-1-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-1-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-1-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-1-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-1-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-1-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-2-HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-3-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/argument-3-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-1-HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-2-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-2-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/MakeAbstractInterpreterWithConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/LowerHil/module-type-HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Match/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Maven/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/MergeCapture/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ModelTables/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Models/Inference/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Models/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/NodePrinter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/NullabilityCheck/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/NullabilityPreanalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/NullabilitySuggest/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ObjcCategory_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ObjcInterface_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ObjcMethod_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ObjcProperty_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ObjcProtocol_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Ondemand/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/OndemandCapture/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Ownership/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Passthrough/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Paths/Path/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Paths/PathSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Paths/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/PatternMatch/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Payloads/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/PerfStats/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Preanal/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Printer/LineReader/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Printer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/PrintfArgs/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/Backward/argument-1-Base/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/Backward/argument-1-Base/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/Backward/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/DefaultNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/Exceptional/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/InstrNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/Normal/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/NormalOneInstrPerNode/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/NormalOneInstrPerNode/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/NormalOneInstrPerNode/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/NormalOneInstrPerNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/OneInstrPerNode/argument-1-Base/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/OneInstrPerNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/module-type-Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/module-type-S/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfg/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardCfg/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardCfg/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardCfg/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardInstrCfg/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardInstrCfg/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardInstrCfg/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/BackwardInstrCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/InstrCfg/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/InstrCfg/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/InstrCfg/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/InstrCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcCfgTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ProcData/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Procedures/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Prop/CategorizePreconditions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Prop/Metrics/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Prop/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/PropUtil/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Propgraph/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Propset/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Prover/Subtyping_check/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Prover/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/PythonMain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QualifiedCppNameTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandaryConfig/Endpoint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandaryConfig/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandaryConfig/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandaryConfig/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandaryConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/Clang/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/Clang/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/Clang/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/Java/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/Java/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/Java/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/QuandarySummary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerD/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDConfig/Models/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/Access/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/AccessDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/AccessSnapshot/OwnershipPrecondition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/AccessSnapshot/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/Attribute/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/AttributeMapDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/AttributeSetDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/Choice/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/LocksDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/OwnershipAbstractValue/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/OwnershipDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/PathDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/StabilityDomain/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/StabilityDomain/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/StabilityDomain/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/StabilityDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/ThreadsDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RacerDDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Rearrange/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RegisterCheckers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ReportDiff/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Reporting/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeakDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/ResourceLeaks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RetainCycles/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/RetainCyclesType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sanitizer/Dummy/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sanitizer/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/ReversePostorder/WorkUnit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/ReversePostorder/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/ReversePostorder/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/ReversePostorder/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/module-type-Make/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/module-type-Make/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/module-type-Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/module-type-S/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/module-type-S/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Scheduler/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/MockNode/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/MockNode/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/MockNode/OrderedId/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/MockNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/MockProcCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/S/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/S/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/S/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/S/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/S/WorkUnit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SchedulerTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SimpleChecker/Make/argument-1-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SimpleChecker/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SimpleChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SimpleChecker/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SimpleChecker/module-type-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/Make/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/Make/argument-1-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/module-type-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/module-type-S/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Sink/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/argument-1-TraceElem/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/argument-1-TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/MakeSink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/MakeSink/argument-1-TraceElem/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/MakeSink/argument-1-TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/MakeSink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SinkTrace/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Siof/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofDomain/Summary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofDomain/VarNames/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SiofTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/Dummy/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/Dummy/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/Make/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/Make/argument-1-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/module-type-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/module-type-S/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Source/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Stacktrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StacktraceTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Starvation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/Event/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/EventDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/Lock/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/LockState/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/Order/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/OrderDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/UIThreadDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StarvationDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/State/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/StatsAggregator/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Summary/Stats/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Summary/Status/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Summary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SummaryPayload/Make/argument-1-P/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SummaryPayload/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SummaryPayload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SummaryPayload/module-type-Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SummaryPayload/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SwitchCase/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SymExec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/SymExecBlocks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Tableaux/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Tabulation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/Trace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/argument-1-TaintSpecification/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/AccessTree/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/AccessTree/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/Trace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintSpec/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TaintDomain/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TaintDomain/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TaintDomain/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TaintDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sink/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Source/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sink/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Source/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/MockTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TaintTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Tasks/Runner/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Tasks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TestDeterminator/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Timeout/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/argument-1-Spec/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/argument-1-Spec/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/argument-1-Spec/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/argument-1-Spec/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/argument-1-Spec/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/argument-1-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-Spec/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-Spec/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-Spec/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-Spec/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-Spec/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Trace/module-type-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceElem/module-type-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceElem/module-type-S/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceElem/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockSink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockSource/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockSource/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockSource/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sink/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Source/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTraceElem/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTraceElem/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/MockTraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TraceTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-HIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-HIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-HIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-HIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeHIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeHIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeHIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeHIL/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeHIL/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeHIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeSIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeSIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeSIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeSIL/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeSIL/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-MakeSIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-S/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-S/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-S/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-SIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-SIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-SIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TransferFunctions/module-type-SIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeAnnotation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeCheck/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeErr/InstrRef/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeErr/Strict/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeErr/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeErr/module-type-InstrRefT/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeOrigin/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/TypeState/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Types_lexer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Types_parser/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/AliasedVars/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/RecordDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/UninitVars/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/Uninit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/Record/argument-1-Domain1/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/Record/argument-2-Domain2/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/Record/argument-3-Domain3/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/Record/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/VarPair/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/UninitDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ALVar/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ALVar/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Abs/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Abs/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbsLoc/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbsLoc/Allocsite/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbsLoc/Loc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbsLoc/PowLoc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbsLoc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Absarray/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Absarray/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/BooleanAnd/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/BooleanOr/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/BottomLifted/argument-1-Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/BottomLifted/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/CountDomain/argument-1-MaxCount/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/CountDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/FiniteSet/argument-1-Element/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/FiniteSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/FiniteSetOfPPSet/argument-1-PPSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/FiniteSetOfPPSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/InvertedMap/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/InvertedMap/argument-2-ValueDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/InvertedMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/InvertedSet/argument-1-Element/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/InvertedSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Map/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Map/argument-2-ValueDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Map/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/MapOfPPMap/argument-1-PPMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/MapOfPPMap/argument-2-ValueDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/MapOfPPMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Pair/argument-1-Domain1/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Pair/argument-2-Domain2/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Pair/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/StackDomain/argument-1-Element/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/StackDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/TopLifted/argument-1-Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/TopLifted/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/Types/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/module-type-MaxCount/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/module-type-WithBottom/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractDomain/module-type-WithTop/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-2-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-2-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-2-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-2-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-2-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/argument-2-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-1-Scheduler/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-1-Scheduler/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-1-Scheduler/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/argument-2-TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/MakeNoCFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/module-type-S/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/module-type-S/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/module-type-S/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/module-type-S/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreter/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/ExceptionalTestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/NormalTestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/PathCountDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/PathCountTransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/PathCountTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AbstractInterpreterTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathDomains/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathDomains/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathDomains/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathTestUtils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathTestUtils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessPathTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/DefaultConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/Make/argument-1-TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/Make/argument-2-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/PathSet/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/PathSet/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/PathSet/argument-1-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/PathSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/module-type-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/module-type-S/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTree/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/Domain/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/Domain/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/MakeTree/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/MakeTree/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/MakeTree/argument-1-Config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/MakeTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/MockTraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AccessTreeTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTaken/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AddressTakenTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-2-T/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-2-T/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-2-T/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-2-T/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-2-T/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/argument-2-T/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/StructuredSil/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnalyzerTester/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AndroidFramework/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AndroidFramework/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotReachabilityDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotReachabilityDomain/CallSites/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotReachabilityDomain/SinkMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotReachabilityDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotatedSignature/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotatedSignature/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotationReachability/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__AnnotationReachability/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Annotations/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Annotations/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ArrayBlk/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ArrayBlk/ArrInfo/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ArrayBlk/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ast_expressions/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ast_expressions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Attribute/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Attribute/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BiabductionSummary/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BiabductionSummary/Jprop/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BiabductionSummary/NormSpec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BiabductionSummary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/SpecPayload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BoundedCallTreeTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Buck/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Buck/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Buckets/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Buckets/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunChecker/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunChecker/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Alias/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/AliasMap/M/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/AliasMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/AliasRet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/AliasTarget/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Heap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/LatestPrune/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Mem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/MemReach/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/PrunePairs/PrunePair/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/PrunePairs/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Stack/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Summary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Val/Itv/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/Val/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/Boost/Split/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/Boost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/Call/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/Folly/Split/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/Folly/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/Split/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/StdArray/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/TypName/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunModels/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/AllocSizeCondition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/ArrayAccessCondition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/Condition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/ConditionSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/ConditionTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/ConditionWithTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunProofObligations/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunSemantics/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunSemantics/Prune/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunSemantics/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunTrace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunTrace/BoTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunTrace/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunUtils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunUtils/Check/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunUtils/Exec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BufferOverrunUtils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Builtin/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Builtin/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BuiltinDefn/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__BuiltinDefn/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CArithmetic_trans/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CArithmetic_trans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CAst_utils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CAst_utils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CContext/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CContext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CEnum_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CEnum_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CField_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CField_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_checkers/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_checkers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_checkers_main/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_checkers_main/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_config/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_config/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_decl/CFrontend_decl_funct/argument-1-T/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_decl/CFrontend_decl_funct/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_errors/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_errors/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_errorsTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CFrontend_errorsTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CGeneral_utils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CGeneral_utils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CIssue/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CIssue/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CLintersContext/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CLintersContext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CLocation/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CLocation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CMethodProperties/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CMethodProperties/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CMethodSignature/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CMethodSignature/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CMethod_trans/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CMethod_trans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CModule_type/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CModule_type/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CModule_type/module-type-CFrontend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CModule_type/module-type-CTranslation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CPredicates/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CPredicates/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTL/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTL/Debug/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTLExceptions/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTLExceptions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTLParserHelper/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTLParserHelper/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans/CTrans_funct/argument-1-F/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans/CTrans_funct/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_models/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_models/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/GotoLabel/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/Loops/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/Nodes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/PriorityNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/Scope/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/Self/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CTrans_utils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType_decl/CProcname/NoAstDecl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType_decl/CProcname/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType_to_sil_type/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CType_to_sil_type/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CVar_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CVar_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Callbacks/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Callbacks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Capture/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Capture/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CaptureCompilationDatabase/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CaptureCompilationDatabase/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Checkers/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Checkers/ST/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Checkers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CiOSVersionNumbers/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CiOSVersionNumbers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CiOSVersionNumbersTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CiOSVersionNumbersTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Clang/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Clang/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangCommand/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangCommand/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangLogging/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangLogging/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Provide_bin_io/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Provide_bin_io/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Provide_hash/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Provide_hash/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Provide_of_sexp/argument-1-Key/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Provide_of_sexp/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Tree/Provide_of_sexp/argument-1-K/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Tree/Provide_of_sexp/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/Tree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/Map/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangPointers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangQuotes/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangQuotes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTaintAnalysis/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangWrapper/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ClangWrapper/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Clang_ast_extend/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Clang_ast_extend/TypePointerMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Clang_ast_extend/TypePointerOrd/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Clang_ast_extend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CompilationDatabase/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CompilationDatabase/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ComponentKit/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ComponentKit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/ControlDepAnalyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepAnalyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/DataDepMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/TransferFunctionsControlDeps/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/TransferFunctionsControlDeps/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/TransferFunctionsControlDeps/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/TransferFunctionsDataDeps/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/TransferFunctionsDataDeps/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/TransferFunctionsDataDeps/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/VarSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Control/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerNodesBasicCost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/AnalyzerWCET/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/BoundMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/InstrCFGScheduler/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/InstrCFGScheduler/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/InstrCFGScheduler/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/InstrCFGScheduler/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/InstrCFGScheduler/WorkUnit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/InstrCFGScheduler/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/MinTree/BuiltTreeMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/MinTree/SetOfSetsOfNodes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/MinTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/ReportedOnNodes/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/StructuralConstraints/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/TransferFunctionsNodesBasicCost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/TransferFunctionsWCET/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/TransferFunctionsWCET/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Cost/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CostDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CostDomain/NodeInstructionToCostMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__CostDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Crashcontext/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Crashcontext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ctl_lexer/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ctl_lexer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ctl_parser/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ctl_parser/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ctl_parser_types/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ctl_parser_types/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dataflow/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dataflow/MakeDF/argument-1-St/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dataflow/MakeDF/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dataflow/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dataflow/module-type-DF/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dataflow/module-type-DFStateType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Diff/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Diff/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Differential/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Differential/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFilters/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFilters/FileRenamings/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFilters/FileRenamings/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFilters/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFilters/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFiltersTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialFiltersTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialTestsUtils/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__DifferentialTestsUtils/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dom/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dom/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dotty/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Dotty/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Driver/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Driver/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Eradicate/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Eradicate/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Eradicate/module-type-CallBackT/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Eradicate/module-type-ExtensionT/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__EradicateChecks/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__EradicateChecks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Errdesc/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Errdesc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Exe_env/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Exe_env/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FbThreadSafety/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FbThreadSafety/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FileDiffTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FileDiffTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FormalMap/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FormalMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FragmentRetainsViewChecker/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__FragmentRetainsViewChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__IdAccessPathMapDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__IdAccessPathMapDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Idenv/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Idenv/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ImmutableChecker/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ImmutableChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__InferAnalyze/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__InferAnalyze/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__InferPrint/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__InferPrint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Inferconfig/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Inferconfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Interproc/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Interproc/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__IssueAuxData/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__IssueAuxData/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/Boolean/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/Bound/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/Counter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/ItvPure/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/ItvRange/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/NonNegativePolynomial/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/Symbol/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Itv/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JAnnotation/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JAnnotation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JClasspath/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JClasspath/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JConfig/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JContext/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JContext/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JFrontend/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JFrontend/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JMain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JMain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JTrans/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JTrans/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JTransExn/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JTransExn/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JTransType/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JTransType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaProfilerSamples/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaProfilerSamples/JNI/VISIBLE_FOR_TESTING_DO_NOT_USE_DIRECTLY/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaProfilerSamples/JNI/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaProfilerSamples/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaProfilerSamplesTest/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaProfilerSamplesTest/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTaintAnalysis/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JavaTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Javac/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Javac/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JoinState/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__JoinState/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/GraphQLGetters/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/LithoFramework/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/RequiredProps/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Litho/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LithoDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LithoDomain/CallSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LithoDomain/LocalAccessPath/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LithoDomain/MethodCall/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LithoDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefAnalyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefTransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefTransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/CapturedByRefTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/VarSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Liveness/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LivenessTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/DefaultConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-1-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-1-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-1-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-1-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-1-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-1-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-2-HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-3-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/argument-3-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/argument-2-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-1-HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-2-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-2-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/argument-3-MakeTransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/MakeAbstractInterpreterWithConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__LowerHil/module-type-HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Match/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Match/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Maven/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Maven/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__MergeCapture/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__MergeCapture/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ModelTables/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ModelTables/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Models/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Models/Inference/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Models/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NodePrinter/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NodePrinter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NullabilityCheck/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NullabilityCheck/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NullabilityPreanalysis/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NullabilityPreanalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NullabilitySuggest/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__NullabilitySuggest/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcCategory_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcCategory_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcInterface_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcInterface_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcMethod_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcMethod_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcProperty_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcProperty_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcProtocol_decl/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ObjcProtocol_decl/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ondemand/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ondemand/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__OndemandCapture/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__OndemandCapture/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ownership/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Ownership/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Passthrough/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Passthrough/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Paths/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Paths/Path/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Paths/PathSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Paths/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PatternMatch/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PatternMatch/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Payloads/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Payloads/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PerfStats/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PerfStats/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Preanal/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Preanal/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Printer/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Printer/LineReader/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Printer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PrintfArgs/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PrintfArgs/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/Backward/argument-1-Base/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/Backward/argument-1-Base/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/Backward/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/DefaultNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/Exceptional/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/InstrNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/Normal/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/NormalOneInstrPerNode/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/NormalOneInstrPerNode/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/NormalOneInstrPerNode/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/NormalOneInstrPerNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/OneInstrPerNode/argument-1-Base/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/OneInstrPerNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/module-type-Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/module-type-S/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfg/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardCfg/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardCfg/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardCfg/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardInstrCfg/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardInstrCfg/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardInstrCfg/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/BackwardInstrCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/InstrCfg/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/InstrCfg/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/InstrCfg/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/InstrCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcCfgTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcData/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ProcData/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Procedures/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Procedures/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prop/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prop/CategorizePreconditions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prop/Metrics/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prop/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PropUtil/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PropUtil/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Propgraph/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Propgraph/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Propset/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Propset/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prover/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prover/Subtyping_check/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Prover/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PythonMain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__PythonMain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QualifiedCppNameTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QualifiedCppNameTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandaryConfig/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandaryConfig/Endpoint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandaryConfig/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandaryConfig/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandaryConfig/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandaryConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/Clang/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/Clang/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/Clang/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/Java/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/Java/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/Java/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__QuandarySummary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerD/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerD/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDConfig/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDConfig/Models/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/Access/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/AccessDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/AccessSnapshot/OwnershipPrecondition/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/AccessSnapshot/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/Attribute/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/AttributeMapDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/AttributeSetDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/Choice/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/LocksDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/OwnershipAbstractValue/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/OwnershipDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/PathDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/StabilityDomain/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/StabilityDomain/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/StabilityDomain/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/StabilityDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/ThreadsDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RacerDDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Rearrange/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Rearrange/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RegisterCheckers/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RegisterCheckers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ReportDiff/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ReportDiff/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Reporting/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Reporting/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeakDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeakDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__ResourceLeaks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RetainCycles/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RetainCycles/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RetainCyclesType/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__RetainCyclesType/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sanitizer/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sanitizer/Dummy/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sanitizer/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/ReversePostorder/WorkUnit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/ReversePostorder/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/ReversePostorder/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/ReversePostorder/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/module-type-Make/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/module-type-Make/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/module-type-Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/module-type-S/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/module-type-S/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Scheduler/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/MockNode/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/MockNode/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/MockNode/OrderedId/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/MockNode/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/MockProcCfg/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/S/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/S/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/S/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/S/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/S/WorkUnit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SchedulerTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SimpleChecker/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SimpleChecker/Make/argument-1-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SimpleChecker/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SimpleChecker/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SimpleChecker/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SimpleChecker/module-type-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/Make/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/Make/argument-1-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/module-type-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/module-type-S/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Sink/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/argument-1-TraceElem/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/argument-1-TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/MakeSink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/MakeSink/argument-1-TraceElem/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/MakeSink/argument-1-TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/MakeSink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SinkTrace/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Siof/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Siof/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofDomain/Summary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofDomain/VarNames/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SiofTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/Dummy/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/Dummy/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/Make/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/Make/argument-1-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/module-type-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/module-type-S/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Source/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Stacktrace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Stacktrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StacktraceTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StacktraceTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Starvation/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Starvation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/Event/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/EventDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/Lock/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/LockState/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/Order/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/OrderDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/UIThreadDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StarvationDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__State/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__State/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StatsAggregator/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__StatsAggregator/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Summary/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Summary/Stats/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Summary/Status/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Summary/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SummaryPayload/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SummaryPayload/Make/argument-1-P/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SummaryPayload/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SummaryPayload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SummaryPayload/module-type-Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SummaryPayload/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SwitchCase/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SwitchCase/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SymExec/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SymExec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SymExecBlocks/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__SymExecBlocks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tableaux/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tableaux/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tabulation/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tabulation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/Trace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/argument-1-TaintSpecification/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/AccessTree/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/AccessTree/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/AccessTree/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/Trace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintSpec/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/InvariantMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/Interpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/HilConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TaintDomain/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TaintDomain/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TaintDomain/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TaintDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sink/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Source/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTaintAnalysis/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sink/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Source/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/MockTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/I/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/TestInterpreter/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TaintTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tasks/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tasks/Runner/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Tasks/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TestDeterminator/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TestDeterminator/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Timeout/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Timeout/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/argument-1-Spec/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/argument-1-Spec/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/argument-1-Spec/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/argument-1-Spec/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/argument-1-Spec/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/argument-1-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/Make/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-Spec/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-Spec/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-Spec/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-Spec/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-Spec/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Trace/module-type-Spec/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceElem/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceElem/module-type-Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceElem/module-type-S/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceElem/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockSink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockSource/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockSource/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockSource/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sanitizer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sink/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sink/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sink/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Source/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Source/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Source/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/Footprint/AccessMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/Footprint/BaseMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/Footprint/TraceDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/Footprint/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/FootprintConfig/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/Known/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/Sanitizers/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/Sources/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTrace/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTraceElem/Kind/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTraceElem/Set/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/MockTraceElem/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TraceTests/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-HIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-HIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-HIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-HIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeHIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeHIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeHIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeHIL/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeHIL/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeHIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeSIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeSIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeSIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeSIL/argument-1-C/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeSIL/argument-1-C/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-MakeSIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-S/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-S/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-S/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-S/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-SIL/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-SIL/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-SIL/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TransferFunctions/module-type-SIL/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeAnnotation/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeAnnotation/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeCheck/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeCheck/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeErr/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeErr/InstrRef/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeErr/Strict/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeErr/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeErr/module-type-InstrRefT/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeOrigin/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeOrigin/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeState/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__TypeState/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Types_lexer/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Types_lexer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Types_parser/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Types_parser/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/AliasedVars/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/TransferFunctions/CFG/Node/IdMap/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/TransferFunctions/CFG/Node/IdSet/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/TransferFunctions/CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/TransferFunctions/CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/TransferFunctions/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Analyzer/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/Payload/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/RecordDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/TransferFunctions/argument-1-CFG/Node/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/TransferFunctions/argument-1-CFG/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/TransferFunctions/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/UninitVars/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__Uninit/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/.jbuilder-keep create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/Domain/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/Record/argument-1-Domain1/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/Record/argument-2-Domain2/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/Record/argument-3-Domain3/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/Record/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/VarPair/index.html create mode 100644 website/static/odoc/0.15.0/infer/InferModules__UninitDomain/index.html create mode 100644 website/static/odoc/0.15.0/infer/index.html create mode 100644 website/static/odoc/0.15.0/odoc.css create mode 120000 website/static/odoc/latest create mode 100644 website/yarn.lock diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 000000000..a06240a37 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,50 @@ +name: Deploy + +on: + push: + branches: + - "master" + paths: + - "website/**" + +jobs: + deploy: + runs-on: ubuntu-latest + + if: github.repository == 'facebook/infer' + + env: + working-directory: website + node-version: 12.x + + steps: + - name: Checkout code + uses: actions/checkout@v2.0.0 + + - name: Use Node.js ${{ env.node-version }} + uses: actions/setup-node@v1.3.0 + with: + node-version: ${{ env.node-version }} + + - name: Get yarn cache directory + id: yarn + run: echo "::set-output name=dir::$(yarn cache dir)" + + - name: Restore yarn cache + uses: actions/cache@v1.1.0 + with: + path: ${{ steps.yarn.outputs.dir }} + # prettier-ignore + key: ${{ runner.os }}-yarn-${{ hashFiles(format('{0}{1}', github.workspace, '/website/yarn.lock')) }} + + - name: Install packages + working-directory: ${{ env.working-directory }} + run: yarn --frozen-lockfile + + - name: Deploy to GitHub Pages + working-directory: ${{ env.working-directory }} + run: | + git config --global user.email "${GITHUB_ACTOR}@users.noreply.github.com" + git config --global user.name "${GITHUB_ACTOR}" + echo "machine github.com login ${GITHUB_ACTOR} password ${{ secrets.GITHUB_TOKEN }}" > ~/.netrc + GIT_USER=${GITHUB_ACTOR} yarn deploy diff --git a/.gitignore b/.gitignore index 00b0d0809..ae86f366b 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,8 @@ duplicates.txt /infer/tests/codetoanalyze/java/classloads/loads.exp /_release /infer-source +/website/.docusaurus/ +/website/node_modules/ # generated by oUnit /oUnit-all.cache diff --git a/website/.prettierignore b/website/.prettierignore new file mode 100644 index 000000000..84ba12e04 --- /dev/null +++ b/website/.prettierignore @@ -0,0 +1,2 @@ +.docusaurus/ +build/ diff --git a/website/README.md b/website/README.md new file mode 100755 index 000000000..6881eac69 --- /dev/null +++ b/website/README.md @@ -0,0 +1,36 @@ +# Website + +This website is built using Docusaurus 2, a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and open up a browser window. +Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be +served using any static contents hosting service. + +### Deployment + +``` +$ GIT_USER= USE_SSH=1 yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to +build the website and push to the `gh-pages` branch. diff --git a/website/blog/2015-05-22-Infer-on-open-source-android-apps.md.md b/website/blog/2015-05-22-Infer-on-open-source-android-apps.md.md new file mode 100755 index 000000000..31869eeea --- /dev/null +++ b/website/blog/2015-05-22-Infer-on-open-source-android-apps.md.md @@ -0,0 +1,23 @@ +--- +title: Infer on Open Source Android Apps +author: Dulma Churchill +--- + +We ran Infer on a few open source Android apps with the aim of finding some bugs +and getting them fixed. Some of those reports got indeed fixed. + +One of the apps analyzed was the search engine +[DuckDuckGo](https://github.com/duckduckgo/android). We found that many database +cursors were not closed. Soon after we reported the issue, a developer +[fixed it](https://github.com/duckduckgo/android/commit/2c2d79f990dde0e44cdbecb1925b73c63bf9141d). + +We also analyzed the popular email client [k-9](https://github.com/k9mail/k-9). +We found a file not closed leak and reported it. Interestingly, a developer +[fixed it](https://github.com/k9mail/k-9/commit/d538278be62687758c956af62ee47c53637d67d8) +by not writing some logging info to the file at all. So Infer helped them to +simplify their code. + +[Conversations](https://github.com/siacs/Conversations) is an open source +XMPP/Jabber client for Android smart phones. We analyzed it as well and found a +file not closed leak, which was also +[fixed](https://github.com/Flowdalic/MemorizingTrustManager/commit/190c57a9a8385f4726c817924b123438af6adc2f). diff --git a/website/blog/2016-03-17-collaboration-with-spotify.md b/website/blog/2016-03-17-collaboration-with-spotify.md new file mode 100755 index 000000000..33533736e --- /dev/null +++ b/website/blog/2016-03-17-collaboration-with-spotify.md @@ -0,0 +1,60 @@ +--- +title: Collaboration with Spotify +author: Jules Villard +--- + +![Infer/Spotify collaboration](/img/blog/Infer-Spotify.png) + +Working on deploying Infer inside Facebook has taught us how important it is to +have the analysis tool deeply embedded into the developers' workflow; see our +[“Moving Fast with Software Verification” paper](https://research.facebook.com/publications/moving-fast-with-software-verification/). + +Infer runs as part of our continuous integration (CI) system, where it reports +issues on code modifications submitted for review by our engineers. We think +it's great when someone can hook up Infer to their workflow, and we're working +with several other companies to help integrate Infer into their own CI systems. +We've come far enough in a collaboration with Spotify to talk about it now! + +Last July, shortly after Infer was open-sourced, we started talking with the +Marvin (Android Infrastructure) team at Spotify. They were interested in using +Infer on their Android app, but it did not work with their build system. They +were using the [Gradle](http://gradle.org/) build system, but Infer's deployment +within Facebook is done using a different build system, Facebook's +[Buck](https://buckbuild.com/); we had only an initial, basic integration with +Gradle, which did not work with Spotify's app. A Spotify engineer, Deniz +Türkoglu, made improvements to our Gradle integration, which he submitted as a +[pull request](https://github.com/facebook/infer/pull/131) to Infer's codebase, +which is hosted on [GitHub](https://github.com/facebook/infer/). + +Then, in November 2015, two of our engineers, Dulma Churchill and Jules Villard, +traveled to the Spotify office in Stockholm to attend a Hack Week there. After +running Infer on the Spotify app, we discussed the analyzer reports with Spotify +engineers, and we agreed that they identified potential problems in the code. +Infer is now running as part of Spotify's CI system, and here is a quote from +Deniz on Spotify's perspective on Infer, which we include with his kind +permission. + +> “At Spotify we are continuously working on making our codebase better, and in +> the Android infrastructure team we use a lot of tools: static analyzers, +> linters, thread/address sanitizers, etc. In our quest to make our code even +> better, we started using Infer. Infer found several legitimate issues that +> other tools had missed. The Infer team was also very helpful in following a +> few false positives that we encountered, and we now have it running on our +> build servers. +> +> Infer is a great add-on to a company's toolbox. It's not intrusive — you can +> simply add it to your flow and it will tell you where you forgot to close that +> cursor or leaked that context. If you find a false positive, just report it +> or, even better, make a PR. With more users, it will just keep getting +> better.” + +This collaboration was truly a two-way street: Not only does Infer find issues +in Spotify, which helps improve its Android app, but feedback from Spotify led +to several improvements in Infer, including resolution of false positives and +improvements of Infer's UI and integration with Gradle. The better Gradle +integration will make it easier for other people to run Infer on lots of other +apps around the world. + +We're excited to collaborate with other companies and individuals to help make +the world's software better. If you are interested in integrating Infer into CI +or otherwise hearing about our experience, [drop us a line](/docs/support)! diff --git a/website/blog/2016-04-07-mobileatscale-london-talk.md b/website/blog/2016-04-07-mobileatscale-london-talk.md new file mode 100644 index 000000000..d57fe455a --- /dev/null +++ b/website/blog/2016-04-07-mobileatscale-london-talk.md @@ -0,0 +1,8 @@ +--- +title: Talk at Mobile@Scale London +author: Dulma Churchill +authorURL: +authorFBID: +--- + + diff --git a/website/blog/2016-06-23-first-opensourceversary.md b/website/blog/2016-06-23-first-opensourceversary.md new file mode 100644 index 000000000..14e785678 --- /dev/null +++ b/website/blog/2016-06-23-first-opensourceversary.md @@ -0,0 +1,44 @@ +--- +title: Open Sourcing Infer, 1 Year On +author: Jules Villard +--- + +It's been a little over a year ago since we +[open-sourced Infer](https://github.com/facebook/infer/commit/b8982270f2423864c236ff8dcdbeb5cd82aa6002) +on 9 June 2016! + +The Infer GitHub repo has seen a lot of activity since then: + +- 5350 stars on [GitHub](https://github.com/facebook/infer) +- 339 [issues](https://github.com/facebook/infer/issues) opened +- 44 [pull requests](https://github.com/facebook/infer/pulls) by 15 contributors +- 10 [releases](https://github.com/facebook/infer/releases/) +- 5 [external companies](/#who-uses-infer) officially using Infer (add + yourself + [here](https://github.com/facebook/infer/edit/master/website/src/pages/index.js)) + +Infer was presented at 13 academic and tech international conferences, and at 8 +universities around the world! + +Amongst these was +[Mobile@Scale](https://code.facebook.com/posts/1566627733629653/mobile-scale-london-recap/) +in March 2016, where we +[announced](/blog/2016/03/17/collaboration-with-spotify) our collaboration +with [Spotify](https://www.spotify.com/). Around the same time, +[Uber](https://www.uber.com/) presented at +[Droidcon SF](http://sf.droidcon.com/) their +[Rave](https://github.com/uber-common/rave) + Infer combo to +[help their developers move fast](https://speakerdeck.com/lukestclair/frameworks-for-coding-confidence), +and open-sourced a +[Gradle plugin for Infer](https://github.com/uber-common/infer-plugin). + +Infer has also been used to introduce static analysis to students in university +courses, including at [UCL](http://www.ucl.ac.uk/), +[Imperial College](http://www.imperial.ac.uk/), and +[Queen Mary University](http://www.qmul.ac.uk/). + +In May, [Reason](http://facebook.github.io/reason/) was released publicly and, +simultaneously, Infer became the first ever project to +[use Reason](https://github.com/facebook/infer/commit/885beed0b14e8ef4b6e8a0aa3f4239e60c4e567b)! +Reason is a new syntax for [OCaml](http://ocaml.org/), the programming language +in which Infer is written. diff --git a/website/blog/2016-08-30-curryon-rome-talk.md b/website/blog/2016-08-30-curryon-rome-talk.md new file mode 100644 index 000000000..7e69ee445 --- /dev/null +++ b/website/blog/2016-08-30-curryon-rome-talk.md @@ -0,0 +1,11 @@ +--- +title: Video of CurryOn Rome talk. Move Fast to Fix More Things +author: Peter O'Hearn +--- + +This is the video for Peter's talk at the +[Curry0n Conference](http://www.curry-on.org/2016/) in Rome in July. CurryOn is +a conference series where academia and industry get together to exchange ideas +about Programming Languages technology. + + diff --git a/website/blog/2016-11-28-atscale16.md b/website/blog/2016-11-28-atscale16.md new file mode 100644 index 000000000..1faaa3c0f --- /dev/null +++ b/website/blog/2016-11-28-atscale16.md @@ -0,0 +1,10 @@ +--- +title: Video of @Scale2016 talk. Getting the most out of static analyzers +author: Sam Blackshear +--- + +Check out the +[video](https://atscaleconference.com/videos/getting-the-most-out-of-static-analyzers) +of Sam's talk from the +[@Scale2016](https://atscaleconference.com/events/main-event) conference in San +Jose this past September. diff --git a/website/blog/2017-10-20-ocamlformat-released.md b/website/blog/2017-10-20-ocamlformat-released.md new file mode 100644 index 000000000..47ca4dc40 --- /dev/null +++ b/website/blog/2017-10-20-ocamlformat-released.md @@ -0,0 +1,26 @@ +--- +title: OCamlFormat open-source released +author: Josh Berdine +--- + +We are pleased to announce the first public release of OCamlFormat. + +OCamlFormat is a tool to automatically format [OCaml](https://ocaml.org/) code. +It follows the same basic design as refmt for +[Reason](https://reasonml.github.io/) code, but for OCaml. In particular, it +works by parsing source code using the OCaml compiler's standard parser, +deciding where to place comments in the parsetree, and printing the parsetree +and comments in a uniform style. + +At Facebook, we currently use this for the OCaml code of +[Infer](https://github.com/facebook/infer) to enable developers to stop thinking +about line breaking, indentation, parenthesization, etc., to minimize stylistic +nit-picking during code review, and to make it as visually obvious as possible +when the parser's interpretation of code does not match the programmer's. We use +this both with integration with editors as well as a pre-commit hook. + +Development is taking place on +[github](http://github.com/ocaml-ppx/ocamlformat). License is MIT. + +See the [github page](http://github.com/ocaml-ppx/ocamlformat) for more info on +installation, documentation, contributing, etc. diff --git a/website/docs/00-getting-started.md b/website/docs/00-getting-started.md new file mode 100755 index 000000000..aaa288fb3 --- /dev/null +++ b/website/docs/00-getting-started.md @@ -0,0 +1,47 @@ +--- +id: getting-started +title: Getting started with Infer +--- + +## Get Infer + +You can use Homebrew (Mac only), our binary releases, build infer from source, +or use our Docker image. + +On Mac, the simplest way is to use [Homebrew](http://brew.sh/). Type this into a terminal: + +```sh +brew install infer +``` + +On Linux, or if you do not wish to use Homebrew on Mac, use our latest +[binary release](https://github.com/facebook/infer/releases/latest). Download +the tarball then extract it anywhere on your system to start using infer. For +example, this downloads infer in /opt on Linux (replace `VERSION` with the +latest release, eg `VERSION=0.17.0`): + +```bash +VERSION=0.XX.Y; \ +curl -sSL "https://github.com/facebook/infer/releases/download/v$VERSION/infer-linux64-v$VERSION.tar.xz" \ +| sudo tar -C /opt -xJ && \ +ln -s "/opt/infer-linux64-v$VERSION/bin/infer" /usr/local/bin/infer +``` + +If the binaries do not work for you, or if you would rather build infer from +source, follow the +[install from source](https://github.com/facebook/infer/blob/master/INSTALL.md#install-infer-from-source) +instructions to install Infer on your system. + +Alternatively, use our [Docker](https://docs.docker.com/engine/installation/) +image: + +```bash +wget -O Dockerfile https://raw.githubusercontent.com/facebook/infer/master/docker/0.14.0/Dockerfile +wget -O run.sh https://raw.githubusercontent.com/facebook/infer/master/docker/0.14.0/run.sh +sh run.sh +``` + +## Try Infer in your browser + +Try Infer on a small example on +[Codeboard](https://codeboard.io/projects/11587?view=2.1-21.0-22.0). diff --git a/website/docs/00-hello-world.md b/website/docs/00-hello-world.md new file mode 100644 index 000000000..259d8a076 --- /dev/null +++ b/website/docs/00-hello-world.md @@ -0,0 +1,350 @@ +--- +id: hello-world +title: Hello, World! +--- + +Follow the instructions in this page to try Infer on a few small examples. You +should be able to see the bugs reported by Infer, fix the bugs and run Infer +again to check that they are not reported anymore. This should give you a first +idea of how Infer works. See the [User Guide](infer-workflow) for more +details about the use of Infer. + +All these examples can be found in the +[`infer/examples`](https://github.com/facebook/infer/tree/master/examples) +directory distributed with Infer. + +- [Hello world Java](hello-world#hello-world-java) +- [Hello world Objective-C](hello-world#hello-world-objective-c) +- [Hello world C](hello-world#hello-world-c) +- [Hello world Android](hello-world#hello-world-android) +- [Hello world iOS](hello-world#hello-world-ios) +- [Hello world Make](hello-world#hello-world-make) + +## Hello world Java + +Here is a simple Java example to illustrate Infer at work. + +```java +// Hello.java +class Hello { + int test() { + String s = null; + return s.length(); + } +} +``` + +To run Infer, type the following in your terminal from the same directory as +[`Hello.java`](https://github.com/facebook/infer/tree/master/examples/Hello.java). + +```bash +infer run -- javac Hello.java +``` + +You should see the following error reported by Infer. + +```bash +Hello.java:5: error: NULL_DEREFERENCE + object s last assigned on line 4 could be null and is dereferenced at line 5 +``` + +Now edit the file to add null checks: + +```java + int test() { + String s = null; + return s == null ? 0 : s.length(); + } +``` + +Run Infer again. This time we get no error: Infer reports `No issues found`. + +## Hello world Objective-C + +Here is a simple Objective-C example to illustrate Infer at work. + +```objectivec +// Hello.m +#import + +@interface Hello: NSObject +@property NSString* s; +@end + +@implementation Hello +NSString* m() { + Hello* hello = nil; + return hello->_s; +} +@end +``` + +To run Infer, type the following in your terminal from the same directory as +[`Hello.m`](https://github.com/facebook/infer/tree/master/examples/Hello.m). + +```bash +infer run -- clang -c Hello.m +``` + +You should see the following error reported by Infer. + +``` +Hello.m:10 NULL_DEREFERENCE + pointer hello last assigned on line 9 could be null and is dereferenced at line 10, column 12 +``` + +Now edit the file to use the getter instead of accessing the instance variable: + +```objectivec +NSString* m() { + Hello* hello = nil; + return hello.s; +} +``` + +Run Infer again. This time we get no error: Infer reports `No issues found`. + +## Hello world C + +Here is a simple C example to illustrate Infer at work. + +```c +// hello.c +#include + +void test() { + int *s = NULL; + *s = 42; +} +``` + +To run Infer, type the following in your terminal from the same directory as +[`hello.c`](https://github.com/facebook/infer/tree/master/examples/hello.c). + +```bash +infer run -- gcc -c hello.c +``` + +You should see the following error reported by Infer. + +``` +hello.c:5: error: NULL_DEREFERENCE + pointer s last assigned on line 4 could be null and is dereferenced at line 5, column 10 +``` + +Now edit the file to add null checks: + +```c +void test() { + int *s = NULL; + if (s != NULL) { + *s = 42; + } +} +``` + +Run Infer again. This time we get no error: Infer reports `No issues found`. + +When analyzing C files, Infer captures the gcc command and runs clang instead to +parse them. Thus you may get compiler errors and warnings that differ from +gcc's. So in particular, the following two commands are equivalent: + +```bash +infer run -- gcc -c hello.c +infer run -- clang -c hello.c +``` + +## Hello world Android + +To be able to analyze the sample Android app, make sure that you have the +[Android SDK](https://developer.android.com/sdk/installing/index.html) 22 +installed and up to date, as well as the "Android SDK Build-tools" and "Android +Support Repository" components. + +Go to the sample Android app in +[`infer/examples/android_hello`](https://github.com/facebook/infer/tree/master/examples/android_hello/) +and create a `local.properties` file with a single line +`sdk.dir=`. This sample Android app uses +[gradle](https://gradle.org/) as its build system. You do not need to install +gradle to try it out though, thanks to the +[`gradlew`](https://docs.gradle.org/current/userguide/gradle_wrapper.html) +script in the project that will download gradle and the project's dependencies +for you. + +After editing `local.properties`, run + +```bash +infer run -- ./gradlew build +``` + +Infer will output the list of found bugs: + +```bash +app/src/main/java/infer/inferandroidexample/MainActivity.java:29: error: NULL_DEREFERENCE + object s last assigned on line 28 could be null and is dereferenced at line 29 + 27. setContentView(R.layout.activity_main); + 28. String s = getDay(); + 29. > int length = s.length(); + 30. writeToFile(); + 31. } + 32. + +app/src/main/java/infer/inferandroidexample/MainActivity.java:46: error: RESOURCE_LEAK + resource of type java.io.FileOutputStream acquired to fis by call to FileOutputStream(...) at line 43 is not released after line 46 + 44. fis.write(arr); + 45. fis.close(); + 46. > } catch (IOException e) { + 47. //Deal with exception + 48. } + 49. + +app/src/main/java/infer/other/MainActivity.java:23: error: NULL_DEREFERENCE + object returned by source() could be null and is dereferenced at line 23 + 21. @Override + 22. protected void onCreate(Bundle savedInstanceState) { + 23. > source().toString(); + 24. } + 25. + +``` + +### Differential analysis + +If you run Infer again without changing any files, you will notice that this +time nothing gets analyzed. This is because gradle is _incremental_: everything +was compiled already so nothing gets recompiled. Infer captures the compilation +commands to know which files to analyze, hence it analyzes nothing in this case. +There are three solutions to remedy this: + +1. Run gradlew clean in between Infer runs. + + ```bash + ./gradlew clean + ``` + + This causes gradle to recompile everything each time, and subsequently Infer + to capture all the files again. + +2. Run Infer indicating that the capture of compilation commands should + continue, using option `--continue` (or `-c` for short). + + ```bash + infer run --continue -- ./gradlew build + ``` + +This makes Infer add the effects of the new compilation commands to the previous +ones, and start a new analysis of the entire code. + +3. Run Infer in reactive mode after a code change, using option `--reactive` (or + `-r` for short). + + ```bash + infer run --reactive -- ./gradlew build + ``` + +This makes Infer analyze the effects of the code change, without re-analyzing +everything. Note that only the modified files, and those dependent on them, are +re-analyzed. This analysis mode can be significantly faster. + +You can learn more about the particulars of each solution in the +[Infer workflow](docs/infer-workflow.html) page. + +## Hello world iOS + +Go to the sample iOS app in +[`infer/examples/ios_hello`](https://github.com/facebook/infer/tree/master/examples/ios_hello/) +and run Infer on it: + +```bash +infer run -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator +``` + +Infer will output the list of found bugs: + +```bash +AppDelegate.m:20: error: MEMORY_LEAK + memory dynamically allocated to shadowPath by call to CGPathCreateWithRect() at line 20, column 28 is not reachable after line 20, column 5 + +AppDelegate.m:25: error: RESOURCE_LEAK + resource acquired to fp by call to fopen() at line 25, column 8 is not released after line 25, column 5 + +AppDelegate.m:29: warning: PARAMETER_NOT_NULL_CHECKED + Parameter callback is not checked for null, there could be a null pointer dereference: pointer callback could be null and is dereferenced at line 29, column 5 + +AppDelegate.m:34: error: NULL_DEREFERENCE + pointer str last assigned on line 33 could be null and is dereferenced at line 34, column 12 + +AppDelegate.m:39: error: PREMATURE_NIL_TERMINATION_ARGUMENT + pointer str last assigned on line 38 could be nil which results in a call to arrayWithObjects: with 1 arguments instead of 3 (nil indicates that the last argument of this variadic method has been reached) at line 39, column 12 + +Hello.m:20: error: NULL_DEREFERENCE + pointer hello last assigned on line 19 could be null and is dereferenced at line 20, column 12 + +Hello.m:25: warning: IVAR_NOT_NULL_CHECKED + Instance variable hello -> _hello is not checked for null, there could be a null pointer dereference: pointer ret_hello last assigned on line 24 could be null and is dereferenced at line 25, column 12 + +Hello.m:30: warning: PARAMETER_NOT_NULL_CHECKED + Parameter hello is not checked for null, there could be a null pointer dereference: pointer ret_hello last assigned on line 29 could be null and is dereferenced at line 30, column 12 +``` + +Similarly to the case of [gradle](docs/hello-world.html#incremental-analysis), +running the command above a second time will yield no analysis results, as +nothing gets recompiled. Either add the `--reactive` (or `-r`) flag to the +`infer` command: + +```bash +infer run --reactive -- xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator +``` + +or ask the build system to reinitialize the directory before running Infer +again, using + +```bash +xcodebuild -target HelloWorldApp -configuration Debug -sdk iphonesimulator clean +``` + +## Hello world Make + +Go to the sample C project in +[`infer/examples/c_hello`](https://github.com/facebook/infer/tree/master/examples/c_hello/) +and run Infer on it: + +```bash +infer run -- make +``` + +Infer will output the list of found bugs: + +```bash +example.c:22: error: NULL_DEREFERENCE + pointer max last assigned on line 21 could be null and is dereferenced at line 22, column 10 + +example.c:36: error: NULL_DEREFERENCE + pointer joe last assigned on line 35 could be null and is dereferenced by call to get_age() at line 36, column 10 + +example.c:45: error: RESOURCE_LEAK + resource acquired to fd by call to open() at line 41, column 12 is not released after line 45, column 5 + +example.c:51: error: MEMORY_LEAK + memory dynamically allocated to p by call to malloc() at line 51, column 14 is not reachable after line 51, column 3 + +example.c:57: error: MEMORY_LEAK + memory dynamically allocated to p by call to malloc() at line 56, column 14 is not reachable after line 57, column 3 +``` + +Similarly to the case of [gradle](docs/hello-world.html#incremental-analysis), +running `infer run -- make` a second time will yield no analysis results, as +nothing gets recompiled. Either add the `--reactive` (or `-r`) flag to the +`infer` command: + +```bash +infer run --reactive -- make +``` + +or run + +```bash +make clean +``` + +before analyzing the project again. diff --git a/website/docs/01-adding-models.md b/website/docs/01-adding-models.md new file mode 100644 index 000000000..8294fd0ba --- /dev/null +++ b/website/docs/01-adding-models.md @@ -0,0 +1,283 @@ +--- +id: adding-models +title: Adding models +--- + +## Why do we need models + +When analyzing projects with call dependencies between functions, Infer follows +the call graph to decide in which order to analyze these functions. The main +goal is to use the analysis summary of a function wherever this function is +called. On the following example: + +```c +int foo(int x) { + if (x < 42) { + return x; + } else { + return 0; + } +} + +int bar() { + return foo(24); +} + +int baz() { + return foo(54); +} +``` + +Infer starts with the analysis on `foo` and detect that this function either +returns `0` if the argument is greater than or equal to `42`, or returns the +value of the argument otherwise. With this information, Infer detects that `bar` +always returns `24` and `baz` always returns `0`. + +Now, it may happen that the code of some function is not available during the +analysis. For example, this happens when a project uses pre-compiled libraries. +The most typical case is the use of the standard library like in the following +example: + +```c +#include + +int* create() { + int *p = malloc(sizeof(int)); + if (p == NULL) exit(1); + return p; +} + +void assign(int x, int *p) { + *p = x; +} + +int* my_function() { + int *p = create(); + assign(42, p); + return p; +} +``` + +Here, Infer will start with the analysis of `create` but will not find the +source code for `malloc`. To deal with this situation, Infer relies on models of +the missing functions to proceed with the analysis. The function `malloc` is +internally modeled as either returning `NULL`, or returning a valid and +allocated pointer. Similarly, the function `exit` is modeled as terminating the +execution. Using these two models, Infer detects that `create` always returns an +allocated pointer and that `my_function` is safe. + +At this point, it is important to note that missing source code and missing +models do not make the analysis fail. Missing functions are treated as having no +effect. However, even though skipping these missing functions is fine in most +cases, there can be cases where it affects the quality of the analysis. For +example, missing models can lead to incorrect bug reports. + +Consider the case of a function `lib_exit` having the same semantics as `exit` +but defined in an pre-compiled library not part of the project being analyzed: + +```c +void lib_exit(int); + +int* create() { + int *p = malloc(sizeof(int)); + if (p == NULL) lib_exit(1); + return p; +} +``` + +In this case, Infer will not be able to know that the return statement is only +possible in the case where `p` is not null. When analyzing `my_function`, Infer +will consider the null case and report a null dereference error in the call to +`assign(42, p)`. + +Similarly, considering a function `lib_alloc` equivalent to `malloc`, and the +function `create` now defined as: + +```c +int* lib_alloc(int); + +int* create() { + int *p = lib_alloc(sizeof(int)); + return p; +} +``` + +Then Infer will not report any null dereference in `my_function`. + +## Examples of models + +### Some models for C + +Adding new models is easy. The models for C can be found in +[`infer/models/c/src/`](https://github.com/facebook/infer/tree/master/infer/models/c/src). +The file +[`libc_basic.c`](https://github.com/facebook/infer/blob/master/infer/models/c/src/libc_basic.c) +contains models for some of the most commonly encountered functions from the C +standard library. For example, the function `xmalloc`, which is essentially the +same function as `create` defined above, is modeled by: + +```c +void *xmalloc(size_t size) { + void *ret = malloc(size); + INFER_EXCLUDE_CONDITION(ret == NULL); + return ret; +} +``` + +The function `xmalloc` is modeled using `malloc` to create an allocated object +and the macro `INFER_EXCLUDE_CONDITION` used to eliminate the case where +`malloc` can return null. The list of helper functions and macros for writing +models can be found in +[`infer_builtins.c`](https://github.com/facebook/infer/blob/master/infer/models/c/src/infer_builtins.c). + +For a slightly more complex example, `realloc` is modeled as: + +```c +void *realloc(void *ptr, size_t size) { + if(ptr==0) { // if ptr in NULL, behave as malloc + return malloc(size); + } + int old_size; + int can_enlarge; + old_size = __get_array_size(ptr); // force ptr to be an array + can_enlarge = __infer_nondet_int(); // nondeterministically choose whether the current block can be enlarged + if(can_enlarge) { + __set_array_size(ptr, size); // enlarge the block + return ptr; + } + int *newblock = malloc(size); + if(newblock) { + free(ptr); + return newblock; + } + else { // if new allocation fails, do not free the old block + return newblock; + } +} +``` + +This model is based on existing models for `malloc` and `free` and three helper +functions: + +- `__get_array_size(ptr)` which allows to manipulate with a model what Infer + knows about the size of the allocated memory +- `__set_array_size(ptr, size)` to modify the information about the size of the + allocated memory +- `__infer_nondet_int()` to create a variable which can have any possible + integer value + +### For Java + +The models for Java are following the same approach and the list of helper +functions is in: + +[`infer/models/java/src/com/facebook/infer/models/InferBuiltins.java`](https://github.com/facebook/infer/blob/master/infer/models/java/src/com/facebook/infer/models/InferBuiltins.java) +[`infer/models/java/src/com/facebook/infer/models/InferUndefined.java`](https://github.com/facebook/infer/blob/master/infer/models/java/src/com/facebook/infer/models/InferUndefined.java) + +For example, Infer treats Java hash maps using a recency abstraction model: +Infer remembers the last two keys being added by `put` and checked by +`containsKey`, which can be used to make sure that no null pointer exceptions +are coming from the fact that `get(key)` returns null when `key` is not in the +map. This behavior can just be implemented via a model written in Java with the +help of few helper functions understood by Infer. These models can be found in: + +[`infer/models/java/src/java/util/HashMap.java`](https://github.com/facebook/infer/blob/master/infer/models/java/src/java/util/HashMap.java) + +and just rely on these two methods: + +- `InferUndefined.boolean_undefined()` to create a non-deterministic choice +- `(V)InferUndefined.object_undefined()` to create a non null undefined object + of type `V` + +## How to add new models + +Let's look at a toy example in Java. As explained above, models for C, +Objective-C and Java are all following the same approach. + +```java +import lib.Server; + +public class Test { + + enum Status { + SUCCESS, FAILURE, PING_FAILURE, CONNECTION_FAILURE + } + + Status convertStatus(Server s) { + switch (s.getStatus()) { + case 0: + return Status.SUCCESS; + case 1: + return Status.FAILURE; + case 2: + return Status.FAILURE; + default: // should not happen + return null; + } + } + + String statusName(Server s) { + Status status = convertStatus(s); + return status.name(); + } + +} +``` + +Assuming that the class `lib.Server` is part of a pre-compiled library, Infer +will report a null pointer exception in `statusName`. This happens whenever +`s.getStatus()` returns a value greater that `3`, in which case the default +branch of the switch statement is taken and `convertStatus` returns `null`. +However, we know from the documentation that the method `lib.Server.getStatus` +can only return `0`, `1`, or `2`. A possible approach would be to use an +assertion like the Guava `Preconditions.checkState` to inform Infer about the +invariant: + +```java +Status convertStatus(Server s) { + int serverStatus = s.getStatus(); + Preconditions.checkState(serverStatus >= 0 && serverStatus < 3); + switch (s.getStatus()) { + ... + } +} +``` + +However, in the case where adding preconditions is not possible, we can then +write a model for `getStatus()` in order to make the analysis more precise. + +To create a model for `getStatus()`, we need to add a class with the name and +the same package as for the original method. In this example: + +- create a file `infer/models/java/src/infer/models/Server.java` with the + following content: + +```java +package infer.models; + +import com.facebook.infer.models.InferBuiltins; +import com.facebook.infer.models.InferUndefined; + +public class Server { + + public int getStatus() { + int status = InferUndefined.int_undefined(); + InferBuiltins.assume(status >= 0 && status < 3); + return status; + } +} +``` + +- recompile infer: + + ```bash + make -C infer + ``` + +- run the analysis again: + + ```bash + infer run -- javac Test.java + ``` + +Now it should no longer report a null pointer exception. diff --git a/website/docs/01-advanced-features.md b/website/docs/01-advanced-features.md new file mode 100644 index 000000000..08f97cf99 --- /dev/null +++ b/website/docs/01-advanced-features.md @@ -0,0 +1,145 @@ +--- +id: advanced-features +title: Advanced usage +--- + +In this section we discuss how to use Infer if you wish to make contributions to +it or just look under the hood to learn more about how it is working. There are, +for instance, debug options and ways to obtain the specs from the methods. + +## Structure of the results folder + +After a successful Infer run, a directory is created to store the results of the +analysis. By default this directory is called `infer-out`. + +``` +infer-out +├── captured/ +├── log/ +├── specs/ +├── bugs.txt +├── report.json +├── toplevel.log +└── ... +``` + +- `captured/` contains information for each file analyzed by Infer. See + [below](advanced-features#captured-folder) for more information. +- `specs/` contains the [specs](advanced-features#print-the-specs) of + each function that was analyzed, as inferred by Infer. +- `log/` and toplevel.log contains logs +- `bugs.txt` and `report.json` contain the Infer reports in text and JSON + formats +- there are other folders reserved for Infer's internal workings + +### Captured folder + +Inside the folder `infer-out/captured` there is a folder for each captured file. +Assume we captured a file called `example.c`. Then, Infer creates the following +files inside the folder `infer-out/captured/example.c/`: + +- `example.c.cfg` +- `example.c.cg` +- `example.c.tenv` + +The files `.cfg`, `.cg` and `.tenv` contain the intermediate representation of +that file. This data is passed to the backend of Infer, which then performs the +analysis. The files contain serialized OCaml data structures. The `.cfg` file +contains a control flow graph for each function or method implemented in the +file. The file `.cg` contains the call graph of the functions defined or called +from that file. Finally, the file `.tenv` contains all the types that are +defined or used in the file. + +## Debug mode + +With the debug option enabled `infer run --debug -- `, Infer +outputs debug information in infer-out/log/. The option `--stats` provides only +light debug information, and `--print-logs` outputs every message on the console +as well as in the log files. + +In each captured folder, we obtain the file `icfg.dot`, which is the graphical +representation of the file `.cfg` and the file `call_graph.dot`, that is the +graphical representation of the call graph. + +Moreover, we obtain an HTML page for each captured file inside +`infer-out/captured`. This HTML file contains the source file. In each line of +the file there are links to the nodes of the control flow graph that correspond +to that line of code. So one can see what the translation looks like. Moreover, +when you click on those links you can see details of the symbolic execution of +that particular node. If the option `--no_test` is also passed to `infer`, then +the page pointed to from the nodes contains the printout of the whole symbolic +execution. + +## Print the specs + +It is also possible to print the specs created by Infer using the subcommand +`infer report`. You can print one particular spec that corresponds to one +method, or you can print all the specs in the results directory. Let us look at +an example: + +```java +class Hello { + int x; + void setX(int newX) { + this.x = newX; + } +} +``` + +We run Infer on this example with: + +```bash +infer run -- javac Hello.java +``` + +Infer saves the spec for the method `setX` in `infer-out/specs` and we can print +it with the command: + +```bash +infer report infer-out/specs/Hello.setX{98B5}:void.specs +``` + +The convention for method names in Java is `.`. This +outputs the following: + +```bash +Procedure: void Hello.setX(int) +void void Hello.setX(int)(class Hello *this, int newX) +Timestamp: 1 +Status: INACTIVE +Phase: RE_EXECUTION +Dependency_map: +TIME:0.006893 s TIMEOUT:N SYMOPS:34 CALLS:0,0 +ERRORS: +--------------------------- 1 of 1 [nvisited: 4 5 6] --------------------------- +PRE: +this = val$1: ; +newX = val$3: ; +this|->{Hello.x:val$2}: +POST 1 of 1: +this = val$1: ; +return = val$4: ; +newX = val$3: ; +this|->{Hello.x:newX}: +---------------------------------------------------------------- +``` + +which expresses the fact that `this` needs to be allocated at the beginning of +the method, and that at the end of the method the field `x` is equal to `newX`. + +Moreover, you can print all the specs in the results directory with the command: + +```bash +infer report +``` + +## Run internal tests + +There are many tests in the Infer code base that check that Infer behaves +correctly on small program examples. This is how you'd typically run the tests; +you can adapt the figure `8` depending on the number of cores available on your +machine: + +```bash +make -j8 test +``` diff --git a/website/docs/01-analyzing-apps-or-projects.md b/website/docs/01-analyzing-apps-or-projects.md new file mode 100644 index 000000000..68efa8d03 --- /dev/null +++ b/website/docs/01-analyzing-apps-or-projects.md @@ -0,0 +1,161 @@ +--- +id: analyzing-apps-or-projects +title: Analyzing apps or projects +--- + +To analyze files with Infer you can use the compilers `javac` and `clang`. You +can also use Infer with `gcc`, however, internally Infer will use `clang` to +compile your code. So, it may not work if your code does not compile with +`clang`. + +Moreover, you can run Infer with a variety of build systems. Notice that you can +run infer faster by running the compilation command in parallel, e.g. +`infer run -- make -j8`. Please also take into account that if you wish to +analyze a project, you should probably do `clean` beforehand so that the +compiler compiles all the files and so Infer also analyses all the files (see +the [previous section](infer-workflow)). + +Here is an overview of the build systems supported by Infer. You can get more +information about how a particular build system is supported by looking at the +SYNOPSIS section of the infer-capture manual: `infer capture --help`. + +### ant + +```bash +infer run -- ant +``` + +### Buck + +Running: + +```bash +infer run -- buck +``` + +will compute the list of Infer warnings in the targets passed as argument. + +Running: + +```bash +infer run -- buck --deep +``` + +will compute the list of Infer warnings in the targets passed as argument and +all the transitive dependencies. + +The distinction between `--deep` and the normal Buck complation mode is only +supported for Java projects. For the other kinds of projects, the `--deep` +option has no effect. + +### cmake + +The most robust way is to have `cmake` generate a compilation database that can +be then processed by Infer: + +```bash +cd build +cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 .. +cd .. +infer run --compilation-database build/compile_commands.json +``` + +Alternatively, one can trick `cmake` into using infer instead of the system's +compilers: + +```bash +cd build +infer compile -- cmake .. +infer run -- make -j 4 +``` + +### Gradle + +```bash +infer run -- gradle +infer run -- ./gradlew +``` + +### Make + +Infer can analyze projects that compile with `make` by switching the compilers +(for C/C++/Objective-C or Java) called by `make` with infer wrappers. This +doesn't always work, for instance if the Makefiles hardcode the absolute paths +to the compilers (eg, if `make` calls `/usr/bin/gcc` instead of `gcc`). This is +because this integration works by modifying `PATH` under the hood. + +```bash +infer run -- make +``` + +### Maven + +```bash +infer run -- mvn +``` + +### Xcodebuild + +The most robust way is to generate a compilation database, then pass that +database to Infer: + +```bash +xcodebuild | tee xcodebuild.log +xcpretty -r json-compilation-database -o compile_commands.json < xcodebuild.log > /dev/null +infer run --skip-analysis-in-path Pods --clang-compilation-db-files-escaped compile_commands.json +``` + +See also +[this comment on GitHub](https://github.com/facebook/infer/issues/9#issuecomment-280121791). + +Infer also provides a direct integration to xcodebuild that swaps the compiler +used by xcodebuild under the hood. For instance, for an iOS app: + +```bash +infer run -- xcodebuild -target -configuration -sdk iphonesimulator +``` + +There is an alternative xcodebuild integration that uses `xcpretty` under the +hood; use it by passing `--xcpretty` to infer. + +### xctool + +Use `xctool` to generate a compilation database then pass it to infer: + +```bash +xctool.sh -reporter json-compilation-database:compile_commands.json +infer run --skip-analysis-in-path Pods --clang-compilation-db-files-escaped compile_commands.json +``` + +See also +[this comment on GitHub](https://github.com/facebook/infer/issues/9#issuecomment-280121791). + +### Using a compilation database + +Many build systems like cmake, Xcode or Buck generate compilation databases. +infer is able to use this database directly, simplifying its usage. + +```bash +infer --compilation-database compile_commands.json +``` + +### Other build systems + +If infer doesn't recognize your build system, you will get an error like this: + +```console +$ infer run -- foo +Usage Error: Unsupported build command foo +``` + +If your build system behaves like one of the above, you can tell infer to use +the same integration with `--force-integration`. For instance this will proceed +as if `foo` was working the same way as `make`: + +```bash +infer run --force-integration make -- foo +``` + +If your build system is more exotic, and it doesn't support outputting +compilation databases, please let us know by +[opening an issue](https://github.com/facebook/infer/issues/new). diff --git a/website/docs/01-checkers.md b/website/docs/01-checkers.md new file mode 100644 index 000000000..6a4a0037a --- /dev/null +++ b/website/docs/01-checkers.md @@ -0,0 +1,26 @@ +--- +id: checkers +title: "Infer : AI" +--- + +Infer.AI is a collection of program analyses which range from simple checks to +sophisticated inter-procedural analysis. Infer.AI is so named because it is +based on Abstract Interpretation. + +Current Infer.AI's which are in production include ThreadSafety, +AnnotationReachability (e.g., can an allocation be reached from a +@PerformanceCritical method), and +[immutable cast](checkers-bug-types#CHECKERS_IMMUTABLE_CAST) for Java, +as well as Static Initialization Order Fiasco for C++. + +The current checkers can be run by adding the option `-a checkers` to the +analysis command as in this example: + +```bash +infer run -a checkers -- javac Test.java +``` + +In addition, we are working on experimental AI's which target security +properties (Quandary) and buffer overruns (Inferbo). The infer commandline man +page (`infer --help`) explains how to run experimental AI's, or how to select +certain AI's and not others. diff --git a/website/docs/01-eradicate.md b/website/docs/01-eradicate.md new file mode 100644 index 000000000..9a9a5bc1b --- /dev/null +++ b/website/docs/01-eradicate.md @@ -0,0 +1,82 @@ +--- +id: eradicate +title: "Infer : Eradicate" +--- + +> "I call it my billion-dollar mistake. It was the invention of the null +> reference in 1965." +> +> [Tony Hoare](http://en.wikipedia.org/wiki/Tony_Hoare) + +### What is Infer:Eradicate? + +Infer:Eradicate is a type checker for @Nullable annotations for Java. It is part +of the Infer static analysis suite of tools. The goal is to eradicate null +pointer exceptions. + +@Nullable +annotations denote that a parameter, field or the return value of a method can +be null. When decorating a parameter, this denotes that the parameter can +legitimately be null and the method will need to deal with it. When decorating a +method, this denotes the method might legitimately return null. + +Starting from @Nullable-annotated programs, the checker performs a flow +sensitive analysis to propagate the nullability through assignments and calls, +and flags errors for unprotected accesses to nullable values or +inconsistent/missing annotations. It can also be used to add annotations to a +previously un-annotated program. + +### What is the @Nullable convention? + +If you say nothing, you're saying that the value cannot be null. This is the +recommended option when possible: + +Program safely, annotate nothing! + +When this cannot be done, add a @Nullable annotation before the type to indicate +that the value can be null. + +### What is annotated? + +Annotations are placed at the interface of method calls and field accesses: + +- Parameters and return type of a method declaration. +- Field declarations. + +Local variable declarations are not annotated: their nullability is inferred. + +### How is Infer:Eradicate invoked? + +Eradicate can be invoked by adding the option `--eradicate` to the checkers mode +as in this example: + +```bash +infer run -a checkers --eradicate -- javac Test.java +``` + +The checker will report an error on the following program that accesses a +nullable value without null check: + +```java +class C { + int getLength(@Nullable String s) { + return s.length(); + } +} +``` + +But it will not report an error on this guarded dereference: + +```java +class C { + int getLength(@Nullable String s) { + if (s != null) { + return s.length(); + } else { + return -1; + } + } +} +``` + +Eradicate reports the following [warnings](/docs/eradicate-warnings). diff --git a/website/docs/01-experimental-checkers.md b/website/docs/01-experimental-checkers.md new file mode 100644 index 000000000..5668d3d15 --- /dev/null +++ b/website/docs/01-experimental-checkers.md @@ -0,0 +1,38 @@ +--- +id: experimental-checkers +title: "Infer : Experimental Checkers" +--- + +Infer contains a number of experimental checkers that can be run using just like +the normal infer analysis +`infer -a checkers -- -- `. `checker_name` can +be `bufferoverrun`, `siof`, or `quandary`. We'll explain the capabilities of +each experimental checker, its level of maturity (on a scale including "in +development", "medium", and "probably deployable"), and the language(s) it +targets. + +# Inferbo + +- Languages: C (but should be easy to adapt to Objective-C/C++, and possibly + Java.) +- Maturity: Medium + +Inferbo is a detector for out-of-bounds array accesses. You can read all about +it in this blog +[post](https://research.fb.com/inferbo-infer-based-buffer-overrun-analyzer/). It +has been tuned for C, but we are planning to adapt it to other languages in the +near future. + +# Quandary + +- Languages: Java, C/C++ +- Maturity: Medium + +Quandary is a static taint analyzer that identifies a variety of unsafe +information flows. It has a small list of built-in +[sources](https://github.com/facebook/infer/blob/master/infer/src/quandary/JavaTrace.ml#L36) +and +[sinks](https://github.com/facebook/infer/blob/master/infer/src/quandary/JavaTrace.ml#L178), +and you can define custom sources and sinks in your `.inferconfig` file (see +example +[here](https://github.com/facebook/infer/blob/master/infer/tests/codetoanalyze/java/quandary/.inferconfig)). diff --git a/website/docs/01-infer-workflow.md b/website/docs/01-infer-workflow.md new file mode 100644 index 000000000..f7f4b0640 --- /dev/null +++ b/website/docs/01-infer-workflow.md @@ -0,0 +1,192 @@ +--- +id: infer-workflow +title: Infer workflow +--- + +This page documents several ways of running Infer, that you can adapt to your +own project. + +**tl; dr**: + +1. Make sure your project is clean when you first run Infer on it (with + `make clean`, or `gradle clean`, or ...). +2. When running Infer several times in a row, either clean your project as in + step 1 in-between Infer runs, or add `--reactive` to the `infer` command. +3. These steps are not needed if you are not using an incremental build system, + for instance if you are analyzing single files with + `infer run -- javac Hello.java`. +4. After a successful Infer run, you can explore Infer's reports in more details + by running `infer-explore` from the same directory. + +## The two phases of an Infer run + +Regardless of the input language (Java, Objective-C, or C), there are two main +phases in an Infer run: + +### 1. The capture phase + +Compilation commands are captured by Infer to translate the files to be analyzed +into Infer's own internal intermediate language. + +This translation is similar to compilation, so Infer takes information from the +compilation process to perform its own translation. This is why we call infer +with a compilation command: `infer run -- javac File.java` or +`infer run -- clang -c file.c`. What happens is that the files get compiled as +usual, and they also get translated by Infer to be analyzed in the second phase. +In particular, if no file gets compiled, also no file will be analyzed. + +Infer stores the intermediate files in the results directory which by default is +created in the folder where the `infer` command is invoked, and is called +`infer-out/`. You can change the name of the results directory with the option +`-o`, e.g. + +```bash +infer run -o /tmp/out -- javac Test.java +``` + +You can run just the capture phase using the `capture` subcommand instead of the +`run` subcommand: + +```bash +infer capture -- javac Test.java +``` + +### 2. The analysis phase + +In this phase, the files in `infer-out/` are analyzed by Infer. Infer analyzes +each function and method separately. If Infer encounters an error when analyzing +a method or function, it stops there for that method or function, but will +continue the analysis of other methods and functions. So, a possible workflow +would be to run Infer on your code, fix the errors generated, and run it again +to find possibly more errors or to check that all the errors have been fixed. + +The errors will be displayed in the standard output and also in a file +`infer-out/bugs.txt`. We filter the bugs and show the ones that are most likely +to be real. In the results directory (`infer-out/`), however, we also save a +file `report.csv` that contains all the errors, warnings and infos reported by +Infer in csv format. + +## Global (default) and differential workflows + +By default, running Infer will delete the previous `infer-out/` directory if it +exists. This leads to a _default_ workflow where the entire project is analyzed +every time. Passing `--reactive` (or `-r`) to Infer prevents it from deleting +`infer-out/`, leading to a _differential_ workflow. + +There are exceptions to this. In particular, you can run only one of the phases +above. For instance, `infer run -- javac Hello.java` is equivalent to running +these two commands: + +```bash +infer capture -- javac Hello.java +infer analyze +``` + +Notice that the second command does not erase `infer-out/`, as the files it +needs to analyze live there! + +You can learn more about the subcommands supported by Infer by running +`infer --help`, `infer capture --help`, or more generally +`infer --help`. + +Let us highlight when you may need global and differential workflows. + +### Global workflow + +The global workflow is well suited to running Infer on all the files in a +project, e.g., for a Gradle-based project that compiles using the `gradle build` +command: + +```bash +infer run -- gradle build +``` + +In general, running Infer on your project is as simple as running +`infer run -- ` where the build command is the one you +would normally use to compile your source code. + +To start a fresh analysis and be sure to analyze all the files in your project, +you have to clean the build products, for instance with `make clean` for a +make-based project, `gradle clean` for Gradle, etc. + +### Differential workflow + +Software projects such as mobile apps use _incremental_ build systems, where +code evolves as a sequence of code changes. For these projects, it can often +make sense to analyze only the current changes in the project, instead of +analyzing the whole project every time. It is possible to analyze only what's +changed using Infer's _reactive mode_. + +Infer should first be run on a _clean_ version of the project, to capture all +the compilation commands in its capture phase. + +For instance, for a project compiled using Gradle, + +```bash +gradle clean +infer capture -- gradle build +``` + +Note that the above command does not perform an expensive analysis, but captures +all the compilation commands and stores the results in Infer's internal format. + +Next, if you change some files in your project, for instance in response to an +Infer report, or as part of normal development, you can either clean and +reanalyze the entire project (as in the [global workflow](#Global-workflow) +above), or else tell Infer that you are interested in the effects of the code +change. The second option can be significantly faster, as only a subset of the +project needs to be analyzed: the modified files/procedures and their +dependencies. + +```bash +edit some/File.java +# make some changes to some/File.java +infer run --reactive -- gradle build +``` + +Note that you can run Infer with the `--reactive` flag the first time around as +well. + +To control the granularity of the changes to be analyzed, it is possible to tell +Infer to combine several changes into one before the analysis. This is done with +the `--continue` option. + +For example: + +```bash +edit some/File1.java +# make some changes to some/File1.java +infer run --reactive -- gradle build +edit some/File2.java +# make some changes to some/File2.java +infer run --reactive --continue -- gradle build +``` + +After the first invocation, Infer will analyze the results of the first change. +After the second invocation, Infer will analyze the results of both changes. If +the `--continue` option were omitted, it would only analyze the results of the +second change. + +Finally, it is always possible to perform an analysis of the current changes in +isolation: + +```bash +infer run --reactive --continue -- analyze +``` + +The list of build systems supported by Infer is detailed in the +[next section](analyzing-apps-or-projects). + +## Exploring Infer reports + +You can get more information about the reports generated by Infer by running +`infer-explore` in the same directory. For instance + +```bash +infer run -- gradle build +infer-explore +``` + +This tool allows you to see error traces leading to each bug reported by Infer, +which can be helpful in tracking down the precise cause of each bug. See the +output of `infer-explore --help` for more information. diff --git a/website/docs/01-linters.md b/website/docs/01-linters.md new file mode 100644 index 000000000..dfd24a14c --- /dev/null +++ b/website/docs/01-linters.md @@ -0,0 +1,698 @@ +--- +id: linters +title: "Infer : AL" +--- + +For C/C++ and Objective-C languages, we provide a linters framework. These are +checks about the syntax of the program; it could be about a property, or about +code inside one method, or that a class or method have certain properties. We +provide [a few checks](/docs/linters-bug-types) and we have developed a +domain specific language (DSL) to make it easier to write checks. + + +## AL: A declarative language for writing linters in Infer + +One of the major advantage of Infer when compared with other static analyzers is +the fact it performs sophisticated inter-procedural/inter-file analysis. That +is, Infer can detect bugs which involve tracking values through many procedure +calls and the procedures may live in different files. These may be very subtle +bugs and designing static analyses to do that is quite involved and normally +requires deep static analysis expertise. + +However, there are many important software bugs that are confined in the code of +a single procedure (called intra-procedural). To detect these bugs simpler +analyses may suffice which do not require deep technical expertise in static +analysis. Often these bugs can be expressed by referring to the syntax of the +program, or the types of certain expressions. We have defined a new language to +easily design checkers which identify these kind of bugs. The language is called +AL (AST Language) and its main feature is the ability to reason about the +Abstract Syntax Tree of a program in a concise declarative way. AL's checkers +are interpreted by Infer to analyze programs. Thus, to detect new kind of bugs +in Infer one can just write a check in AL. We will see in more detail later, +that for writing AL formulas we also need predicates: simple functions that +check a property of the AST. Predicates are written in OCaml inside Infer, thus +it requires a bit of OCaml knowledge and getting familiar with the OCaml data +structure for the clang AST. + +## Getting the clang AST + +When you write a linter that traverses the AST of some programs to check some +property, you probably need to understand what the AST looks like. You can get +the AST of programs using clang directly, or using Infer. + +If you have a clang command `clang File.m` then you can get +the AST with + +```bash +clang -Xclang -ast-dump -fsyntax-only File.m +``` + +You can also get the AST using Infer. One advantage of this is that you don't +need to know the speicifc clang command, just the general build command. +Moreover, what you get here is exactly the form of the AST that Infer has as +input. + +For this you need to install an OCaml package `biniou` with +`opam install biniou`. See [the opam website](https://opam.ocaml.org/) for +instructions on how to install opam. + +Then, the AST can be created by Infer in debug mode. Call Infer with + +```bash +infer --debug -- +``` + +This will, among other things, generate a file `/path/to/File.m.ast.sh` for +every file `/path/to/File.m` that is being analyzed. Run this script with +`bash File.m.ast.sh` and a file `/path/to/File.m.ast.bdump` will be generated, +that contains the AST of the program in `bdump` format (similar to json). If you +get an error about `bdump` not being found you may need to run +`eval $(opam env)` to get the `bdump` executable (provided by the biniou opam +package) into your `PATH`. + +For general info on the clang AST, you can check out +[clang's website](http://clang.llvm.org/docs/IntroductionToTheClangAST.html). + +## Using AL to write linters + +Let's start with an example. Suppose we want to write the following +Objective-C's linter: + +_"a property containing the word 'delegate', but not containing the word 'queue' +should not be declared strong"_. + +We can write this property in the following way: + +```bash +DEFINE-CHECKER STRONG_DELEGATE_WARNING = { + + LET name_contains_delegate = + declaration_has_name(REGEXP("[dD]elegate")); + + LET name_does_not_contain_queue = + NOT declaration_has_name(REGEXP("[qQ]ueue")); + + SET report_when = + WHEN + name_contains_delegate + AND name_does_not_contain_queue + AND is_strong_property() + HOLDS-IN-NODE ObjCPropertyDecl; + + SET message = "Property or ivar %decl_name% declared strong"; + SET suggestion = "In general delegates should be declared weak or assign"; + SET severity = "WARNING" + }; +``` + +The linter definition starts with the keyword `DEFINE-CHECKER` followed by the +checker's name. The first `LET` clause defines the _formula variable_ +`name_contains_delegate` using the predicate `declaration_has_name` which return +true/false depending whether the property's name contains a word in the language +of the regular expression `[dD]elegate`. In general a predicate is a simple +atomic formula evaluated on an AST node. The list of available predicates is in +the module +[`cPredicates.mli`](https://github.com/facebook/infer/blob/master/infer/src/clang/cPredicates.mli) +(this list is continuously growing and if you need a new predicate you can add +it in ocaml). Formula variables can be used to simplify other definitions. The +`SET report_when` is mandatory and defines a formula that, when evaluates to +true, will tell Infer to report an error. In the case above, the formula is +saying that we should report when visiting an `ObjCPropertyDecl` (that is the +AST node declaring a property in Objective-C) where it holds that: the name +contains "delegate/Delegate" (`name_contains_delegate`) and the name doesn't +contain "queue/Queue" (`name_does_not_contain_queue`) and the node is defining a +"strong" property (`is_strong_property()`). + +The `SET message` clause defines the error message that will be displayed to the +user. Notice that the message can include placeholders like `%decl_name%`. +Placeholders are evaluated by Infer and substituted by their current value when +the error message is reported. In this case the name of the declaration. The +`SET suggestion` clause define an optional hint to give to programmer on how to +fix the problem. + +The general structure of a checker is the following: + +```bash +DEFINE-CHECKER id_of_the_checker = { + + LET formula = ; + LET …. + + SET report_when = ; + + SET name = ; + SET message = ; + SET suggestion = ; + SET doc_url = ; + SET severity = INFO | LIKE | ADVICE | WARNING | ERROR; + SET mode = ON | OFF + SET whitelist_path = {path1, path2, ..., pathn }; + SET blacklist_path = {path1, path2, ..., pathn }; + }; +``` + +The default severity is `WARNING` and the default mode is `ON`, so these are +optional. If the check is `OFF` it will only be available in debug mode (flags +`--debug` or `--linters-developer-mode`). `INFOs` are generally also not +reported, except with some specialzed flags. `name` and `doc_url` are used only +for CI comments at the moment (in Phabricator). + +## Defining Paths + +`whitelist_path` and `blacklist_path` are optional, by default the rule is +enabled everywhere. For specifying paths, one can use either string constants +(`"File.m"`) or regexes (`REGEXP("path/to/.*")`) or variables. The variables +stand for a list of paths, and are defined in a separate block: + +```bash + GLOBAL-PATHS { + path1 = {"A.m", REGEXP("path/to/.*")}; + }; +``` + +## Defining Macros + +It is possible to define macros that can be used in several checkers. This is +done in the following way: + +```bash +GLOBAL-MACROS { + LET is_subclass_of(x) = + is_class(x) HOLDS-IN-SOME-SUPERCLASS-OF ObjCInterfaceDecl; + }; +``` + +`GLOBAL-MACROS` is the section of an AL specification where one can define a +list of global macros. In the example we are defining the macro `is_subclass(x)` +which can now be used in checkers instead of its complex definition. + +It is possible to import a library of macros and paths with the following +command: + +``` +#IMPORT +``` + +In an AL file, the command above import and make available all the macros and +paths defined in the `library.al` file. + +## AL Predicates + +The simplest formulas we can write are predicates. They are defined inside +Infer. We provide a +[library](https://github.com/facebook/infer/blob/master/infer/src/clang/cPredicates.mli), +but if the predicate that you require is not available, you will need to extend +the library. Here are the some of the currently defined predicates: + +``` +call_class_method ("class_name", "method_name") +call_function ("method_name") +call_instance_method ("class_name", "method_name") +call_method ("method_name") +captures_cxx_references () +context_in_synchronized_block () +declaration_has_name ("decl_name") +declaration_ref_name ("decl_ref_name") +decl_unavailable_in_supported_ios_sdk () +has_cast_kind("cast_kind") // useful in a cast node +has_type ("type") // only builtin types, pointers and Objective-C classes available at the moment +isa ("class_name") +is_assign_property () +is_binop_with_kind ("kind") +is_class ("class_name") +is_const_var () +is_global_var () +is_ivar_atomic () +is_method_property_accessor_of_ivar () +is_node ("node_name") +is_objc_constructor () +is_objc_dealloc () +is_objc_extension () +is_objc_interface_named ("name") +is_property_pointer_type () +is_strong_property () +is_weak_property () +is_unop_with_kind ("kind") +method_return_type ("type") // only builtin type, pointers, and Objective-C classes available at the moment +objc_method_has_nth_parameter_of_type("type") +using_namespace("namespace") +within_responds_to_selector_block () +``` + +In general, the parameters of predicates can be constants, or variables, or +regular expressions. Variables are used in macros, see below. The syntax for +using regexes is `REGEX("your_reg_exp_here")`. + +**NOTE:** The predicates that expect types, such as `has_type` or +`method_return_type` or `objc_method_has_nth_parameter_of_type` also accept +regexes, but the syntax is a bit different: `REGEX('your_reg_exp_here')`, and +this regex can be embedded inside another string, for example: +`has_type("REGEXP('NS.+')*" )` which stands for pointer to a class of name +starting with NS. + +If you need to add a new predicate, write the predicate in +[cPredicates.ml](https://github.com/facebook/infer/blob/master/infer/src/clang/cPredicates.ml) +and then register it in +[CTL.ml](https://github.com/facebook/infer/blob/master/infer/src/clang/cTL.ml#L728). + +## AL Formulas + +Formulas are defined using a variation of the +[_CTL temporal logic_](https://en.wikipedia.org/wiki/Computation_tree_logic). +CTL is a logic expressing properties of a tree model. In the case of AL, the +tree is the AST of the program. Formulas are defined according to the following +grammar: + +``` +formula ::= predicate + | NOT formula + | formula1 OR formula2 + | formula1 AND formula2 + | formula1 IMPLIES formula2 + | formula1 HOLDS-UNTIL formula2 + | formula1 HOLDS-EVERYWHERE-UNTIL formula2 + | formula HOLDS-EVENTUALLY + | formula HOLDS-EVERYWHERE-EVENTUALLY + | formula HOLDS-NEXT + | formula HOLDS-EVERYWHERE-NEXT + | formula HOLDS-ALWAYS + | formula HOLDS-EVERYWHERE-ALWAYS + | WHEN formula HOLDS-IN-NODE node-name-list + | IN-NODE node-name-list WITH-TRANSITION transition-name + formula HOLDS-EVENTUALLY +``` + +The first four cases (`NOT`, `OR`, `AND`, `IMPLIES`) are classic boolean +operators with the usual semantics. The others are temporal operators describing +how the truth-value of a formula is evaluated in a tree. Let's consider case by +case. + +| Formula | Semantic meaning | +| ------------------- | :-------------------------------------------------------------------------------------------: | +| F1 _HOLDS-UNTIL_ F2 | from the current node, there exists a path where F1 holds at every node until F2 becomes true | + +An example is depicted in the following tree. When `F1` or `F2` hold in a node +this is indicated between square brackets. The formula `F1 HOLDS-UNTIL F2` holds +in the green nodes. + +![](/img/AL/holds_until.jpeg) + +--- + +| Formula | Semantic meaning | +| -------------------- | :--------------------------------------------------------------------------: | +| F _HOLDS-EVENTUALLY_ | from the current node there exists a path where at some point F becomes true | + +In the picture below, as `F` holds in `n10`, then `F HOLDS-EVENTUALLY` holds in +the green nodes `n1`, `n7`, `n10`. This is because from these nodes there is a +path reaching `n10` where `F` holds. Note that it holds for `n10` as well +because there exists a trivial path of length 0 from `n1` to itself. + +![](/img/AL/holds_eventually.jpeg) + +--- + +| Formula | Semantic meaning | +| ----------------------------- | :-----------------------------------------------------------------------: | +| F HOLDS-EVERYWHERE-EVENTUALLY | in every path starting from the current node at some point F becomes true | + +For example, in the tree below, the formula holds in every green node because +every paths starting from each of them eventually reaches a node where F holds. + +![](/img/AL/holds_everywhere_eventually.jpeg) + +--- + +| Formula | Semantic meaning | +| ------------ | :--------------------------------------------------------------------------: | +| F HOLDS-NEXT | from the current node (we are visiting) there exists a child where F is true | + +In the tree below, the formula `F HOLDS-NEXT` it is true only in n1 as it's the +only node with a child where `F` holds (node n3). In AL, `NEXT` is synonym of +child as, in terms of a path in the tree, a child is the next node. + +![](/img/AL/holds_next.jpeg) + +--- + +| Formula | Semantic meaning | +| ----------------------- | :-----------------------------------------------------: | +| F HOLDS-EVERYWHERE-NEXT | from the current node in every existing child F is true | + +In the tree below, the formula `F HOLDS-EVERYWHERE-NEXT` it is true in n1 as +it's the only node for which in every child `F` holds (node n2, n3, and n7). + +![](/img/AL/holds_everywhere_next.jpeg) + +--- + +| Formula | Semantic meaning | +| -------------- | :-------------------------------------------------------------------: | +| F HOLDS-ALWAYS | from the current node there exists a path where F holds at every node | + +In the tree below `F HOLDS-ALWAYS` holds in `n1`, `n2`, `n8` because for each of +these nodes there exists a path where `F` holds at each node in the path. + +![](/img/AL/always_holds.jpeg) + +--- + +| Formula | Semantic meaning | +| ------------------------- | :--------------------------------------------------------: | +| F HOLDS-EVERYWHERE-ALWAYS | from the current node, in every path F holds at every node | + +`F HOLDS-EVERYWHERE-ALWAYS` holds in `n2`, `n4`, `n5`, and `n8` because when we +visit those nodes in every path that start from them `F` holds in every node. + +![](/img/AL/always_holds_everywhere.jpeg) + +--- + +| Formula | Semantic meaning | +| ---------------------------------- | :----------------------------------------------: | +| WHEN F HOLDS-IN-NODE node1,…,nodeK | we are in a node among node1,…,nodeK and F holds | + +`WHEN F HOLDS-IN-NODE` `n2`, `n7`, `n6` holds only in node `n2` as it is the +only node in the list `n2`, `n7`, `n6` where F holds. + +![](/img/AL/holds_in_node.jpeg) + +Let's consider an example of checker using formula +`WHEN F HOLDS-IN-NODE node1,…,nodeK` for checking that a property with pointer +type should not be declared _"assign"_: + +``` +DEFINE-CHECKER ASSIGN_POINTER_WARNING = { + + SET report_when = + WHEN + is_assign_property() AND is_property_pointer_type() + HOLDS-IN-NODE ObjCPropertyDecl; + + SET message = "Property `%decl_name%` is a pointer type marked with the `assign` attribute"; + SET suggestion = "Use a different attribute like `strong` or `weak`."; + SET severity = "WARNING"; + }; +``` + +The checker uses two predefined predicates `is_assign_property()` and +`is_property_pointer_type()` which are true if the property being declared is +assign and has a pointer type respectively. We want to check both conditions +only on nodes declaring properties, i.e., `ObjCPropertyDecl`. + +--- + +| Formula | Semantic meaning | +| ----------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------: | +| IN-NODE node1,…, nodeK WITH-TRANSITION t F HOLDS-EVENTUALLY | from the current node there exists a path which eventually reaches a node among “node1,…,nodeK” with a transition t reaching a child where F holds | + +The following tree explain the concept: + +![](/img/AL/in_node_with_transition.jpeg) + +The concept of transition is needed because of the special structure of the +clang AST. Certain kind of nodes, for example statements, have a list of +children that are statements as well. In this case there is no special tag +attached to the edge between the node and the children. Other nodes have +records, where some of the fields point to other nodes. For example a node +representing a function declaration will have a record where one of the fields +is body. This is pointing to a statement representing the function's body. For +records, sometimes we need to specify that we need a particular node reachable +via a particular field (i.e., a transition). + +**Hint** A good way to learn how to write checkers is looking at existing +checkers in the file +[linters.al](https://github.com/facebook/infer/blob/master/infer/lib/linter_rules/linters.al). + +## Example checks + +In the following we show a few examples of simple checks you may wish to write +and the corresponding formulas: + +- A check for flagging a Objective-C class that inherits from a class that + shouldn't be subclassed. + +``` +DEFINE-CHECKER SUBCLASSING_TEST_EXAMPLE = { + SET report_when = is_class("A") HOLDS-IN-SOME-SUPERCLASS-OF ObjCInterfaceDecl; + SET message = "This is subclassing A. Class A should not be subclassed."; +}; +``` + +- A check for flagging an Objective-C instance method call: + +``` +DEFINE-CHECKER CALL_INSTANCE_METHOD = { + SET report_when = call_instance_method("A", "foo:"); + SET message = "Do not call this method"; +}; +``` + +- A check for flagging an Objective-C instance method call of any method of a + class: + +``` +DEFINE-CHECKER CALL_ANY_INSTANCE_METHODS = { + SET report_when = call_instance_method(A, REGEXP("*")); + SET message = "Do not call any method of class A"; +}; +``` + +- A check for flagging an Objective-C class method call: + +``` +DEFINE-CHECKER CALL_CLASS_METHOD = { + SET report_when = call_class_method("A", "foo:"); + SET message = "Do not call this method"; +}; +``` + +- A check for flagging an Objective-C method call of a method with int return + type: + +``` +DEFINE-CHECKER TEST_RETURN_METHOD = { + SET report_when = WHEN method_return_type("int") + HOLDS-IN-NODE ObjCMethodDecl; + SET message = "Method return int"; +}; +``` + +- A check for flagging a variable declaration with type long + +``` +DEFINE-CHECKER TEST_VAR_TYPE_CHECK = { + SET report_when = WHEN has_type("long") + HOLDS-IN-NODE VarDecl; + SET message = "Var %name% has type long"; +}; +``` + +- A check for flagging a method that has a parameter of type A\* + +``` +DEFINE-CHECKER TEST_PARAM_TYPE_CHECK = { + LET method_has_a_parameter_with_type(x) = + WHEN HOLDS-NEXT WITH-TRANSITION Parameters (has_type(x)) + HOLDS-IN-NODE ObjCMethodDecl; + SET report_when = + method_has_a_parameter_with_type("A*" ); + SET message = "Found a method with a parameter of type A"; +}; +``` + +- A check for flagging a method that has all the parameters of type A\* (and at + least one) + +``` +DEFINE-CHECKER TEST_PARAM_TYPE_CHECK2 = { + LET method_has_at_least_a_parameter = + WHEN HOLDS-NEXT WITH-TRANSITION Parameters (TRUE) + HOLDS-IN-NODE ObjCMethodDecl; + + LET method_has_all_parameter_with_type(x) = + WHEN HOLDS-EVERYWHERE-NEXT WITH-TRANSITION Parameters (has_type(x)) + HOLDS-IN-NODE ObjCMethodDecl; + + SET report_when = method_has_at_least_a_parameter AND + method_has_all_parameter_with_type("int"); + SET message = "All the parameters of the method have type int"; +}; +``` + +- A check for flagging a method that has the 2nd parameter of type A\* + +``` +DEFINE-CHECKER TEST_NTH_PARAM_TYPE_CHECK = { + SET report_when = + WHEN objc_method_has_nth_parameter_of_type("2", "A*") + HOLDS-IN-NODE ObjCMethodDecl; + SET message = "Found a method with the 2nd parameter of type A*"; + SET severity = "LIKE"; +}; +``` + +- A check for flagging a protocol that inherits from a given protocol. + `HOLDS-EVENTUALLY WITH-TRANSITION Protocol` means follow the `Protocol` branch + in the AST until the condition holds. + +``` +DEFINE-CHECKER TEST_PROTOCOL_DEF_INHERITANCE = { + LET is_subprotocol_of(x) = declaration_has_name(x) HOLDS-EVENTUALLY WITH-TRANSITION Protocol; + SET report_when = + WHEN is_subprotocol_of("P") + HOLDS-IN-NODE ObjCProtocolDecl; + SET message = "Do not inherit from Protocol P"; +}; +``` + +- A check for flagging when a constructor is defined with a parameter of a type + that implements a given protocol (or that inherits from it). + `HOLDS-NEXT WITH-TRANSITION Parameters` means, starting in the + `ObjCMethodDecl` node, follow the `Parameters` branch in the AST and check + that the condition holds there. + +``` +DEFINE-CHECKER TEST_PROTOCOL_TYPE_INHERITANCE = { + + LET method_has_parameter_subprotocol_of(x) = + WHEN + HOLDS-NEXT WITH-TRANSITION Parameters + (has_type_subprotocol_of(x)) + HOLDS-IN-NODE ObjCMethodDecl; + + SET report_when = + WHEN + declaration_has_name(REGEXP("^newWith.*:$")) AND + method_has_parameter_subprotocol_of("P") + HOLDS-IN-NODE ObjCMethodDecl; + + SET message = "Do not define parameters of type P."; +}; +``` + +- A check for flagging a variable declaration of type NSArray applied to A. + +``` +DEFINE-CHECKER TEST_GENERICS_TYPE = { + SET report_when = + WHEN has_type("NSArray*") + HOLDS-IN-NODE VarDecl; + SET message = "Do not create arrays of type A"; +}; +``` + +- A check for flagging using a property or variable that is not available in the + supported API. decl_unavailable_in_supported_ios_sdk is a predicate that works + on a declaration, checks the available attribute from the declaration and + compares it with the supported iOS SDK. Notice that we flag the occurrence of + the variable or property, but the attribute is in the declaration, so we need + the transition `PointerToDecl` that follows the pointer from the usage to the + declaration. + +``` +DEFINE-CHECKER UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK = { + SET report_when = + WHEN HOLDS-NEXT WITH-TRANSITION PointerToDecl + (decl_unavailable_in_supported_ios_sdk() AND + HOLDS-IN-NODE DeclRefExpr; + SET message = "%name% is not available in the required iOS SDK version"; +}; +``` + +- A check for flagging using a given namespace + +``` +DEFINE-CHECKER TEST_USING_NAMESPACE = { + SET report_when = using_namespace("N"); + SET message = "Do not use namespace N"; +}; +``` + +- A check for flagging the use of given enum constants + +``` +DEFINE-CHECKER ENUM_CONSTANTS = { + SET report_when = is_enum_constant(REGEXP("MyName.*")); + SET message = "Do not use the enum MyName"; +}; +``` + +## AST info in messages + +When you write the message of your rule, you may want to specify which +particular AST items were involved in the issue, such as a type or a variable +name. We have a mechanism for that, we specified a few placeholders that can be +used in rules with the syntax `%placeholder%` and it will be substituted by the +correct AST info. At the moment we have `%type%`, `%child_type%` and `%name%` +that print the type of the node, the type of the node's child, and a string +representation of the node, respectively. As with predicates, we can add more as +needed. + +## Testing your rule + +To test your rule you need to run it with Infer. If you are adding a new linter +you can test it in a separate al file that you can pass to Infer with the option +`--linters-def-file file.al`. Pass the option +`--linters-developer-mode --linter ` to Infer to print debug +information and only run the linter you are developing, so it will be faster and +the debug info will be only about your linter. + +To test your code, write a small example that triggers the rule. Then, run your +code with + +``` +infer --linters-developer-mode --linters-def-file file.al -- clang -c Test.m +``` + +the bug should be printed in the screen, like, for instance: + +``` +infer/tests/codetoanalyze/objcpp/linters/global-var/B.mm:34: warning: GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL + Global variable kLineSize is initialized using a function or method call at line 34, column 1. If the function/method call is expensive, + it can affect the starting time of the app. + 32. static float kPadding = [A bar] ? 10.0 : 11.0; // Error + 33. + 34. > static const float kLineSize = 1 / [A scale]; // Error + 35. + 36. static const float ok = 37; + 37. +``` + +Moreover, the bug can be found in the file `infer-out/report.json` where +`infer-out` is the results directory where Infer operates, that is created in +the current directory. You can specify a different directory with the option +`-o`. + +## Debugging + +If there are syntax errors or other parsing errors with your al file, you will +get an error message when testing the rule, remember to use +`linters-developer-mode` when you are developing a rule. If the rule gets parsed +but still doesn't behave as you expect, you can debug it, by adding the +following line to a test source file in the line where you want to debug the +rule: `//INFER_BREAKPOINT`. Then run infer again in linters developer mode, and +it will stop the execution of the linter on the line of the breakpoint. Then you +can follow the execution step by step. It shows the current formula that is +being evaluated, and the current part of the AST that is being checked. A red +node means that the formula failed, a green node means that it succeeded. + +## Demo + + + +## Command line options for linters + +The linters are run by default when you run Infer. However, there is a way of +running only the linters, which is faster than also running Infer. This is by +adding the option `-a linters` to the analysis command as in this example: + +```bash +infer run -a linters -- clang -c Test.m +``` + +There are a few other command line options that are useful for using or +developing new linters in Infer. You can get those options with the command +`infer-capture --help`: + +![](/img/AL/linters_help.png) diff --git a/website/docs/01-man-pages.md b/website/docs/01-man-pages.md new file mode 100644 index 000000000..35622bf07 --- /dev/null +++ b/website/docs/01-man-pages.md @@ -0,0 +1,15 @@ +--- +id: man-pages +title: Infer Manuals +--- + +Here are the man pages for all the infer commands: + +- [infer](/static/man/infer.1.html) +- [infer-analyze](/static/man/infer-analyze.1.html) +- [infer-capture](/static/man/infer-capture.1.html) +- [infer-compile](/static/man/infer-compile.1.html) +- [infer-explore](/static/man/infer-explore.1.html) +- [infer-report](/static/man/infer-report.1.html) +- [infer-reportdiff](/static/man/infer-reportdiff.1.html) +- [infer-run](/static/man/infer-run.1.html) diff --git a/website/docs/01-racerd.md b/website/docs/01-racerd.md new file mode 100644 index 000000000..b1f4999ae --- /dev/null +++ b/website/docs/01-racerd.md @@ -0,0 +1,494 @@ +--- +id: racerd +title: "Infer : RacerD" +--- + +RacerD finds data races in your Java code. This page gives a more in-depth +explanation of how the analysis works, but may be less complete than the +[Thread Safety Violation bug description page](/docs/checkers-bug-types#thread-safety-violation). + +To run the analysis, you can use plain `infer` (to run RacerD along with other +analyses that are run by default) or `infer --racerd-only` (to run only RacerD). + +For example, the command `infer --racerd-only -- javac File.java` will run +RacerD on File.java. + +## Background + +RacerD statically analyzes Java code to detect potential concurrency bugs. This +analysis does not attempt to prove the absence of concurrency issues, rather, it +searches for a high-confidence class of data races. At the moment RacerD +concentrates on race conditions between methods in a class that is itself +intended to be thread safe. A race condition occurs when there are two +concurrent accesses to a class member variable that are not separated by mutual +exclusion, and at least one of the accesses is a write. Mutual exclusion can be +ensured by synchronization primitives such as locks, or by knowledge that both +accesses occur on the same thread. + +## Triggering the analysis + +RacerD doesn't try to check _all_ code for concurrency issues; it only looks at +code that it believes can run in a concurrent context. There are two signals +that RacerD looks for: (1) Explicitly annotating a class/method with +`@ThreadSafe` and (2) using a lock via the `synchronized` keyword. In both +cases, RacerD will look for concurrency issues in the code containing the signal +and all of its dependencies. In particular, it will report races between any +non-`private` methods of the same class that can peform conflicting accesses. +Annotating a class/interface with `@ThreadSafe` also triggers checking for all +of the subclasses of the class/implementations of the interface. + +## Warnings + +Let's take a look at the different types of concurrency issues that RacerD +flags. Two of the warning types are data races (`Unprotected write` and +`Read/write race`), and the third warning type encourages adding `@ThreadSafe` +annotations to interfaces to trigger additional checking. + +### Unprotected write + +RacerD will report an unprotected write when one or more writes can run in +parallel without synchronization. These come in two flavors: (1) a self-race (a +write-write race that occurs due to a method running in parallel with itself) +and (2) two conflicting writes to the same location. Here's an example of the +self-race flavor: + +``` +@ThreadSafe +public class Dinner { + private int mTemperature; + + public void makeDinner() { + boilWater(); + } + + private void boilWater() { + mTemperature = 100; // unprotected write. + } +} +``` + +The class `Dinner` will generate the following report on the public method +`makeDinner()`: + +`There may be a Thread Safety Violation: makeDinner() indirectly writes to mTemperature outside of synchronization.` + +This warning can be fixed by synchronizing the access to `mTemperature`, making +`mTemperature` `volatile`, marking `makeDinner` as `@VisibleForTesting`, or +suppressing the warning by annotating the `Dinner` class or `makeDinner` method +with `@ThreadSafe(enableChecks = false)`. + +### Read/Write Race + +We sometimes need to protect read accesses as well as writes. Consider the +following class with unsynchronized methods. + +``` +@ThreadSafe +public class Account { + + int mBalance = 0; + + public void deposit(int amount) { + if (amount > 0) { + mBalance += amount; + } + } + + public int withdraw(int amount){ + if (amount >= 0 && mBalance - amount >= 0) { + mBalance -= amount; + return mBalance; + } else { + return 0; + } + } +} +``` + +If you run the `withdraw()` method in parallel with itself or with `deposit()` +you can get unexpected results here. For instance, if the stored balance is 11 +and you run `withdraw(10)` in parallel with itself you can get a negative +balance. Furthermore, if you synchronize only the write statement +`mBalance -= amount`, then you can still get this bad result. The reason is that +there is a read/write race between the boolean condition +`mBalance - amount >= 0` and the writes. RacerD will duly warn + +`Read/Write race. Public method int Account.withdraw(int) reads from field Account.mBalance. Potentially races with writes in methods void Account.deposit(int), int Account.withdraw(int)` + +on the line with this boolean condition. + +A solution to the threading problem here is to make both methods `synchronized` +to wrap both read and write accesses, or to use an `AtomicInteger` for +`mBalance` rather than an ordinary `int`. + +### Interface not thread-safe + +In the following code, RacerD will report an `Interface not thread-safe` warning +on the call to `i.bar()`: + +``` +interface I { + void bar(); +} + +@ThreadSafe +class C { + void foo(I i) { + i.bar(); // RacerD warns here + } +} +``` + +The way to fix this warning is to add a `@ThreadSafe` annotation to the +interface `I`, which will enforce the thread-safety of each of the +implementations of `I`. + +You might wonder why it's necessary to annotate `I` -- can't RacerD just look at +all the implementations of `i` at the call site for `bar`? Although this is a +fine idea idea in principle, it's a bad idea in practice due to a (a) separate +compilation and (b) our diff-based deployment model. In the example above, the +compiler doesn't have to know about all implementations (or indeed, any +implementations) of `I` at the time it compiles this code, so there's no +guarantee that RacerD will know about or be able to check all implementations of +`I`. That's (a). For (b), say that we check that all implementations of `I` are +thread-safe at the time this code is written, but we don't add the annotation. +If someone else comes along and adds a new implementation of `I` that is not +thread-safe, RacerD will have no way of knowing that this will cause a potential +bug in `foo`. But if `I` is annotated, RacerD will enforce that all new +implementations of `I` are thread-safe, and `foo` will remain bug-free. + +## Annotations to help RacerD understand your code + +Getting started with RacerD doesn't require any annotations at all -- RacerD +will look at your usage of locks and figure out what data is not guarded +consistently. But increasing the coverage and signal-to-noise ratio may require +adding `@ThreadSafe` annotations along with some of the other annotations +described below. Most of annotations described below can be used via the Maven +Central package available +[here](https://maven-repository.com/artifact/com.facebook.infer.annotation/infer-annotation). + +### `@ThreadConfined` + +The intuitive idea of thread-safety is that a class is impervious to concurrency +issues for all concurrent contexts, even those that have not been written yet +(it is future-proof). RacerD implements this by naively assuming that any method +can potentially be called on any thread. You may determine, however, that an +object, method, or field is only ever accessed on a single thread during program +execution. Annotating such elements with `@ThreadConfined` informs RacerD of +this restriction. Note that a thread-confined method cannot race with itself but +it can still race with other methods. + +``` +List mCache; + +@ThreadConfined(UI) +void prepareCache() { + // populate the cache + mCache.add(...); + // post cache cleanup task to run later + mUIExecutor.execute(new Runnable() { + @ThreadConfined(UI) + public void run() { + mCache.clear(); + } + }); +} +``` + +In this example, both `prepareCache` and `run` touch `mCache`. But there's no +possibility of a race between the two methods because both of them will run +sequentially on the UI thread. Adding a `@ThreadConfined(UI)` or `@UiThread` +annotation to these methods will stop it from warning that there is a race on +`mCache`. We could also choose to add a `@ThreadConfined` annotation to `mCache` +itself. + +### `@Functional` + +Not all races are bugs; a race can be benign. Consider the following: + +``` +@Functional Boolean askNetworkIfShouldShowFeature(); + +private Boolean mShouldShowFeature; + +@ThreadSafe boolean shouldShowFeature() { + if (mShouldShowFeature == null) { + mShouldShowFeature = askNetworkIfShouldShowFeature(); + } + return mShouldShowFeature; +} +``` + +This code caches the result of an expensive network call that checks whether the +current user should be shown an experimental feature. This code looks racy, and +indeed it is: if two threads execute `shouldShowFeature()` at the same time, one +may read `mShouldShowFeature` at the same time the other is writing it. + +However, this is actually a _benign_ race that the programmer intentionally +allows for performance reasons. The reason this code is safe is that the +programmer knows that `askNetworkIfShouldShowFeature()` will always return the +same value in the same run of the app. Adding synchronization would remove the +race, but acquiring/releasing locks and lock contention would potentially slow +down every call to `shouldShowFeature()`. The benign race approach makes every +call after the first fast without changing the safety of the code. + +RacerD will report a race on this code by default, but adding the +`@Functional annotation to askNetworkIfShouldShowFeature()` informs RacerD that +the function is always expected to return the same value. This assumption allows +RacerD to understand that this particular code is safe, though it will still +(correctly) warn if `mShouldShowFeature` is read/written elsewhere. + +Be sure not to use the `@Functional` pattern for _singleton instantiation_, as +it's possible the "singleton" can be constructed more than once. + +``` +public class MySingleton { + private static sInstance; + + // Not @Functional + public MySingleton getInstance() { + if (sInstance == null) { + // Different threads may construct their own instances. + sInstance == new MySingleton(); + } + return sInstance; + } +} +``` + +### `@ReturnsOwnership` + +RacerD does not warn on unprotected writes to _owned_ objects. An object is +owned if it has been freshly allocated in the current thread and has not escaped +to another thread. RacerDf automatically tracks ownership in most cases, but it +needs help with `abstract` and `interface` methods that return ownership: + +``` +@ThreadSafe +public interface Car { + @ReturnsOwnership abstract Car buyCar(); + + void carsStuff() { + Car myCar = new Car(); + myCar.wheels = 4; // RacerD won't warn here because it knows myCar is owned + Car otherCar = buyCar(); + otherCar.wheels = 3; // RacerD would normally warn here, but won't because of the `@ReturnsOwnership` annotation + } +} +``` + +### `@VisibleForTesting` + +RacerD reports races between any two non`-private` methods of a class that may +run in a concurrent context. Sometimes, a RacerD report may be false because one +of the methods cannot actually be called from outside the current class. One fix +is making the method `private` to enforce this, but this might break unit tests +that need to call the method in order to test it. In this case, the +`@VisibleForTesting` annotation will allow RacerD to consider the method as +effectively `private` will still allowing it to be called from the unit test: + +``` +@VisibleForTesting void setF() { + this.f = ...; // RacerD would normally warn here, but @VisibleForTesting will silence the warning +} + +synchronized void setFWithLock() { + setF(); +} +``` + +Unlike the other annotations shown here, this one lives in +[Android](https://developer.android.com/reference/android/support/annotation/VisibleForTesting.html). + +## Interprocedural Reasoning + +An important feature of RacerD is that it finds races by analyzing not just one +file or class, but by looking at memory accesses that occur after going through +several procedure calls. It handles this even between classes and between files. + +Here is a very basic example + +``` +@ThreadSafe +class A{ + + void m1(B bb) { + bb.meth_write(); + } +} + +class B{ + Integer x; + + void meth_write() { + x = 88; + } + +} +``` + +Class `B` is not annotated `@ThreadSafe` and does not have any locks, so RacerD +does not directly look for threading issues there. However, method `m1()` in +class `A` has a potential self-race, if it is run in parallel with itself and +the same argument for each call. RacerD discovers this. + +``` +InterProc.java:17: error: THREAD_SAFETY_VIOLATION + Unprotected write. Non-private method `A.m1` indirectly writes to field `&this.B.x` outside of synchronization. + Reporting because the current class is annotated `@ThreadSafe`, so we assume that this method can run in + parallel with other non-private methods in the class (incuding itself). + 15. + 16. void m1(B bb) { + 17. > bb.meth_write(); + 18. } + 19. } +``` + +RacerD does this sort of reasoning using what is known as a _compositional +inteprocedural analysis_. There, each method is analyzed independently of its +context to produce a summary of the behaviour of the procedure. In this case the +summaries for `m1()' and`meth()' include information as follows. + +``` +Procedure: void A.m1(B) +Accesses: { Unprotected({ 1 }) -> { Write to &bb.B.x at void B.meth_write() at line 17 } } + +Procedure: void B.meth_write() +Accesses { Unprotected({ 0 }) -> { Write to &this.B.x at at line 25 } } +``` + +The descriptions here are cryptic and do not include all the information in the +summaries, but the main point is that you can use RacerD to look for races in +codebases where the mutations done by threads might occur only after a chain of +procedure calls. + +## Context and Selected Related Work + +Reasoning about concurrency divides into bug detection and proving absence of +bugs. RacerD is on the detection side of reasoning. + +The rapid growth in the number of interleavings is problematic for tools that +attempt exhaustive exploration. With just 150 instructions for two threads, the +number 10^88 of interleavings is more that the estimated number of atoms in the +known universe. +[There has been important work which uses various techniques to attempt to reduce the number of interleavings](https://en.wikipedia.org/wiki/Partial_order_reduction) +while still in principle covering all possibilities, but scale is still a +challenge. Note that RacerD is not exhaustive: it has false negatives (missed +bugs). But in compensation it is fast, and effective (it finds bugs in +practice). + +Static analysis for concurrency has attracted a lot of attention from +researchers, but difficulties with scalability and precision have meant that +previous techniques have had little industrial impact. Automatic static race +detection itself has seen significant work. The most advanced approaches, +exemplified by the [Chord](http://www.cis.upenn.edu/~mhnaik/pubs/pldi06.pdf) +tool, often use a whole-program analysis paired with a sophisticated alias +analysis, two features we have consciously avoided. Generally speaking, the +leading research tools can be more precise, but RacerD is faster and can operate +without the whole program: we have opted to go for speed in a way that enables +industrial deployment on a large, rapidly changing codebase, while trying to use +as simple techniques as possible to cover many (not all) of the patterns covered +by slower but precise research tools. + +An industrial static analysis tool from +[Contemplate](http://homepages.inf.ed.ac.uk/dts/pub/avocs2015.pdf) also targets +@ThreadSafe annotations, but limits the amount of inter-procedural reasoning: +“This analysis is interprocedural, but to keep the overall analysis scalable, +only calls to private and protected methods on the same class are followed”. +RacerD does deep, cross-file and cross-class inter-procedural reasoning, and yet +still scales; the inter-class capability was one of the first requests from +Facebook engineers. +[A separate blog post looked at 100 recent data race fixes](https://code.facebook.com/posts/1537144479682247/finding-inter-procedural-bugs-at-scale-with-infer-static-analyzer/) +in Infer's deployment in various bug categories, and for data races observed +that 53 of them were inter-file (and thus involving multiple classes). +[See above](racerd#interprocedural) for an example +of RacerD's interprocedural capabilities. + +One reaction to the challenge of developing effective static race detectors has +been to ask the programmer to do more work to help the analyzer. Examples of +this approach include the +[Clang Thread Safety Analyzer](https://clang.llvm.org/docs/ThreadSafetyAnalysis.html), +the typing of [locks](https://doc.rust-lang.org/std/sync/struct.Mutex.html) in +Rust, and the use/checking of @GuardedBy annotations in +[Java](https://homes.cs.washington.edu/~mernst/pubs/locking-semantics-nfm2016.pdf) +including in +[Google's Error Prone analyzer](https://github.com/google/error-prone/blob/master/docs/bugpattern/GuardedBy.md). +When lock annotations are present they make the analyzer's life easier, and we +have +[GuardedBy checking as part of Infer](checkers-bug-types#UNSAFE_GUARDEDBY_ACCESS) +(though separate from the race detector). Our GuardedBy checker can find some +bugs that RacerD does not (see +[this example on anonymous inner classes](checkers-bug-types#anonymous_inner)), +but the race detector finds a greater number because it can work on un-annotated +code. It is possible to have a very effective race analysis without decreeing +that such annotations must be present. This was essential for our deployment, +since _requiring_ lock annotations would have been a show stopper for converting +many thousands of lines of code to a concurrent context. We believe that this +finding should be transportable to new type systems and language designs, as +well as to other analyses for existing languages. + +Another reaction to difficulties in static race detection has been to instead +develop dynamic analyses, automatic testing tools which work by running a +program to attempt to find flaws. Google's Thread Sanitizer is a widely used and +mature tool in this area, which has been used in production to find many bugs in +C-family languages. +[The Thread Sanitizer authors explicitly call out limitations with static race analyzers](http://www.cs.columbia.edu/~junfeng/11fa-e6121/papers/thread-sanitizer.pdf) +as part of their motivation: “It seems unlikely that static detectors will work +effectively in our environment: Google’s code is large and complex enough that +it would be expensive to add the annotations required by a typical static +detector”. + +We have worked to limit the annotations that RacerD needs, for reasons similar +those expressed by the Thread Sanitizer authors. And we have sought to bring the +complementary benefits of static analysis — possibility of cheaper analysis and +fast reporting, and ability to analyze code before it is placed in a context to +run — to race detection. But we are interested as well in the future in +leveraging ideas in the dynamic techniques to improve or add to our analysis for +race detection. + +## Limitations + +There are a number of known limitations to the design of the race detector. + +- It looks for races involving syntactically identical access paths, and misses + races due to aliasing +- It misses races that arise from a locally declared object escaping its scope +- It uses a boolean locks abstraction, and so misses races where two accesses + are mistakenly protected by different locks +- It assumes a deep ownership model, which misses races where local objects + refer to or contain non-owned objects. +- It avoids reasoning about weak memory and Java's volatile keyword + +Most of these limitations are consistent with the design goal of reducing false +positives, even if they lead to false negatives. They also allow technical +tradeoffs which are different than if we were to favour reduction of false +negatives over false positives. + +A different kind of limitation concerns the bugs searched for: Data races are +the most basic form of concurrency error, but there are many types of +concurrency issues out there that RacerD does not check for (but might in the +future). Examples include deadlock, atomicity, and check-then-act bugs (shown +below). You must look for these bugs yourself! + +``` +@ThreadSafe +public class SynchronizedList { + synchronized boolean isEmpty() { ... } + synchronized T add(T item) { ... } + +// Not thread safe!!! +public class ListUtil { + public void addIfEmpty(SynchronizedList list, T item) { + if (list.isEmpty()) { + // In a race, another thread can add to the list here. + list.add(item); + } + } +} +``` + +Finally, using `synchronized` blindly as a means to fix every unprotected write +or read is not always safe. Even with RacerD, finding, understanding, and fixing +concurrency issues is difficult. If you would like to learn more about best +practices, [Java Concurrency in Practice](http://jcip.net/) is an excellent +resource. diff --git a/website/docs/01-steps-for-ci.md b/website/docs/01-steps-for-ci.md new file mode 100644 index 000000000..3679d5b19 --- /dev/null +++ b/website/docs/01-steps-for-ci.md @@ -0,0 +1,64 @@ +--- +id: steps-for-ci +title: Recommended flow for CI +--- + +The recommended flow for CI integration is to determine the modified files, and +run the analysis in reactive mode starting from those files. If you would like +to run more than one analyzer, it is more efficient to separate the capture +phase, so that the result can be used by all the analyzers. + +### Differential Workflow + +Here's how to run infer on two versions of a project and compare the results in +general. + +Assume the project uses git, `feature` is the feature branch (the code change +you want to analyze), `master` is the master branch, and `make` builds the +project. + +```bash +# go to feature branch if not there already +git checkout feature +# get list of changed files +git diff --name-only origin/feature..origin/master > index.txt +## first run: feature branch +# run infer on the feature branch +infer capture -- make -j 4 # assuming a machine with 4 cores +infer analyze --changed-files-index index.txt +# store the infer report +cp infer-out/report.json report-feature.json +## second run: master branch +git checkout master +# run capture in reactive mode so that previously-captured source files are kept if they are up-to-date +infer capture --reactive -- make -j 4 +infer analyze --reactive --changed-files-index index.txt +# compare reports +infer reportdiff --report-current report-feature.json --report-previous infer-out/report.json +``` + +At the end of this process, "infer-out/differential/" contains three files, +which follow the same format as normal infer JSON reports: + +- introduced.json contains the issues found in the feature branch but not in + master; +- fixed.json contains the issues found in master but not in the feature branch; +- preexisting.json contains the issues found in both branches. + +### Example: Android Gradle + +The following CI script runs the `infer` and `eradicate` analyzers. Assume again +that `feature` is the feature branch, and `master` is the master branch. + +```bash +git diff --name-only origin/feature..origin/master > index.txt +infer capture -- ./gradlew --offline assembleDebug +infer analyze --fail-on-issue --eradicate --changed-files-index ./index.txt +``` + +Notice that + +- We use git to find the changed files `git diff --name-only` +- We run capture only once, and the output is kept for the subsequent analyses +- We run the eradicate analysis alongside the default analyses: `--eradicate` +- We analyze only the changed files `--changed-files-index ./index.txt` diff --git a/website/docs/02-about-infer.md b/website/docs/02-about-infer.md new file mode 100644 index 000000000..c69185e6d --- /dev/null +++ b/website/docs/02-about-infer.md @@ -0,0 +1,27 @@ +--- +id: about-Infer +title: About Infer +--- + +Infer is a static program analyzer for Java, C, and Objective-C, written in +[OCaml](https://ocaml.org/). Infer is deployed within Facebook and it is running +continuously to verify select properties of every code modification for the main +Facebook apps for Android and iOS, Facebook Messenger, Instagram, and other +apps. It can be used for other code too: Infer can also analyze C code, and Java +code that is not Android. At present Infer is tracking problems caused by null +pointer dereferences and resource and memory leaks, which cause some of the more +important problems on mobile. + +Infer came to Facebook with the acquisition of the verification startup +Monoidics in 2013. Monoidics was itself based on recent academic research, +particularly on separation logic and bi-abduction. + +We have broadened Infer's scope within the past few years. We now refer to the +original separation logic analysis as Infer.SL. We now also have Infer.AI, a +general analysis framework which is an interface to the modular analysis engine +which can be used by other kinds of program analyses (technically, called +''abstract interpretations'', hence the AI monicker). This added generality has +been used to develop instantiations of Infer.AI for security, concurrency and in +other domains. Additionally, we have Infer linters for describing shallow +syntactic analyses, using the AL language, because sometimes linters are just +what you need. diff --git a/website/docs/02-limitations.md b/website/docs/02-limitations.md new file mode 100644 index 000000000..058010d94 --- /dev/null +++ b/website/docs/02-limitations.md @@ -0,0 +1,83 @@ +--- +id: limitations +title: Limitations, etc +--- + +## Expectations + +We want to be clear that if you run Infer on your project you might get very +good results, but it is also possible that you don't. Although we have had good +fix rates working with Facebook mobile codebases, we are not making strong +claims about rates of false alarms or similar when applied to arbitrary +codebases. For example, we have had some success +[getting bugs fixed in the DuckDuckGo Android App](blog/2015/05/22/Infer-on-open-source-android-apps), +but we encountered many false alarms when running Infer on GNU coreutils. It is +typical of program verification and static analysis tools that their results +vary, and that is to be expected, e.g., because they are tackling undecidable +problems and because different codebases they are applied to will have been +coded differently. + +The good thing, though, is that you might get useful results! And, where the +results are imperfect, this can be taken as input for improvement. + +Apart from these general remarks, Infer has a number of specific technical +limitations, which we describe in terms of bug types and language features. + +## Bug types + +At present Infer is reporting on a restricted collection of +[bug types](/docs/checkers-bug-types), typically involving null pointers +and memory or resource leaks. The initial set of bug types Infer has focused on +was driven by the most pressing needs for serving the Facebook mobile +developers. Our approach has been to report less initially, to iterate with +developers and provide value to them, and gradually expand what we can do while +still providing value. + +Some bug types we don't report as of yet include + +- Array bounds errors +- Cast exceptions +- Leaking of tainted data +- Concurrency race conditions + +and more. In the first three cases we have partial treatments inside of Infer, +but we have not surfaced these capabilities yet; the reports are not of +sufficient quality to present to developers. For example, Infer can find some +potential array bounds errors, but many of its reports are false alarms and it +misses still more. + +Put another way: there is more work to do! + +## Language Features + +A different dimension in which Infer is limited concerns language features. +Infer either does not understand or has a weak treatment of + +- Concurrency, including Java's Concurrency Utilities and iOS's Grand Central + Dispatch +- Dynamic dispatch +- Reflection +- Android lifecycles +- Arithmetic +- and more + +Some of these problems are fundamental, largely open, problems in program +analysis (especially concurrency), while for others there is much prior and +successful work to draw upon (e.g., arithmetic) and are simply on our todo list +awaiting work. + +Thus, Infer's core algorithms can be understood as being sound with respect to +an idealized model (that is all soundness can ever be), but this idealized model +is some distance from real execution models for programs where Infer is +deployed. One consequence of this is that we cannot claim that Infer reasons +about all flows through an application, but only some flows. + +In approaching these limitations going forward we must consider solutions that +take into account our use case: to comment in minutes on modifications to large +codebases. Methods based on whole program analysis are challenging to consider +when approaching these problems for our deployment model. + +These limitations can be seen positively as opportunities for improvement, to do +more static analysis and program verification for the benefit of programmers +everywhere! We will be delighted if people from the static analysis and program +verification communities join us in working on these problems. diff --git a/website/docs/02-separation-logic-and-biabduction.md b/website/docs/02-separation-logic-and-biabduction.md new file mode 100644 index 000000000..58429a311 --- /dev/null +++ b/website/docs/02-separation-logic-and-biabduction.md @@ -0,0 +1,271 @@ +--- +id: separation-logic-and-bi-abduction +title: Separation logic and bi-abduction +--- + +export const Math = ({ code }) => ( + +); + +- [Separation logic](separation-logic-and-bi-abduction#separation-logic) +- [Bi-abduction](separation-logic-and-bi-abduction#bi-abduction) +- [Technical papers](separation-logic-and-bi-abduction#technical-papers) + +## Separation logic + +Separation logic is a novel kind of mathematical logic which facilitates reasoning about +mutations to computer memory. It enables scalability by breaking reasoning into chunks +corresponding to local operations on memory, and then composing +the reasoning chunks together. + +Separation logic is based on a logical connective called the _separating conjunction_ and pronounced "and separately". Separation logic formulae are interpreted over program allocated heaps. The logical formula + holds of a piece of program heap (a heaplet) when it can be divided into two sub-heaplets described by and . +For example, the formula + +--- + + + +--- + +can be read " points to and separately points to ". This formula describes precisely two allocated memory cells. The first cell is allocated at the address denoted by the pointer and the content of this cell is the value of . +The second cell is allocated at the address denoted by the pointer and the content of this second cell is the value of . Crucially, we know that there are precisely two cells because stipulates that they are separated and therefore the cells are allocated in two different parts of memory. In other words, +says that and do not hold the same value (i.e., these pointers are not aliased). +The heaplet partitioning defined by the formula above can visualized like so: + +![](/img/SepSplit.jpg) + +The important thing about separating conjunction is +the way that it fits together with mutation to computer memory; reasoning about program commands +tends to work by updating -conjuncts in-place, mimicking the operational in-place update of RAM. + +Separation logic uses Hoare triples of the form where is the precondition, a program part, and +the postcondition. Triples are abstract specifications of the behavior of the program. For example, we could take + +--- + + + +--- + +as a specification for a method which closes a resource given to it as a parameter. + +Now, suppose we have two resources and , described by +and we close the first of them. We think operationally in terms of updating the memory in place, leaving \\(r_2 \mapsto open\\) alone, +as described by this triple: + +--- + + + +--- + +What we have here is the that specification (spec) described how works by mentioning only one +piece of state, what is sometimes called a small specification, +and in (use) we use that specification to update a larger precondition in place. + +This is an instance of a general pattern. +There is a rule that lets you go from smaller to bigger specifications + +--- + + + +--- + +Our passage from (spec) to (use) is obtained by taking + +- to be +- to be , and +- to be + +This rule is called the _frame rule_ of separation logic. It is named after the frame problem, a classic problem in artificial intelligence. +Generally, the describes state that remains unchanged; the terminology comes from the analogy of +a background scene in an animation as unchanging while the objects and characters within the scene change. + +The frame rule is the key to the principle of local reasoning in separation logic: reasoning and specifications +should concentrate on the resources that a program accesses (the footprint), without mentioning what +doesn't change. + +## Bi-abduction + +Bi-abduction is a form of logical inference for separation logic which automates the key ideas about local +reasoning. + +Usually, logic works with validity or entailment statements like + +--- + + + +--- + +which says that implies . Infer uses an extension of this inference question in an internal +theorem prover while it runs over program statements. +Infer's question + +--- + + + +--- + +is called _bi-abduction_. The problem here is for the theorem prover to discover a pair of frame and antiframe formulae that make the entailment statement valid. + +Global analyses of large programs are normally computational untractable. However, +bi-abduction allows to break the large analysis of a large program in small independent analyses of its procedures. This gives Infer the ability to scale independently of the size of the analyzed code. Moreover, by breaking the analysis in small +independent parts, when the full program is analyzed again because +of a code change the analysis results of the unchanged part of the +code can be reused and only the code change needs to be re-analyzed. This process is called incremental analysis and it +is very powerful when integrating a static analysis tool like infer in a development environment. + +In order to be able to decompose a global analysis in small independent analyses, let's first consider how a function +call is analyzed in separation logic. Assume we have the following spec for a function : + +--- + + + +--- + +and by analyzing the caller function, we compute that before +the call of , the formula hold. Then +to utilize the specification of the following implication must holds: + +--- + + + +--- + +Given that, +bi-abduction is used at procedure call sites for two reasons: to discover missing state that is needed for the above implication to hold and allow the analysis +to proceed (the antiframe) as well as state that the procedure leaves unchanged (the frame). + +To see how this works suppose we have some bare code + +--- + + + +--- + +but no overall specification; +we are going to describe how to discover a pre/post spec for it. +Considering the first statement and the (spec) above, the human might say: if only we had + in the precondition then we could proceed. +Technically, +we ask a bi-abduction question + +--- + + + +--- + +and we can fill this in easily by picking and , +where emp means the empty state. The emp is recording that at the start we presume nothing. So we obtain the trivially true implication: + +--- + + + +--- + +which, by applying logical rules, can be re-written equivalently to: + +--- + + + +--- + +Notice that this satisfy the (Function Call) requirement to correctly make the call. +So let's add that information in the pre, and while we are at it +record the information in the post of the first statement that comes from (spec). + +--- + + + + + + +--- + +Now, let's move to the second statement. Its precondition in the partial symbolic execution trace just given +does not have the information needed by , so we can fill that in and continue by +putting in the pre. While we are at it we can thread this assertion back to the beginning. + +--- + + + + + + +--- + +This information on what to thread backwards can be obtained as the antiframe part of the bi-abduction question + +--- + + + +--- + +where the solution picks +. +Note that the antiframe is precisely the information missing from the precondition in order for to proceed. On the other hand, the frame is the portion of state not changed by ; +we can thread that through to the overall postconditon +(as justified by the frame rule), giving us + +--- + + + + + + + +--- + +Thus, we have obtained a pre and post for this code by symbolically executing it, using bi-abduction +to discover preconditions (abduction of antiframes) as well as untouched portions of memory (frames) as we go along. + +In general, bi-abduction +provides a way to infer a pre/post specs from bare code, as long as we know specs for the primitives at the base level of the code. The human does not need to write preconditions and postconditions for all the procedures, +which is the key to having a high level of automation. +This is the basis for how Infer works, why it can scale, and how it can analyze code changes incrementally. + +Context: The logical terminology we have been using here comes from AI and philosophy of science. +Abductive inference was introduced by the philosopher Charles Peirce, and described as the mechanism +underpinning hypothesis formation (or, guessing what might be true about the world), the most +creative part of the scientific process. +Abduction and the frame problem have both attracted significant attention in AI. +Infer uses an automated form of abduction to generate +preconditions describing the memory that a program touches (the antiframe part above), and frame inference to +discover what isn't touched. +Infer then uses deductive reasoning to +calculate a formula describing the effect of a program, starting from the preconditions. +In a sense, Infer approaches automated reasoning about programs by mimicking what a human might do when trying to understand a program: it abduces what the program needs, and deduces conclusions of that. +It is when the reasoning goes wrong that Infer reports a potential bug. + +This description is by necessity simplified compared to what Infer actually does. +More technical information can be found in the following papers. The descriptions in the papers are +precise, but still simplified; there are many engineering decisions not recorded there. Finally, beyond the papers, +you can read the source code if you wish! + +## Technical papers + +The following papers contain some of the technical background on Infer and information on how it is used inside Facebook. + +- Local Reasoning about Programs that Alter Data Structures. An early separation logic paper which advanced ideas about local reasoning and the frame rule. +- Smallfoot: Modular Automatic Assertion Checking with Separation Logic. First separation logic verification tool, introduced frame inference +- A Local Shape Analysis Based on Separation Logic. Separation logic meets abstract interpretation; calculating loop invariants via a fixed-point computation. +- Compositional Shape Analysis by Means of Bi-Abduction. + The bi-abduction paper. +- Moving Fast with Software Verification. A paper about the way we use Infer at Facebook. diff --git a/website/docs/03-checker-bug-types.md b/website/docs/03-checker-bug-types.md new file mode 100644 index 000000000..6ab1a885a --- /dev/null +++ b/website/docs/03-checker-bug-types.md @@ -0,0 +1,1017 @@ +--- +id: checkers-bug-types +title: Checkers bug types +--- + +Here is an overview of the types of bugs currently reported by Infer checkers. + + +## Captured Strong Self + +This will happen in one of two cases generally: +1. One uses `weakSelf` but forgot to declare it weak first. +2. One is using `strongSelf`, declared in a block, in another (inside) block. This changes the delicate balance of the +`weakSelf`/`strongSelf` use in the first block. The retain cycle is avoided there because `strongSelf` is a local variable +to the block. If `strongSelf` is used in the inside block, then it's not a local variable anymore, but a captured variable. + + +## Checkers immutable cast + +This error type is reported in Java. It fires when an immutable collection is +returned from a method whose type is mutable. + +```java + public List getSomeList() { + ImmutableList l = foo(...); + return l; + } +``` + +This can lead to a runtime error if users of `getSomeList` try to modify the +list e.g. by adding elements. + +Action: you can change the return type to be immutable, or make a copy of the +collection so that it can be modified. + + +## Deadlock + +This error is currently reported in Java. A deadlock occurs when two distinct +threads try to acquire two locks in reverse orders. The following code +illustrates a textbook example. Of course, in real deadlocks, the lock +acquisitions may be separated by deeply nested call chains. + +```java + public void lockAThenB() { + synchronized(lockA) { + synchronized(lockB) { + // do something with both resources + } + } + } + + public void lockBThenA() { + synchronized(lockB) { + synchronized(lockA) { + // do something with both resources + } + } + } +``` + +The standard solution to a deadlock is to fix an order of lock acquisition and +adhere to that order in all cases. Another solution may be to shrink the +critical sections (i.e., the code executing under lock) to the minimum required. + +Old-style containers such as `Vector` are synchronized on the object monitor, +which means that deadlocks can occur even without explicit synchronisation on +both threads. For instance: + +```java + public void lockAThenAddToVector() { + synchronized(lockA) { + vector.add(object); + } + } + + public void lockVectorThenA() { + synchronized(vector) { + synchronized(lockA) { + // do something with both resources + } + } + } +``` + +Infer has support for detecting these deadlocks too. + +To suppress reports of deadlocks in a method `m()` use the +`@SuppressLint("DEADLOCK")` annotation, as follows: + +```java + import android.annotation.SuppressLint; + + @SuppressLint("DEADLOCK") + public void m() { + ... + } +``` + + +## Dead store + +This error is reported in C++. It fires when the value assigned to a variables +is never used (e.g., `int i = 1; i = 2; return i;`). + + +## Empty vector access + +This error type is reported only in C++, in versions >= C++11. + +The code is trying to access an element of a vector that Infer believes to be +empty. Such an access will cause undefined behavior at runtime. + +```c++ +#include +int foo(){ + const std::vector vec; + return vec[0]; // Empty vector access reported here +} +``` + + +## Field should be nullable + +This error type is reported in Java. It fires when a field is not marked +`@Nullable`, but it is + +- Nullified in a method + +```java + private List idList; + public void reset() { + idList = null; + ... + } +``` + +- Or tested for `null` in a method + +```java + private List idList; + public void doSomethingWithIdList() { + if (idList == null) { ... } + } +``` + +Action: + +- You may want to add `@Nullable` annotation in the field declaration. This will + inform Infer that the field is intended to be set to `null` at some point. For + such fields, Infer will emit a warning if you forget to check for `null` + before accessing them. + +```java + import javax.annotation.Nullable; + ... + private @Nullable List idList; + public void doSomethingWithIdList() { + int numIds = idList.size(); // Infer will complain that idList is not null-checked here + ... + } +``` + +- If the field is never intended to be nullable, please refactor your codes so + that it will never be assigned or compared with `null`. + +```java + private List idList = new List(); + ... +``` + + +## Fragment retains view + +This error type is Android-specific. It fires when a `Fragment` type fails to +nullify one or more of its declared `View` fields in `onDestroyView`. In +performance-sensitive applications, a `Fragment` should initialize all `View`'s +in `onCreateView` and nullify them in `onDestroyView`. If a `Fragment` is placed +on the back stack and fails to nullify a `View` in `onDestroyView`, it will +retain a useless reference to that `View` that will not be cleaned up until the +`Fragment` is resumed or destroyed. + +Action: Nullify the `View` in question in `onDestroyView`. + + +## Interface not thread-safe + +This error indicates that you have invoked an interface method not annotated +with `@ThreadSafe` from a thread-safe context (e.g., code that uses locks or is +marked `@ThreadSafe`). The fix is to add the `@ThreadSafe` annotation to the +interface or to the interface method. For background on why these annotations +are needed, see the detailed explanation +[here](racerd#interface-not-thread-safe). + + +## Ivar not null checked + +This error type is only reported in Objective-C. This is similar to Null +dereference, but Infer hasn't found a whole trace where the error can happen, +but only found that a null dereference can happen if an instance variable of a +parameter is `nil`. For example: + +```objectivec + -(int) foo { + B b* = [self->_a foo]; // sending a message with receiver nil returns nil + return b->x; // dereferencing b, potential NPE if you pass nil as the argument a. + } +``` + +Possible solutions are adding a check for `nil`, or making sure that the method +is not called with `nil`. + + +## Lock Consistency Violation + +This is a C++ and Objective C error reported whenever: + +- A class contains a member `lock` used for synchronization (most often a + `std::mutex`). +- It has a public method which writes to some member `x` while holding `lock`. +- It has a public method which reads `x` without holding `lock`. + +The above may happen through a chain of calls. Above, `x` may also be a +container (an array, a vector, etc). + +### Fixing Lock Consistency Violation reports + +- Avoid the offending access (most often the read). Of course, this may not be + possible. +- Use synchronization to protect the read, by using the same lock protecting the + corresponding write. +- Make the method doing the read access private. This should silence the + warning, since Infer looks for a pair of non-private methods. Objective-C: + Infer considers a method as private if it's not exported in the header-file + interface. + + +## Mixed self weakSelf + +This happens when an Objective-C block captures both `self` and `weakSelf`, a +weak pointer to `self`. Possibly the developer meant to capture only `weakSelf` +to avoid a retain cycle, but made a typo and used `self` as well in the block, +instead of `strongSelf`. In this case, this could cause a retain cycle. + + +## Multiple weakSelf + +An Objective-C block uses `weakSelf` more than once. This could lead to unexpected behaviour. Even if `weakSelf` is not nil in the first use, it could be nil in the following uses since the object that `weakSelf` points to could be freed anytime. One should assign it to a strong pointer first, and then use it in the block. + + +## Memory leak + +### Memory leak in C + +This error type is only reported in C and Objective-C code. In Java we do not +report memory leaks because it is a garbage collected language. + +In C, Infer reports memory leaks when objects are created with `malloc` and not +freed. For example: + +```c +-(void) memory_leak_bug { + struct Person *p = malloc(sizeof(struct Person)); +} +``` + +### Memory leak in Objective-C + +Additionally, in Objective-C, Infer reports memory leaks that happen when +objects from Core Foundation or Core Graphics don't get released. + +```objectivec +-(void) memory_leak_bug_cf { + CGPathRef shadowPath = CGPathCreateWithRect(self.inputView.bounds, NULL); //object created and not released. +} +``` + + +## Null Dereference + +Infer reports null dereference bugs in C, Objective-C and Java. The issue is +about a pointer that can be `null` and it is dereferenced. This leads to a crash +in all the above languages. + +### Null dereference in C + +Here is an example of an inter-procedural null dereference bug in C: + +```c +struct Person { + int age; + int height; + int weight; +}; +int get_age(struct Person *who) { + return who->age; +} +int null_pointer_interproc() { + struct Person *joe = 0; + return get_age(joe); +} +``` + +### Null dereference in Objective-C + +In Objective-C, null dereferences are less common than in Java, but they still +happen and their cause can be hidden. In general, passing a message to nil does +not cause a crash and returns `nil`, but dereferencing a pointer directly does +cause a crash as well as calling a `nil` block.C + +```objectivec +-(void) foo:(void (^)())callback { + callback(); +} + +-(void) bar { + [self foo:nil]; //crash +} +``` + +Moreover, there are functions from the libraries that do not allow `nil` to be +passed as argument. Here are some examples: + +```objectivec +-(void) foo { + NSString *str = nil; + NSArray *animals = @[@"horse", str, @"dolphin"]; //crash +} + +-(void) bar { + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); //can return NULL + ... + CFRelease(colorSpace); //crashes if called with NULL +} +``` + +### Null dereference in Java + +Many of Infer's reports of potential NPE's come from code of the form + +```java + p = foo(); // foo() might return null + stuff(); + p.goo(); // dereferencing p, potential NPE +``` + +If you see code of this form, then you have several options. + + If you are unsure whether or not foo() will return null , you should +ideally i. Change the code to ensure that foo() can not return null ii. Add a +check for whether p is null, and do something other than dereferencing p when it +is null. + +Sometimes, in case ii it is not obvious what you should do when p is null. One +possibility (a last option) is to throw an exception, failing early. This can be +done using checkNotNull as in the following code: + +```java + // code idiom for failing early + + import static com.google.common.base.Preconditions.checkNotNull; + + //... intervening code + + p = checkNotNull(foo()); // foo() might return null + stuff(); + p.goo(); // dereferencing p, potential NPE +``` + +The call checkNotNull(foo()) will never return null; in case foo() returns null +it fails early by throwing an NPE. + + If you are absolutely sure that foo() will not be null , then if you +land your diff this case will no longer be reported after your diff makes it to +master. In the future we might include analysis directives (hey, analyzer, p is +not null!) like in Hack that tell the analyzer the information that you know, +but that is for later. + + +## Parameter not null checked + +This error type is reported only in Objective-C. It is similar to Null +dereference, but Infer hasn't found a whole trace where the error can happen, +but only found that a null dereference can happen if you call a method with nil +as an argument. Therefore it is only a warning. For example: + +```objectivec + -(int) foo:(A* a) { + B b* = [a foo]; // sending a message with receiver nil returns nil + return b->x; // dereferencing b, potential NPE if you pass nil as the argument a. + } +``` + +or when the parameter is a block: + +```objectivec + -(void) foo:(void (^)(BOOL))block { + block(YES); // calling a nil block will cause a crash. + } +``` + +Possible solutions are adding a check for `nil`, or making sure that the method +is not called with `nil`. When an argument will never be `nil`, you can add the +annotation `nonnull` to the argument's type, to tell Infer (and the type +system), that the argument won't be `nil`. This will silence the warning. + + +## Premature nil termination argument + +This error type is reported in C and Objective-C. In many variadic methods, +`nil` is used to signify the end of the list of input objects. This is similar +to nil-termination of C strings. If one of the arguments that is not the last +argument to the method is `nil` as well, Infer reports an error because that may +lead to unexpected behavior. + +An example of such variadic methods is +[arrayWithObjects](https://developer.apple.com/library/prerelease/ios/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/index.html#//apple_ref/occ/clm/NSArray/arrayWithObjects) + +```objectivec + NSArray *foo = [NSArray arrayWithObjects: @"aaa", str, @"bbb", nil]; +``` + +In this example, if `str` is `nil` then an array `@[@"aaa"]` of size 1 will be +created, and not an array `@[@"aaa", str, @"bbb"]` of size 3 as expected. + + +## Resource leak + +Infer reports resource leaks in C, Objective-C and Java. In general, resources +are entities such as files, sockets, connections, etc, that need to be closed +after being used. + +### Resource leak in C + +This is an example of a resource leak in C code: + +```c +-(void) resource_leak_bug { + FILE *fp; + fp=fopen("c:\\test.txt", "r"); // file opened and not closed. +} +``` + +### Resource leak in Java + +For the remaining of this section, we will consider examples of resource leaks +in Java code. + +TIP: A common source of bugs is exceptions skipping past close() +statements. That is the first thing to look for if INFER reports a potential +resource leak. + +### Basics and Standard Idiom + +Some objects in Java, the resources, are supposed to be closed when you +stop using them, and failure to close is a resource leak. Resources +include input streams, output streams, readers, writers, sockets, http +connections, cursors, and json parsers. + +The standard idiom is + +```java + // Standard idiom + Allocate resource + try { + do some stuff + } finally { + close resource + } +``` + +or more for example, + +```java + // Standard Idiom + public static void foo () throws IOException{ + FileOutputStream fos = new FileOutputStream(new File("whatever.txt")); + try { + fos.write(7); + } finally { + fos.close(); + } + } +``` + +and you should use the standard idiom for the most part, when you don't want to +return the resource to the surrounding context. + +Sometimes people just leave out close(), and that is a bug, but more typically +exceptional paths are the root of the problem, as in + +```java + // leak because of exception + public static void foo () throws IOException { + FileOutputStream fos = new FileOutputStream(new File("whatever.txt")); + fos.write(7); //DOH! What if exception? + fos.close(); + } +``` + +where an exception in fos.write will cause execution to skip past the close() +statement. + +#### Multiple Resources Bugs + +We can deal with multiple resources correctly and simply just by nesting the +standard idiom. + +```java + // Two Resources nested + public static void foo() throws IOException { + FileInputStream fis = new FileInputStream(new File("whatever.txt")); + try { + FileOutputStream fos = new FileOutputStream(new File("everwhat.txt")); + try { + fos.write(fis.read()); + } finally { + fos.close(); + } + } finally { + fis.close(); + } + } +``` + +Bugs often occur when using multiple resources in other ways because of +exceptions in close() methods. For example, + +```java + // Classic Two Resources Bug + public static void foo() throws IOException { + FileInputStream fis = null; + FileOutputStream fos = null; + try { + fis = new FileInputStream(new File("whatever.txt")); + fos = new FileOutputStream(new File("everwhat.txt")); + fos.write(fis.read()); + } finally { + if (fis!=null) fis.close(); + if (fos!=null) fos.close(); + } + } +``` + +Here, if there is an exception in the call to fis.close() execution will skip +past fos.close(); a leak. + +Another way, besides the standard idiom, to deal with this problem is to swallow +exceptions. + +```java + // Two Resources Fix 1 + public static void foo() throws IOException { + FileInputStream fis = null; + FileOutputStream fos = null; + try { + fis = new FileInputStream(new File("whatever.txt")); + fos = new FileOutputStream(new File("everwhat.txt")); + fos.write(fis.read()); + } finally { + try { + if (fis!=null) fis.close(); + } catch (Exception e) {}; // Exception swallowing + if (fos!=null) fos.close(); + } + } +``` + +You can also swallow the exception on the output stream. Some people prefer not +to swallow output stream exceptions, and also flush before closing. +http://code.google.com/p/guava-libraries/issues/detail?id=1118 + +Notice that the nested standard idiom does not need the checks for null, which +are in there in this case to protect against the case when one of the +allocations throws an exception, in which case one would get a +NullPointerException. + +### Nested_Allocations + +When a resource allocation is included as an argument to a constructor, if the +constructor fails it can leave an an unreachable resource that no one can close. + +For example gzipOutputStream = new GZIPOutputStream(new FileOutputStream(out)); +is bad in case the outer constructor, GZIPOutputStream, throws an exception. In +that case, no one will have a hold of the FileOutputStream and so no one will be +able to close it. + +In such a case you need to move the allocation the FileOutputStream out of the +nested position and name it, so you are able to close if anything goes wrong +during execution of the GZIPOutputStream constructor. + +Here are resources that can throw exceptions i their constructor(s). + +- ObjectInputStream , ObjectOutputStream, PipedInputStream, PipedOutputStream, + PipedReader, PipedWriter, JarInputStream, JarOutputStream, GZIPInputStream, + GZIPOutputStream , ZipFile all throw IOException +- PrintStream throws UnsupportedEncodingException + +The constructors for FileInputStream, FileOutputStream and RandomAccessFile +throw FileNotFoundException, but these cases are not problematic in the sense +that their arguments are not resources and so they do not cause the nested +resource leak. + +### Allocation of JSonParser and Cursor resources + +Some resources are created inside libraries instead of by "new". + +Cursor is an interface, the actual resources are something like SQLiteCursor. +So, every time you call a function that returns a Cursor object, there is an +allocation. + +For instance, in the functions from SQLiteDatabase query(…) and rawQuery(…) +allocate a cursor resource. For SQLiteQueryBuilder, ContentProviderClient, +ContentResolver. MediaStore and DownloadManager it is only query(…) Cursor +objects cursor created by these functions need to be closed (i.e., +cursor.close()). + +Similarly, JsonParser is an abstract class, and create a resource in functions +from the class JsonFactory createParser(byte[] data) createParser(byte[] data, +int offset, int len) createParser(String content) createParser(URL url) +createParser(File f) JsonParser objects js created by these functions need to be +closed (jp.close()). On the other hand . JasonParsers gotten from +createParser(InputStream in) and createParser(Reader r) give you JsonParsers +that don’t need to be closed. This is because they receive the resource from +somewhere that will maintain the responsibility to close it. + +### Escaping resources and exceptions + +Sometimes you want to return a resource to the outside, in which case you should +not close it, but you still need to be careful of exceptions in case control +skips past the return leaving no one to close. Here is a simple example of a +positive use of escaping resources. + +```java + // An escaping resource, shouldn't close + public BugReportAttachment createAttachment(File reportDirectory, String fileName) + throws FileNotFoundException { + File file = new File(reportDirectory, fileName); + OutputStream stream = new FileOutputStream(file); + return new BugReportAttachment(Uri.fromFile(file), stream); + } +``` + +In this case it is intended that an object that wraps `stream` is passed to the +caller of `createAttachment`. You should certainly not close stream here, +because it is being passed to the outside. + +But for escaping resources like this you still need to be careful of exceptions. +For example, in + +```java + // An escaping resource, and a leak + public BugReportAttachment createAttachment(File reportDirectory, String fileName) + throws FileNotFoundException { + File file = new File(reportDirectory, fileName); + OutputStream stream = new FileOutputStream(file); + stream.write(7); + return new BugReportAttachment(Uri.fromFile(file), stream); + } +``` + +if stream.write(7) throws an exception, then no one will have a hold of stream, +and no one will be able to close it; a leak. + +### Java 7's try-with-resources + +**(For use with Java 7 only)** + +Clearly, accounting for the ramifications of all the exceptional cases is +complicated, and there is a better way in Java 7. + +```java + // Two Resources Fix 2; via try-with-resources + public static void foo() throws IOException { + try ( + FileInputStream fis = new FileInputStream(new File("whatever.txt")); + FileOutputStream fos = new FileOutputStream(new File("everwhat.txt")) + ) { + fos.write(fis.read()); + } + } +``` + +All the complicated exceptional cases above are (apparently) covered by this +construct, and the result is much simpler. + +So, if you are trying to fix a potential leak in code with multiples resources +you can go ahead and try to understand whether the potential leak is real. Or, +if the code is complex and it is hard to figure out, it would be perfectly +legitimate to simply convert the code over to try-with-resources if you have +access to Java 7, so as to save yourself some brain-cycles. You will also end up +with cleaner code. + +If try-with-resources is so great you should always use it. But you +shouldn't… Try-with-resources gives resources static scoping, and works via a +stack discipline. Sometimes, you want a resource to persist beyond scope, as in +the escaping example above. In an escaping example maybe you could refactor lots +of code so that try-with-resources applies, and maybe you cannot in a sensible +way. This just illustrates that, though you might hear people say that +try-with-resources "solves" the resource problem, it does not. It is very +useful, but you cannot use it blindly when you see a resource-allocation site. + + +## Retain cycle + +A retain cycle is a situation when object A retains object B, and object B +retains object A at the same time. Here is an example: + +```objectivec +@class Child; +@interface Parent : NSObject { + Child *child; // Instance variables are implicitly __strong +} +@end +@interface Child : NSObject { + Parent *parent; +} +@end +``` + +You can fix a retain cycle in ARC by using \_\_weak variables or weak properties +for your "back links", i.e. links to direct or indirect parents in an object +hierarchy: + +```objectivec +@class Child; +@interface Parent : NSObject { + Child *child; +} +@end +@interface Child : NSObject { + __weak Parent *parent; +} +@end +``` + + +## Static initialization order fiasco + +This error is reported in C++. It fires when the initialization of a static +variable `A`, accesses a static variable `B` from another translation unit +(usually another `.cpp` file). There are no guarantees whether `B` has been +already initialized or not at that point. + +For more technical definition and techniques to avoid/remediate, see the +[FAQ](https://isocpp.org/wiki/faq/ctors#static-init-order). + + +## Thread-safety violation + +This warning indicates a potential data race in Java. The analyser is called +RacerD and this section gives brief but a mostly complete description of its +features. See the [RacerD page](/docs/racerd) for more in-depth information +and examples. + +NB this warning **is not related to @GuardedBy** and not issued by the same +analysis. + +### Thread-safety: What is a data race + +Here a data race is a pair of accesses to the same member field such that: + +- at least one is a write, and, +- at least one occurs without any lock synchronization, and, +- the two accesses occur on threads (if known) which can run in parallel. + +### Thread-safety: Potential fixes + +- Synchronizing the accesses (using the `synchronized` keyword, thread-exclusion + such as atomic objects, `volatile` etc). +- Making an offending method private -- this will exclude it from being checked + at the top level, though it will be checked if called by a public method which + may itself, e.g., hold a lock when calling it. +- Putting the two accesses on the same thread, e.g., by using `@MainThread` or + `@ThreadConfined`. + +### Thread-safety: Conditions checked before reporting + +The class and method are not marked `@ThreadSafe(enableChecks = false)`, and, + +- The method is declared `synchronized`, or employs (non-transitively) locking, + or, +- The class is not marked `@NotThreadSafe`, and, + - The class/method is marked `@ThreadSafe,` or one of the configured synonyms + in `.inferconfig`, or, + - A parent class, or an override method are marked with the above annotations. + +NB currently RacerD **does not take into account `@GuardedBy`**. + +### Thread-safety: Thread annotations recognized by RacerD + +These class and method annotations imply the method is on the main thread: +`@MainThread`, `@UiThread` + +These method annotations imply the method is on the main thread: `@OnBind`, +`@OnEvent`, `@OnMount`, `@OnUnbind`, `@OnUnmount` + +Both classes of annotations work through the inheritance tree (i.e. if a parent +class or method is marked with one of these annotations, so is the child class / +method override). + +In addition to these, RacerD recognizes many lifecycle methods as necessarily +running on the main thread, eg `Fragment.onCreate` etc. + +Finally, the thread status of being on the main thread propagates backwards +through the call graph (ie if `foo` calls `bar` and `bar` is marked `@UiThtread` +then `foo` is automatically considered on the main thread too). Calling +`assertMainThread`, `assertOnUiThread`, `checkOnMainThread` has the same effect. + +NB RacerD currently **does not recognize `@WorkerThread`, `@BinderThread` or +`@AnyThread`**. + +### Thread-safety: Other annotations and what they do + +These annotations can be found at `com.facebook.infer.annotation.*`. + +- `@Functional` This is a method annotation indicating the method always returns + the same value. When a method `foo` is annotated `@Functional`, RacerD will + ignore any writes of the return value of `foo`. For example, in + `this.x = foo()`, the write to `this.x` is ignored. The reasoning is that if + the method returns the same value whenever it's called, any data race on + `this.x` is benign, if that is the only write. + +- `@ThreadConfined` This is a class/method/field annotation which takes a single + parameter which can be `UI`, `ANY` or a user chosen string. It indicates to + RacerD a thread identifier for the class/method/field. Thus, + `@ThreadConfined(UI)` is equivalent to `@UiThread`, and `@ThreadConfined(ANY)` + is equivalent to not having the annotation at all, for classes and methods. + When this annotation is applied to a field it instructs Infer to assume + (without checking) that all accesses to that field are made on the same thread + (and can, therefore, not race by definition). The intention is that RacerD + uses that to detect exclusion between accesses occurring on the same thread. + However, only the UI thread is supported at this time, and any user provided + value is considered equal to `UI`. + +- `@VisibleForTesting` A method annotation making Infer consider the method as + effectively `private`. This means it will not be checked for races against + other non-private methods of the class, but only if called by one. + +- `@ReturnsOwnership` A method annotation indicating that the method returns a + freshly owned object. Accesses to the returned value will not be considered + for data races, as the object is in-effect unique and not accessible yet from + other threads. The main utility of this annotation is in interfaces, where + Infer cannot look up the implementation and decide for itself. + + +## UI Thread Starvation + +This error is reported in Java, and specifically on Android. These reports are +triggered when a method that runs on the UI thread may block, thus potentially +leading to an Application Not Responding error. + +Infer considers a method as running on the UI thread whenever: + +- The method, one of its overrides, its class, or an ancestral class, is + annotated with `@UiThread`. +- The method, or one of its overrides is annotated with `@OnEvent`, `@OnClick`, + etc. +- The method or its callees call a `Litho.ThreadUtils` method such as + `assertMainThread`. + +The issue is reported when a method deemed to run on the UI thread + +- Makes a method call which may block. +- Takes a lock, and another thread takes the same lock, and before releasing it, + makes a call that may block. + +Calls that may block are considered: + +- Certain I/O calls. +- Two way `Binder.transact` calls. +- Certain OS calls. +- `Future` or `AsyncTask` calls to `get` without timeouts, or with too large + timeouts. + +To suppress starvation reports in a method `m()` use the +`@SuppressLint("STARVATION")` annotation, as follows: + +```java + import android.annotation.SuppressLint; + + @SuppressLint("STARVATION") + public void m() { + ... + } +``` + +To signal to Infer that a method does not perform any blocking calls, despite +appearences, you can use the `@NonBlocking` annotation: + +```java + import com.facebook.infer.annotation.NonBlocking; + + @NonBlocking + public void m() { + ... + } +``` + +This instructs Infer to filter out any potentially blocking calls in `m()` +(also, transitively), and thus any other method can expect no starvation reports +due to a call to `m()`. You will need to set up your class path appropriately to +include the JAR files in `infer/annotations` for this annotation to work. + + +## Strict mode violation + +Android has a feature called +[strict mode](https://developer.android.com/reference/android/os/StrictMode), +which if enabled, will flag the occasions where the main thread makes a call +that results in disk I/O, waiting on a network socket, etc. The analysis +catching starvation errors and deadlocks (the `--starvation` analysis) has the +ability to statically detect such violations. + +To suppress this warning, it's enough to annotate the offending method with +`@SuppressLint("STRICT_MODE_VIOLATION")`. + + +## StrongSelf Not Checked + +When a block captures `weakSelf` in the following pattern: + +``` +__weak __typeof(self) weakSelf = self; + int (^my_block)() = ^() { + __strong __typeof(weakSelf) strongSelf = weakSelf; + int y = strongSelf->x; +``` + +the variable `strongSelf` should be checked for `null` before being used, +otherwise this could cause a crash because the weak pointer `weakSelf` could be +`null`. + + +## Unsafe GuardedBy Access + +Infer reports issues when a field or method is accessed when a lock is not held, +when the field or method has been annotated with `@GuardedBy(lock)`. In many +cases the lock is `this`. Here is a basic example: + +``` + +import javax.annotation.concurrent.GuardedBy; + +class GB{ + +@GuardedBy("this") +int y; + +void foo(){ y = 22; } + +void goo(){ synchronized (this) {y = 82;} } + +} +``` + +Infer duly warns on the access to `y` in `foo()`, but not in `goo()`. + +``` +GB.java:9: error: UNSAFE_GUARDED_BY_ACCESS + The field `GB.y` is annotated with `@GuardedBy("GB.this")`, but the lock `GB.this` is not held during the access to the field at line 9. Since the current method is non-private, it can be called from outside the current class without synchronization. Consider wrapping the access in a `synchronized(GB.this)` block or making the method private. + 7. int y; + 8. + 9. > void foo(){ y = 22; } + 10. + 11. void goo(){ synchronized (this) {y = 82;} } +``` + + Infer can distinguish between different locks. A +particularly tricky example comes up sometimes where different occurrences of +the keyword `this` in the same file mean different things ("this this is not +that this"). + +``` + +class Outer{ + +@GuardedBy("this") +Object y; + +Object foo(){ + return new Object () { + void m0() { + synchronized (this) + { y = null; } + } + void m1() { + synchronized (Outer.this) + { y = null; } + } + }; +} + +} +``` + +In this use of "anonymous inner classes" the occurrence of `this` in method +`m0()` refers to the closure created when the new object is created, not to the +`this` that guards `y`. It is a bug, and the fix is to refer to the proper +`this` as in method `m1()`. Infer correctly warns on the access in `m0()` but +not `m1()`. + +``` +Outer.java:13: error: UNSAFE_GUARDED_BY_ACCESS + The field `Outer.y` is annotated with `@GuardedBy("Outer.this")`, but the lock `Outer.this` is not held during the access to the field at line 13. Since the current method is non-private, it can be called from outside the current class without synchronization. Consider wrapping the access in a `synchronized(Outer.this)` block or making the method private. + 11. void m0() { + 12. synchronized (this) + 13. > { y = null; } + 14. } + +``` + + +## weakSelf In NOESCAPE Block + +In many methods that take a block as an argument, the block position is annotated with NS_NOESCAPE to mark that the block +passed to this method won't be leaving the current scope. In those cases, there is no need to use `weakSelf` to avoid the block to capture `self`. This issue type flags this case. diff --git a/website/docs/03-eradicate-warnings.md b/website/docs/03-eradicate-warnings.md new file mode 100644 index 000000000..f413ff6ca --- /dev/null +++ b/website/docs/03-eradicate-warnings.md @@ -0,0 +1,274 @@ +--- +id: eradicate-warnings +title: Eradicate warnings +--- + +Below you will find a description of all the warnings reported by +[Eradicate](/docs/eradicate). + +## Eradicate null field access + +A field access of the form x.field where x could be null. + +Example: + +```java +class C { + void foo(@Nullable C x) { + x.field = 3; + } +} +``` + +Action: Make sure that x cannot be null by changing the code or changing +annotations. If this cannot be done, the only choice is to use defensive +programming: if (x != null) { ... x.field ... } else { ... you need to decide +what to do when x is null ... } The general recommendation is to push null +checks up the call chain as much as possible in order to detect the place where +null values originate and deal with them at that point. When a null value is +propagated down the call chain it is often difficult to determine its origin +without global knowledge of what the program does. For example, a null value +could originate in third party libraries which are not under your control, and +the best place to check for null is typically immediately after calling these +library functions. + + +## Eradicate null method call + +A method call x.m(...) where x could be null. + +Example: + +```java +class C { + void foo(@Nullable C x) { + String s = x.toString(); + } +} +``` + +Action: Same as for Null field access. + + +## Eradicate field not nullable + +An assignment x.f = v where v could be null and field f is not annotated with +@Nullable. + +Example: + +```java +class C { + String f; + + void foo(@Nullable String s) { + f = s; + } +} +``` + +Action: The preferred action is to ensure that a null value is never stored in +the field, by changing the code or changing annotations. If this cannot be done, +add a @Nullable annotation to the field. This annotation might trigger more +warnings in other code that uses the field, as that code must now deal with null +values. + +## Eradicate field not initialized + +The constructor does not initialize a field f which is not annotated with +@Nullable + +Example: + +```java +class C { + String f; + + C () { // field f not initialized and not annotated @Nullable + } +} +``` + +Action: The preferred action is to initialize the field with a value that is not +null. If, by design, null is a valid value for the field, then it should be +annotated with @Nullable. + +## Eradicate parameter not nullable + +Method call x.m(..., v, ...) where v can be null and the corresponding parameter +in method m is not annotated with @Nullable + +Example: + +```java +class C { + void m(C x) { + String s = x.toString() + } + + void test(@Nullable C x) { + m(x); + } +} +``` + +Action: The preferred action is to ensure that a null value is never passed to +the method, by changing the code or changing annotations. If this cannot be +done, add a @Nullable annotation to the relevant parameter in the method +declaration. This annotation might trigger more warnings in the implementation +of method m, as that code must now deal with null values. + +## Eradicate return not nullable + +Method m can return null, but the method's return type is not annotated with +@Nullable + +Example: + +```java +class C { + String m() { + return null; + } +} +``` + +Action: The preferred action is to ensure that a null value is never returned by +the method, by changing the code or changing annotations. If this cannot be +done, add a @Nullable annotation to the the method declaration. This annotation +might trigger more warnings in the callers of method m, as the callers must now +deal with null values. + +## Eradicate condition redundant + +This report is inactive by default. Condition (x != null) or (x == null) when x +cannot be null: the first condition is always true and the second is always +false + +Example: + +```java +class C { + void m() { + String s = new String("abc"); + if (s != null) { + int n = s.length(); + } + } +} +``` + +Action: Make sure that the annotations are correct, as the condition is +considered redundant based on the existing annotations. In particular, check the +annotation of any input parameters and fields of the current method, as well as +the annotations of any method called directly by the current method, if +relevant. If the annotations are correct, you can remove the redundant case. + +## Eradicate return overannotated + +This report is inactive by default. Method m is annotated with @Nullable but the +method cannot return null + +Example: + +```java +class C { + @Nullable String m() { + String s = new String("abc"); + return s; + } +} +``` + +Action: Make sure that the annotations are correct, as the return annotation is +considered redundant based on the existing annotations. In particular, check the +annotation of any input parameters and fields of the current method, as well as +the annotations of any method called directly by the current method, if +relevant. If the annotations are correct, you can remove the @Nullable +annotation. + +## Eradicate inconsistent subclass return annotation + +The return type of the overridden method is annotated @Nullable, but the +corresponding method in the superclass is not. + +Action: choose a consistent annotation based on the desired invariant. + +Example: + +```java +class A { + String create() { + return new String("abc"); + } +} + +class B extends A { + @Nullable String create() { // Inconsistent @Nullable annotation. + return null; + } +} +``` + +A consistent use of @Nullable on the return type across subtyping should prevent +runtime issue like in: + +````java +class Main { + + int foo(A a) { + String s = a.create(); + return s.length(); + } + + void main(String[] args) { + A a = new B(); + foo(a); + } + +} +``` + + +## Inconsistent subclass parameter annotation + +A parameter of the overridden method is missing a @Nullable annotation present in the superclass. + +Action: choose a consistent annotation based on the desired invariant. + +Example: + +```java +class A { + + int len(@Nullable String s) { + if (s != null) { + return s.length(); + } else { + return 0; + } + } +} + +class B extends A { + + int len(String s) { // @Nullable missing. + return s.length(); + } +} +``` + +A consistent use of @Nullable on parameters across subtyping should prevent runtime issue like in: + +```java +public class Main { + + String s; + + int foo() { + A a = new B(); + return a.len(s); + } +} +``` +```` diff --git a/website/docs/03-linter-bug-types.md b/website/docs/03-linter-bug-types.md new file mode 100644 index 000000000..69032853b --- /dev/null +++ b/website/docs/03-linter-bug-types.md @@ -0,0 +1,193 @@ +--- +id: linters-bug-types +title: Linters bug types +--- + +Here is an overview of the linter checks we provide in Infer: + +## Assign pointer warning + +This check fires when a pointer to an Obj-C object is tagged with an `assign` +property (similar to the `-Warc-unsafe-retained-assign` compiler flag). Not +holding a strong reference to the object makes it easy to accidentally create +and use a dangling pointer. + +## Bad pointer comparison + +Infer reports these warnings in Objective-C when a boxed primitive type such as +`NSNumber *` is coerced to a boolean in a comparison. For example, consider the +code + +```objectivec +void foo(NSNumber * n) { + if (n) ... +``` + +The branch in the above code will be taken when the pointer `n` is non-`nil`, +but the programmer might have actually wanted the branch to be taken when the +integer pointed to by `n` is nonzero (e.g., she may have meant to call an +accessor like `[n intValue]` instead). Infer will ask the programmer explicitly +compare `n` to `nil` or call an accessor to clarify her intention. + +## C++ reference captured in Objective-C block + +With this check, Infer detects C++ references captured in a block. Doing this is +almost always wrong. The reason is that C++ references are not managed pointers +(like ARC pointers) and so the referent is likely to be gone by the time the +block gets executed. One solution is to do a local copy of the reference and +pass that to the block. Example: + +```c +(int &) v; +... +const int copied_v = v; +^{ +// use copied_v not v +}; +``` + +## Direct atomic property access + +This check warns you when you are accessing an atomic property directly with an +ivar. This makes the atomic property not atomic anymore. So potentially you may +get a race condition. + +To fix the problem you need to access properties with their getter or setter. + +## Global variable initialized with function or method call + +This checker warns you when the initialization of global variable contain a +method or function call. The warning wants to make you aware that some functions +are expensive. As the global variables are initialized before main() is called, +these initializations can slow down the start-up time of an app. + +## Registered observer being deallocated + +Objects register with a notification center to receive notifications. This check +warns you when an object is registered as observer of a NSNotificationCenter but +it is never unregistered. This is problematic as if the object is not +unregistered the notification center can still send notification even after the +object has been deallocated. In that case we would get a crash. + +## Strong delegate warning + +This check warns you when you have a property called delegate or variations +thereof which is declared strong. The idea is that delegates should generally be +weak, otherwise this may cause retain cycles. + +## Unavailable api in supported ios sdk + +This checks warns you when you are using an API (constant, method call, etc.) +that is only defined in a version higher than the version that you support. To +enable this check, pass to Infer the option +`--iphoneos-target-sdk-version version`. Calling an undefined API will lead to a +crash in the app. To fix this, you can choose a different API or use it inside +an if, as in: + +```objectivec +if ([UIFont respondsToSelector:@selector(systemFontOfSize:weight:)]) { + font = [UIFont systemFontOfSize:size weight:0]; +} +``` + +or + +```objectivec +if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_9_0) { + font = [UIFont systemFontOfSize:size weight:0]; +} +``` + +## Pointer To const Objective-C Class + +In Objective-C, `const Class *` represents a mutable pointer pointing to an +Objective-C class where the ivars cannot be changed. More useful is +`Class *const` instead, meaning the destination of the pointer cannot be +changed. + +## Objective-C Weak Property has Custom Setter + +This check warns you when you have a custom setter for a weak property. When +compiled with Automatic Reference Counting (ARC, `-fobj-arc`) ARC may set the +property to `nil` without invoking the setter, for example: + +```objectivec +#import + +@interface Employee : NSObject { + NSString* _name; + __weak Employee* _manager; +} +-(id)initWithName:(NSString*)name; +@property(atomic, weak) Employee* manager; +-(void)report; +@end + +@implementation Employee + +-(id)initWithName:(NSString*)name { + _name = name; + return self; +} + +-(NSString*)description { + return _name; +} + +-(void)report { + NSLog(@"I work for %@", _manager); +} + +-(Employee*)manager { + return _manager; +} + +// DON'T do this; ARC will not call this when setting _manager to nil. +-(void)setManager:(Employee*)newManager { + NSLog(@"Meet the new boss..."); + _manager = newManager; +} + +@end + +int main(int argc, char *argv[]) +{ + Employee* bob = [[Employee alloc] initWithName:@"Bob"]; + Employee* sue = [[Employee alloc] initWithName:@"Sue"]; + bob.manager = sue; + [bob report]; + sue = nil; + [bob report]; + return 0; +} +``` + +This prints: + +``` +Meet the new boss... +I work for Sue +I work for (null) +``` + +Note that the custom setter was only invoked once. + +## Component factory function + +[Doc in ComponentKit page](http://componentkit.org/docs/break-out-composites) + +## Component initializer with side effects + +[Doc in ComponentKit page](http://componentkit.org/docs/no-side-effects) + +## Component with multiple factory methods + +[Doc in ComponentKit page](http://componentkit.org/docs/avoid-overrides) + +## Component with unconventional superclass + +[Doc in ComponentKit page](http://componentkit.org/docs/never-subclass-components) + +## Mutable local variable in component file + +[Doc in ComponentKit page](http://componentkit.org/docs/avoid-local-variables) diff --git a/website/docs/04-absint-framework.md b/website/docs/04-absint-framework.md new file mode 100644 index 000000000..b8d820903 --- /dev/null +++ b/website/docs/04-absint-framework.md @@ -0,0 +1,297 @@ +--- +id: absint-framework +title: Building checkers with the Infer.AI framework +--- + +Infer.AI is a framework for quickly developing abstract interpretation-based +checkers (intraprocedural or interprocedural). You define only: + +(1) An abstract domain (type of abstract state plus `<=`, `join`, and `widen` +operations) + +(2) Transfer functions (a transformer that takes an abstract state as input and +produces an abstract state as output) + +and then you have an analysis that can run on all of the languages Infer +supports (C, Obj-C, C++, and Java)! + +This guide covers how to use the framework. For background on why we built the +framework and how it works, check out these +[slides](http://fbinfer.com/downloads/pldi17-infer-ai-tutorial.pdf) from a PLDI +2017 tutorial and this +[talk](https://atscaleconference.com/videos/getting-the-most-out-of-static-analyzers) +from @Scale2016. + +**If you feel like coding instead of reading, a great way to get started with +Infer.AI is to go through the lab exercise +[here](https://github.com/facebook/infer/blob/master/infer/src/labs/lab.md).** + +## By example: intraprocedural analysis + +This section helps you get started ASAP if you already understand +[abstract interpretation](http://www.di.ens.fr/~cousot/AI/IntroAbsInt.html) (or +don't, but are feeling bold). + +Take a look at +[liveness.ml](https://github.com/facebook/infer/blob/master/infer/src/checkers/liveness.ml). +This code is performing a compilers-101 style liveness analysis over +[SIL](#ir-basics-sil-cfgs-tenvs-procdescs-and-procnames), Infer's intermediate +language. Since this code is fairly small and you should already understand what +it's trying to do, it's a fairly good place to look in order to understand both +how to use the abstract interpretation framework and what SIL is. + +There are basically three important bits here: defining the domain, defining the +transfer functions, and then passing the pieces to the framework to create an an +analysis. Let's break down the third bit: + +``` +module Analyzer = + AbstractInterpreter.Make + (ProcCfg.Backward(ProcCfg.Exceptional)) + (TransferFunctions) +``` + +The `ProcCfg.Backward(ProcCfg.Exceptional)` part says: "I want the direction of +iteration to be backward" (since liveness is a backward analysis), and "I want +to the analysis to follow exceptional edges". For a forward analysis that +ignores exceptional edges, you would do `ProcCfg.Normal` instead (and many other +combinations are possible; take a look at +[ProcCfg.mli](https://github.com/facebook/infer/blob/master/infer/src/absint/ProcCfg.mli) +for more). And finally, the `TransferFunctions` part says "Use the transfer +functions I defined above". + +Now you have an `Analyzer` module that exposes useful functions like +[`compute_post`](https://github.com/facebook/infer/blob/master/infer/src/absint/AbstractInterpreter.mli#L30) +(take a procedure as input and compute a postcondition) and +[`exec_pdesc`](https://github.com/facebook/infer/blob/master/infer/src/absint/AbstractInterpreter.mli#L36) +(take a procedure and compute an invariant map from node id's to the pre/post at +each node). The next step is to hook your checker up to the Infer CLI. For the +liveness analysis, you would do this by exposing a function for running the +checker on a single procedure: + +``` +let checker { Callbacks.proc_desc; tenv; } = + match Analyzer.compute_post (ProcData.make_default proc_desc tenv) with + | Some post -> Logging.progress "Computed post %a for %a" Analyzer.Domain.pp post Typ.Procname.pp (Procdesc.get_proc_name proc_desc); + | None -> () +``` + +and then adding `Liveness.checker, checkers_enabled` to the list of registered +checkers +[here](https://github.com/facebook/infer/blob/master/infer/src/checkers/registerCheckers.ml#L42). + +you can then run `infer run -a checkers -- ` to run your +checker on real code. See +[here](/docs/analyzing-apps-or-projects) for more details +on the build systems supported by Infer. + +Other examples of simple intraprocedural checkers are +[addressTaken.ml](https://github.com/facebook/infer/blob/master/infer/src/checkers/addressTaken.ml) +and +[copyPropagation.ml](https://github.com/facebook/infer/blob/master/infer/src/checkers/copyPropagation.ml). + +## Basic error reporting + +Useful analyses have output. Basic printing to stderr or stderr is good for +debugging, but to report a programmer-readable error that is tied to a source +code location, you'll want to use `Reporting.log_error`. Some examples of +error-logging code: +[1](https://github.com/facebook/infer/blob/master/infer/src/concurrency/RacerD.ml#L166), +[2](https://github.com/facebook/infer/blob/master/infer/src/checkers/annotationReachability.ml#L224), +or +[3](https://github.com/facebook/infer/blob/master/infer/src/quandary/TaintAnalysis.ml#L186). + +## By example: interprocedural analysis + +Let's assume you have already read and understood the "intraprocedural analysis" +section and have an intraprocedural checker. The abstract interpretation +framework makes it easy to convert your intraprocedural analysis into a +_modular_ interprocedural analysis. Let me emphasize the _modular_ point once +more; global analyses cannot be expressed in this framework. + +To make your checker interprocedural, you need to: + +(1) Define the type of procedure summaries for your analysis and add some +boilerplate for storing your data alongside the summaries for other analyses + +(2) Add logic for (a) using summaries in your transfer functions and (b) +converting your intraprocedural abstract state to a summary. + +A good example to look at here is +[siof.ml](https://github.com/facebook/infer/blob/master/infer/src/checkers/Siof.ml). +Step (1) is just: + +``` +module Summary = Summary.Make (struct + type summary = SiofDomain.astate + + let update_payload astate payload = + { payload with Specs.siof = Some astate } + + let read_from_payload payload = + payload.Specs.siof + end) +``` + +along with adding the `Specs.siof` +[field](https://github.com/facebook/infer/blob/master/infer/src/backend/specs.ml#L329) +to the `Specs.payload` record +[type](https://github.com/facebook/infer/blob/master/infer/src/backend/specs.ml#L321). +Here, the type of the abstract state and the type of the summary are the same, +which makes things easier for us (no logic to convert an abstract state to a +summary). + +Part (2a) is +[here](https://github.com/facebook/infer/blob/master/infer/src/checkers/Siof.ml#L65): + +``` +match Summary.read_summary pdesc callee_pname with +``` + +This says: "read the summary for `callee_pname` from procedure `pdesc` with type +environment `tenv`". You must then add logic for applying the summary to the +current abstract state (often, this is as simple as doing a join). + +Because our summary type is the same as the abstract state, part (2b) can be +done for us by making use of the convenient +`AbstractInterpreter.Interprocedural` +[functor](https://github.com/facebook/infer/blob/master/infer/src/absint/AbstractInterpreter.mli#L19) +(for an example of what to do when the types are different, take a look at +[Quandary](https://github.com/facebook/infer/blob/master/infer/src/quandary/TaintAnalysis.ml#L540)): + +``` +module Interprocedural = Analyzer.Interprocedural (Summary) +``` + +This `Interprocedural` module will automatically do the work of computing and +storing the summary for us. All we need to do is change the exposed `checker` +function registered in `registerCheckers.ml` to call `Interprocedural.checker` +instead: + +``` +let checker callback = + ignore(Interprocedural.checker callback ProcData.empty_extras in) +``` + +That's it! We now have an interprocedural analysis. + +One very important note here: a current (and soon-to-be-lifted) limitation +prevents us from running multiple interprocedural checkers at the same time. If +you register an interprocedural checker, be sure to unregister the other other +ones. Otherwise, there's a risk that the checkers will clobber each other's +results. + +## Relevant code + +Some pointers to useful code for building new analyses, and to the +implementation of the framework for the interested: + +Domain combinators: + +- `AbstractDomain.BottomLifted`, `AbstractDomain.FiniteSet`, + `AbstractDomain.Map`, `AbstractDomain.Pair` (all in + [AbstractDomain](https://github.com/facebook/infer/blob/master/infer/src/checkers/AbstractDomain.mli)) + +Domains and domain building blocks: + +- [AccessPath](https://github.com/facebook/infer/blob/master/infer/src/checkers/accessPath.mli) +- [AccessPathDomains](https://github.com/facebook/infer/blob/master/infer/src/checkers/accessPathDomains.mli) +- [AccessTree](https://github.com/facebook/infer/blob/master/infer/src/checkers/accessTree.ml) + +Reporting errors with interprocedural traces: + +- Examples: + [`SiofTrace.ml`](https://github.com/facebook/infer/blob/master/infer/src/checkers/SiofTrace.ml), + [`JavaTrace.ml`](https://github.com/facebook/infer/blob/master/infer/src/quandary/JavaTrace.ml), + [`CppTrace.ml`](https://github.com/facebook/infer/blob/master/infer/src/quandary/CppTrace.ml). +- Implementation: + [`Trace`](https://github.com/facebook/infer/blob/master/infer/src/checkers/Trace.mli) + +Implementation: + +- [`AbstractDomain`](https://github.com/facebook/infer/blob/master/infer/src/absint/AbstractDomain.ml) +- [`TransferFunctions`](https://github.com/facebook/infer/blob/master/infer/src/absint/AbstractInterpreter.mli) +- [`AbstractInterpreter`](https://github.com/facebook/infer/blob/master/infer/src/absint/AbstractInterpreter.mli) +- [`ProcCFG`](https://github.com/facebook/infer/blob/master/infer/src/absint/ProcCfg.mli) +- [`Summary`](https://github.com/facebook/infer/blob/master/infer/src/absint/Summary.ml) +- [`Scheduler`](https://github.com/facebook/infer/blob/master/infer/src/absint/Scheduler.ml) + +## IR basics: SIL, CFG's, `tenv`'s, `procdesc`'s, and `procname`'s + +All of the languages analyzed by Infer are converted into a common intermediate +representation. A program is represented as a control-flow graph +([CFG](https://github.com/facebook/infer/blob/master/infer/src/IR/Cfg.rei)) +whose nodes contain lists of instructions in the SIL language. SIL is a small +low-level language that has some similarities with C, LLVM +[IR](http://llvm.org/docs/LangRef.html), and +[Boogie](https://research.microsoft.com/en-us/um/people/leino/papers/krml178.pdf). + +[Expressions](https://github.com/facebook/infer/blob/master/infer/src/IR/Exp.rei#L25) +are literals, program variables (`Pvar`'s), temporary variables (`Ident`'s), a +field offset from a struct (OO features like objects are lowered into struct's), +or an index offset from an array. + +There are four interesting kinds of +[instructions](https://github.com/facebook/infer/blob/master/infer/src/IR/Sil.rei#L38): +`Load` for reading into a temporary variable, `Store` for writing to a program +variable, field of a struct, or an array, `Prune e` (often called `assume` in +other PL formalisms) blocks execution unless the expression `e` evaluates to +true, and `Call` represents function calls. + +Instructions and expressions have +[types](https://github.com/facebook/infer/blob/master/infer/src/IR/Typ.rei#L76). +A `Tstruct` (think: object) type has a +[`Typename`](https://github.com/facebook/infer/blob/master/infer/src/IR/Typename.rei#L13), +and it is often useful to look up metadata about the type (what fields does it +have, what methods does it declare, what is its superclass, etc.) in the type +environment, or +[`tenv`](https://github.com/facebook/infer/blob/master/infer/src/IR/Tenv.rei#L37). + +A procedure description or +[`procdesc`](https://github.com/facebook/infer/blob/master/infer/src/IR/Procdesc.rei) +(sometimes abbreviated `pdesc`) is an abstraction of a procedure declaration: it +stores the CFG of the procedure, its signature, its annotations, and so on. + +A procedure name or +[`procname`](https://github.com/facebook/infer/blob/master/infer/src/IR/Procname.rei) +(sometimes abbreviated `pname`) is an abstraction of a called procedure name. +One procname may correspond to multiple (or zero) `procdesc`'s after resolution. + +## Framework-specific IR: `ProcCFG`, `ProcData`, and `extras` + +The abstract interpretation framework has a few additional constructs that are +worth explaining. + +A +[`ProcCfG`](https://github.com/facebook/infer/blob/master/infer/src/absint/procCfg.mli) +represents the CFG of a _single_ procedure whereas (perhaps confusingly) a +[`Cfg`](https://github.com/facebook/infer/blob/master/infer/src/IR/Cfg.rei) is +the CFG for an entire file. A `ProcCfg` is really a customizable view of the +underlying procedure CFG; we can get a view the CFG with its edges backward +(`ProcCfg.Backward`), with or without exceptional edges (`Normal`/`Exceptional`, +respectively), or with each node holding at most one instruction +(`OneInstrPerNode`). + +[`ProcData`](https://github.com/facebook/infer/blob/master/infer/src/absint/procData.mli) +is a container that holds all of the read-only information required to analyze a +single procedure: procedure description, and `extras`. The `extras` are custom +read-only data that are computed before analysis begins, and can be accessed +from the transfer functions. Most often, no extras are required for analysis +(`ProcData.empty_extras`), but it can be useful to stash information like a map +from a formal to its +[index](https://github.com/facebook/infer/blob/master/infer/src/quandary/TaintAnalysis.ml#L88) +or an invariant +[map](https://github.com/facebook/infer/blob/master/infer/src/backend/preanal.ml#L115) +from a prior analysis in the extras. + +## How it works + +Coming soon. + +## Intro: abstract interpretation + +Coming soon. + +## How do I make an analysis compositional? + +Coming soon. diff --git a/website/docs/04-adding-checkers.md b/website/docs/04-adding-checkers.md new file mode 100644 index 000000000..18e4161d7 --- /dev/null +++ b/website/docs/04-adding-checkers.md @@ -0,0 +1,210 @@ +--- +id: adding-checkers +title: Simple intraprocedural checkers +--- + +## How can I create my own checkers? + +Infer Checkers provide a framework to perform intra-procedural static analyses. +Since this is an open source project, everyone is welcome to contribute with new +great checkers. In this page, we will create a very basic checker - a detector +for every time the output method `java.io.PrintStream.println` is called. This +should be enough to get you started. + +## Before you start + +Make sure you are able to successfully build Infer and your developer +environment is set up: + +``` +./build-infer.sh +make devsetup +``` + +Get familiar with Infer checkers and run Infer with some examples: + +``` +infer run -- javac Hello.java +``` + +In addition, get familiar with the Control Flow Graph (CFG) that Infer generates +for you: + +``` +infer run -g -- javac Hello.java +dot -Tpdf infer-out/captured/Hello.java*/icfg.dot -o icfg.pdf +open icfg.pdf +``` + +This will give you further information about the analysis that is being done, +including the CFG in dot format. It is important that you understand the +generated CFG since this is the abstraction of code that Checkers will analyze. + +Infer is built with [OCaml](https://ocaml.org). This is a programming language +that combines both functional and imperative programming. If you are not +familiar with OCaml, it might be hard at the beginning to understand the code. +Take your time to review the +[basics](https://ocaml.org/learn/tutorials/basics.html) and do some +[exercises](https://ocaml.org/learn/tutorials/99problems.html). + +## Let's go + +The directory `infer/src/absint` contains utilities for the abstract +interpretation framework that checkers are based on. + +Looking into `infer/src/checkers` we can find some simple checkers. Most of them +are implemented as a module created from a `TransferFunctions` module that is +turned into an analyzer by applying one of the `AbstractInterpreter.Make*` +functors, together with a `checker` function that calls into it. You can start +by copying the code for one of these and modify it (eg +checkers/SimpleChecker.ml). For example: + +```ocaml +module TransferFunctions = struct + ... + let exec_instr astate proc_data cfg_node (instr : Sil.instr) = + match instr with + | pattern -> + ST.report_error + proc_name + proc_desc + "CHECKERS_MY_SIMPLE_CHECKER" + location + "A description of my simple checker" + | _ -> astate +end + +module Analyzer = AbstractInterpreter.Make (TransferFunctions) + +let checker {Callbacks.exe_env; summary; get_procs_in_file} : Summary.t = + let proc_name = Summary.get_proc_name summary in + let tenv = Exe_env.get_tenv exe_env proc_name in + let proc_data = ProcData.make_default summary tenv in + ignore (Analyzer.compute_post proc_data ~initial) ; + summary +``` + +Checkers implement a function that detects a given pattern for our specific +checker and then calls `AbstractInterpreter.Make` to iterate over all the nodes +of the CFG. + +So now we need to know how to create our pattern. As an example, consider the +following: + +```ocaml +Sil.Call (_, Sil.Const (Sil.Cfun pn), _, loc, _) +``` + +This pattern matches every function call. In our code, it would look like: + +```ocaml + let exec_instr astate proc_data cfg_node (instr : Sil.instr) = + match instr with + | Call (_, Const (Cfun pn), _, loc, _) -> + ST.report_error + proc_name + proc_desc + "CHECKERS_MY_SIMPLE_CHECKER" + location + "A description of my simple checker" + | _ -> astate +``` + +The `absint/PatternMatch.ml` module contains the +`java_proc_name_with_class_method` function which we can use for matching the +required pattern. + +Each node is represented using the type `instr` from the Smallfoot Intermediate +Language (SIL). Take a look at `IR/Sil.mli` to get familiar with all the types. +All source code languages supported by Infer are converted to this +representation. + +In this particular example, `Sil.Call` has the following information: + +```ocaml +Sil.Call ( + list_of_return_values, + Sil.Const (Const.Cfun name_of_function), + list_of_arguments, + location, + call_flags +) +``` + +I hope this looks straight forward. Argument `call_flags` holds information +about the function, such as whether it is virtual or not. Again, this is +specified in the file `Sil.mli`. + +The Checker we have written so far is able to detect every single function call. +Now, we have to detect whether a specific function call is actually calling +`java.io.PrintStream.println`. + +Let's try this: + +```ocaml + let is_println pln = match pln with + | Procname.Java pn_java -> + PatternMatch.java_proc_name_with_class_method + pn_java "java.io.PrintStream" "println" + | _ -> + false in + + let exec_instr astate proc_data cfg_node (instr : Sil.instr) = + match instr with + | Call (_, Const (Cfun pn), _, loc, _) when is_println pn -> + ST.report_error + proc_name + proc_desc + "CHECKERS_MY_SIMPLE_CHECKER" + location + "A description of my simple checker" + | _ -> astate + +``` + +Can you spot the difference? A new restriction was added to our pattern -- +`is_println` expression helps us to check whether the current method is a +`java.io.PrintStream.println` method or not. + +So our implementation is done. Now we have to register it as an enabled Checker +in `checkers/registerCheckers.ml`. + +Assuming the code is in SimpleCheckers.ml, you would register your checker as a +_java_checker_ in `checkers/registerCheckers.ml` by adding it to the +`all_checkers` list: + +```ocaml +let all_checkers = + [ { name= "my simple checker" + ; active= true + ; callbacks= [(Procedure SimpleChecker.checker, Language.Java)] } + ; (* the rest of the list as it was there *) + ... ] +``` + +Build Infer with `./build-infer.sh` and your first Checker is ready! + +If you want you can try with this java example: + +```java +/*Hello.java*/ +class Hello { + int println(){ + return 0; + } + int test() { + String s = "Hello World"; + System.out.println(s); + s = null; + println(); + return s.length(); + } +} +``` + +Notice that only `System.out.println` is being detected. + +All set! You are ready to create your own Checkers! Infer is an open source +project and you are more than welcome to contribute. Take a look at the +[Github](https://github.com/facebook/infer/) page and feel free to fork or even +open an issue if you're facing any trouble. diff --git a/website/docs/04-internal-API.md b/website/docs/04-internal-API.md new file mode 100644 index 000000000..7dff77755 --- /dev/null +++ b/website/docs/04-internal-API.md @@ -0,0 +1,12 @@ +--- +id: internal-API +title: Infer Internal OCaml Modules API +--- + +The generated OCaml documentation for the latest release of infer can be found +[here](/static/odoc/latest/index.html). You can generate these pages from within +an infer git checkout with `make doc`. + +You can also browse the following specific versions: + +- [0.15.0](/static/odoc/0.15.0/index.html) diff --git a/website/docs/support.md b/website/docs/support.md new file mode 100644 index 000000000..209700dac --- /dev/null +++ b/website/docs/support.md @@ -0,0 +1,173 @@ +--- +title: Infer | Need help? +id: support +--- + +## Need help? + +Do not hesitate to ask questions using the following channels, or to submit pull +request! + +### GitHub issues + +The [GitHub issues](https://github.com/facebook/Infer/issues) page is a good +place to ask questions, find answers, and report issues. + +Please include as many details as possible when submitting a GitHub issue. If +your are able to run Infer, please include the contents of +`infer-out/toplevel.log` in your report. If not, please include at least your +operating system and the version of Infer that you are using. + +### Updates + +Keep up to date with the latest Infer news on our +[Facebook page](https://www.facebook.com/inferstaticanalyzer/) and our +[Twitter account](https://twitter.com/fbinfer). + +### IRC + +Our IRC channel is [#infer](irc://chat.freenode.net/infer) on Freenode.net. + +## Troubleshooting + +### Infer cannot analyze my CocoaPods project + +In the presence of CocoaPods, you should use xcworkspace and not xcodeproj in +the compilation command that you supply to Infer. Here is an example you can +adapt to your project: + +```bash +infer run -- xcodebuild -workspace HelloWorld.xcworkspace -scheme HelloWorld +``` + +### "infer [options] -- \" fails during a linking step + +The linker will sometimes not work if files have been compiled using a different +compiler, such as the one Infer uses [under the hood](/docs/infer-workflow) +to analyze your files. + +A workaround consists in setting the `LD` environment variable to a dummy +linker, for instance: + +``` +LD=/bin/true infer [options] -- +``` + +### I get a compilation error involving PCH files when running Infer + +For instance, +`error: PCH file uses an older PCH format that is no longer supported`. + +This is a [known issue](https://github.com/facebook/infer/issues/96). + +Please run Infer with the following environment variable setting: + +```bash +GCC_PRECOMPILE_PREFIX_HEADER=NO +``` + +### Using Infer with Maven results in no output + +Try upgrading `maven-compiler-plugin`. See also +[this GitHub issue](https://github.com/facebook/infer/issues/38). + +### Infer reports a "Too many open files" error + +The maximum number of files a program can simultaneously hold open is a bit low +on MacOs. You can increase the limit by running these commands for example: + +```bash +sysctl -w kern.maxfiles=20480 +sysctl -w kern.maxfilesperproc=22480 +ulimit -S -n 2048 +``` + +Note that the settings will be reset at the next reboot. + +See also [this GitHub issue](https://github.com/facebook/infer/issues/22). + +### I get a lint error when running Infer with gradle + +You need to manually disable linters to run Infer. For instance + +```bash +infer run -- gradle build -x lint +``` + +See also [this GitHub issue](https://github.com/facebook/infer/issues/58). + +### Running "infer [options] -- \" fails with some other error + +Please make sure that: + +- \ runs successfully on its own. +- `infer` is in your `$PATH` (try `which infer`, it should show where `infer` is + located) + +### Running Infer fails with "ImportError: No module named xml.etree.ElementTree" + +Make sure that the `xml` Python package is installed. For instance, on OpenSuse +13.1, it is provided by the +[`python-xmldiff`](http://software.opensuse.org/download.html?project=XML&package=python-xmldiff) +package. + +### I get errors compiling Infer + +Make sure the dependencies are up to date. They may change as we update Infer +itself; you may also need to recompile the facebook-clang-plugins when it +changes version. See the +[installation document](https://github.com/facebook/infer/blob/master/INSTALL.md) +for an up-to-date list of dependencies and how to get them. + +### My problem is not listed here + +Do not hesitate to [contact us](support#need-help?). + +## FAQ + +Here are some frequently asked questions. More to come. + +### How do I suppress Infer warnings on a class or method? + +In Java code, you can do this by annotating your class or method with +`@SuppressLint("infer")`. Or `@SuppressWarnings("infer")` if your Infer is older +than v0.10.0. + +### Is Infer supported for Windows? + +Infer is not supported on Windows at the moment. You may try installing Infer on +a Linux virtual machine if your project can be compiled on Linux. + +### How does Infer compare to the Clang Static Analyzer? + +On iOS there is the Clang Static analyzer. Infer does some things different, in +particular reasoning that spans across multiple files. But CSA checks for more +kinds of issues and is also more mature than Infer when it comes to iOS: we send +big respect to CSA! Infer has only got started there recently. Really, these +tools complement one another and it would even make sense to use both. Indeed, +that's what we do inside Facebook. + +### How does Infer compare to Android linters and Findbugs? + +Infer finds deeper infer-procedural bugs sometimes spanning multiple files. +Linters, in contrast, typically implement simple syntactic checks that are local +within one procedure. But they are valuable and Infer doesn't try to duplicate +what they are good at. At Facebook we run both Infer and a collection of Android +linters. Findbugs can be useful too; it is more akin to linters. + +### Why Infer doesn't find a particular bug? + +The answer here is for one of the checkers of Infer, the bi-abduction checker, +that finds Null Dereferences, Memory Leaks, Retain Cycles and other memory +related issues. + +The analysis performs a symbolic execution of the code, keeping data structures +that represent a symbolic heap, and trying to prove memory safety of the +program. When it fails to prove it, it can report an error, if it finds a Null +Dereference or Memory Leak, or it can find itself in an inconsistent state. In +any case, it will stop the analysis of that particular procedure because the +attempted proof doesn't make sense anymore. Another cause of the analysis not +reaching some part of the code is that we introduce timeouts in the analysis, +because otherwise it would take too long. So it could reach a timeout before +reaching the end of the method. So when Infer doesn't find a particular bug, +it's possible that it is because it couldn't reach that part of the code. diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js new file mode 100755 index 000000000..4a2768f3b --- /dev/null +++ b/website/docusaurus.config.js @@ -0,0 +1,80 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +module.exports = { + title: "Infer", + tagline: + "A tool to detect bugs in Java and C/C++/Objective-C code before it ships", + url: "https://fbinfer.com", + baseUrl: "/", + favicon: "img/favicon.png", + organizationName: "facebook", + projectName: "infer", + themeConfig: { + navbar: { + title: "Infer", + logo: { alt: "Infer Logo", src: "img/logo.png" }, + links: [ + { label: "Docs", to: "docs/getting-started" }, + { label: "Support", to: "docs/support" }, + { label: "Blog", to: "blog" }, + { + href: "https://twitter.com/fbinfer", + label: "Twitter", + position: "right" + }, + { + href: "https://www.facebook.com/inferstaticanalyzer", + label: "Facebook", + position: "right" + }, + { + href: "https://github.com/facebook/infer", + label: "GitHub", + position: "right" + } + ] + }, + footer: { + style: "light", + links: [ + { + title: "Docs", + items: [ + { label: "Quick Start", to: "docs/getting-started" }, + { label: "User Guide", to: "docs/infer-workflow" }, + { label: "Foundations", to: "docs/about-Infer" }, + { label: "Bug Types Reference", to: "docs/checkers-bug-types" }, + { label: "Contribute", to: "docs/absint-framework" } + ] + }, + { + title: "Community", + items: [{ label: "Support", to: "docs/support" }] + }, + { + title: "Social", + items: [ + { label: "Blog", to: "blog" }, + { label: "GitHub", href: "https://github.com/facebook" }, + { label: "Twitter", href: "https://twitter.com/fbOpenSource" } + ] + } + ], + copyright: `Copyright © ${new Date().getFullYear()} Facebook, Inc. Built with Docusaurus.` + } + }, + presets: [ + [ + "@docusaurus/preset-classic", + { + docs: { sidebarPath: require.resolve("./sidebars.js") }, + theme: { customCss: require.resolve("./src/css/custom.css") } + } + ] + ] +}; diff --git a/website/package.json b/website/package.json new file mode 100755 index 000000000..72a49a158 --- /dev/null +++ b/website/package.json @@ -0,0 +1,33 @@ +{ + "license": "MIT", + "private": true, + "scripts": { + "start": "docusaurus start", + "build": "docusaurus build", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy" + }, + "dependencies": { + "@docusaurus/core": "2.0.0-alpha.39", + "@docusaurus/preset-classic": "2.0.0-alpha.39", + "classnames": "2.2.6", + "react": "16.12.0", + "react-dom": "16.12.0", + "react-github-btn": "1.1.1" + }, + "devDependencies": { + "prettier": "1.19.1" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/website/sidebars.js b/website/sidebars.js new file mode 100755 index 000000000..99c2d2cb9 --- /dev/null +++ b/website/sidebars.js @@ -0,0 +1,36 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +module.exports = { + docs: { + "Quick Start": ["getting-started", "hello-world"], + "User Guide": [ + "infer-workflow", + "analyzing-apps-or-projects", + "steps-for-ci", + "checkers", + "eradicate", + "linters", + "racerd", + "experimental-checkers", + "advanced-features", + "adding-models", + "man-pages" + ], + Foundations: [ + "about-Infer", + "separation-logic-and-bi-abduction", + "limitations" + ], + "Bug Types Reference": [ + "checkers-bug-types", + "eradicate-warnings", + "linters-bug-types" + ], + Contribute: ["absint-framework", "adding-checkers", "internal-API"] + } +}; diff --git a/website/src/components/Script.js b/website/src/components/Script.js new file mode 100644 index 000000000..baf3ee7ff --- /dev/null +++ b/website/src/components/Script.js @@ -0,0 +1,31 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +// Stolen from https://github.com/facebookresearch/hydra/blob/master/website/src/components/Script.jsx + +import React, { useEffect, useRef } from "react"; + +export default function Script(props) { + const instance = useRef(null); + const script = useRef( + typeof document !== "undefined" ? document.createElement("script") : null + ); + + useEffect(() => { + instance.current.appendChild(script.current); + }, []); + + useEffect(() => { + for (const key in props) { + if (props.hasOwnProperty(key)) { + script.current[key] = props[key]; + } + } + }); + + return
; +} diff --git a/website/src/css/custom.css b/website/src/css/custom.css new file mode 100755 index 000000000..b11569eee --- /dev/null +++ b/website/src/css/custom.css @@ -0,0 +1,22 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +:root { + --ifm-color-primary: #6223b0; + --ifm-color-primary-dark: #58209e; + --ifm-color-primary-darker: #4e1c8d; + --ifm-color-primary-darkest: #45197b; + --ifm-color-primary-light: #7239b8; + --ifm-color-primary-lighter: #814fc0; + --ifm-color-primary-lightest: #9165c8; + + --ifm-code-font-size: 95%; +} + +.large-math { + vertical-align: text-bottom; +} diff --git a/website/src/pages/index.js b/website/src/pages/index.js new file mode 100755 index 000000000..26b695d16 --- /dev/null +++ b/website/src/pages/index.js @@ -0,0 +1,203 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import Link from "@docusaurus/Link"; +import useBaseUrl from "@docusaurus/useBaseUrl"; +import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; +import Layout from "@theme/Layout"; +import classnames from "classnames"; +import React from "react"; +import GitHubButton from "react-github-btn"; +import Script from "../components/Script"; +import styles from "./styles.module.css"; + +const features = [ + { + title: <>Android and Java, + description: ( + <> + Infer checks for null pointer exceptions, resource leaks, annotation + reachability, missing lock guards, and concurrency race conditions in + Android and Java code. + + ) + }, + { + title: <>C, C++, and iOS/Objective-C, + description: ( + <> + Infer checks for null pointer dereferences, memory leaks, coding + conventions and unavailable API’s. + + ) + } +]; + +const poweredByImages = [ + { url: "https://aws.amazon.com", image: "/img/who/aws.svg" }, + { url: "https://facebook.com", image: "/img/who/facebook.png" }, + { url: "https://freefem.org", image: "/img/who/freefem.png" }, + { url: "https://www.instagram.com", image: "/img/who/instagram.png" }, + { url: "http://www.mozilla.com", image: "/img/who/mozilla.png" }, + { url: "https://www.oculus.com", image: "/img/who/oculus.png" }, + { + url: "/blog/2016/03/17/collaboration-with-spotify", + image: "/img/who/spotify.png" + }, + { url: "https://www.uber.com", image: "/img/who/uber.svg" }, + { url: "https://www.whatsapp.com", image: "/img/who/whatsapp.svg" }, +]; + +const poweredByItems = [ + { url: "https://www.mycode.ai", name: "CodeAI" }, + { url: "http://jd.com", name: "JD.com" }, + { url: "https://www.marksandspencer.com", name: "Marks and Spencer" }, + { url: "https://www.moneylover.me", name: "Money Lover" }, + { url: "https://www.netcetera.com", name: "Netcetera" }, + { url: "https://www.olacabs.com", name: "OLA" }, + { url: "https://www.sky.com", name: "Sky" }, + { url: "https://tile.com", name: "Tile" }, + { url: "https://vuo.org", name: "Vuo" }, +]; + +function Home() { + const context = useDocusaurusContext(); + const { siteConfig = {} } = context; + return ( + +
+
+

+ A tool to detect bugs in Java and C/C++/Objective-C code before it + ships +

+

+ Infer is a static analysis tool - if you give Infer some Java or + C/C++/Objective-C code it produces a list of potential bugs. Anyone + can use Infer to intercept critical bugs before they have shipped to + users, and help prevent crashes or poor performance. +

+
+ + Get Started + +
+ + Star + +
+
+
+
+
+ {features && features.length && ( +
+
+
+ {features.map(({ title, description }, idx) => ( +
+

{title}

+

{description}

+
+ ))} +
+
+
+ )} +
+
+
+
+

Infer in Action

+