infer

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
ENVIRONMENT
FILES
SEE ALSO

NAME

infer - static analysis for Java and C/C++/Objective-C/Objective-C++

SYNOPSIS

infer analyze [options]
infer capture
[options]
infer compile
[options]
infer report
[options]
infer reportdiff
[options]
infer run
[options]
infer --compilation-database[-escaped]
file [options]
infer
[options] -- compile command
infer
[options]

DESCRIPTION

Infer is a static analyzer. Given a collection of source files written in Java or in languages of the C family, and a command to build them, infer produces a list of potential issues.

Infer consists of a collection of tools referenced in the SEE ALSO section of this manual. See their respective manuals for more information.

When run without a subcommand, and if a compilation command is specified via the -- option or one of the --clang-compilation-database[-escaped] options, then infer behaves as infer-run(1). Otherwise, infer behaves as infer-analyze(1).

OPTIONS

Every infer command accepts the arguments from all the other infer commands.

Options are read from the .inferconfig file, then from the INFER_ARGS environment variable, then from the command line. Options in INFER_ARGS take precedence over options in .inferconfig, and options passed on the command line take precedence over options in INFER_ARGS. See the ENVIRONMENT and FILES sections of this manual for more information.

Options can be specified inside an argument file file by passing @file as argument. The format is one option per line, and enclosing single ' and double " quotes are ignored.

Options without a default value (e.g., --linter) and options with list-like values (e.g., --Xbuck) all have a corresponding --option-reset flag that resets their values to nothing or the empty list, respectively. For instance, --Xbuck-reset will cancel any previous --Xbuck option passed to infer.

See the manuals of individual infer commands for details about their supported options. The following is a list of all the supported options (see also --help-full for options reserved for internal use).
--analyzer
,-a { checkers | infer | capture | compile | crashcontext |
linters }

Specify which analyzer to run (only one at a time is supported):

- biabduction: run the bi-abduction based checker only, in
particular to check for memory errors
- checkers: run the default checkers, including the bi-abduction
based checker for memory errors (default)
- infer: alias for biabduction
- linters: run linters based on the ast only (clang only,
activated by default)
- capture: similar to specifying the capture subcommand
(DEPRECATED)
- compile: similar to specifying the compile subcommand
(DEPRECATED)
- crashcontext: experimental (see --crashcontext)
See also infer-analyze(1) and infer-run(1).
--<analyzer>-blacklist-files-containing
+string

blacklist files containing the specified string for the given analyzer (see --analyzer for valid values)

See also infer-report(1) and infer-run(1).
--<analyzer>-blacklist-path-regex
+path_regex

blacklist the analysis of files whose relative path matches the specified OCaml-style regex (to whitelist: --<analyzer>-whitelist-path-regex)

See also infer-report(1) and infer-run(1).
--<analyzer>-suppress-errors
+error_name

do not report a type of errors

See also infer-report(1) and infer-run(1).
--no-annotation-reachability

Deactivates: the annotation reachability checker. Given a pair of source and sink annotation, e.g. @PerformanceCritical and @Expensive, this checker will warn whenever some method annotated with @PerformanceCritical calls, directly or indirectly, another method annotated with @Expensive (Conversely: --annotation-reachability)

See also infer-analyze(1).
--annotation-reachability-custom-pairs
json

Specify custom sources/sink for the annotation reachability checker

Example format: for custom annotations
com.my.annotation.{Source1,Source2,Sink1}
{ "sources" : ["Source1", "Source2"], "sink" : "Sink1" }
(default: [])
See also infer-analyze(1).
--annotation-reachability-only

Activates: Enable --annotation-reachability and disable all other checkers (Conversely: --no-annotation-reachability-only)

See also infer-analyze(1).
--append-buck-flavors
+string

Additional Buck flavors to append to targets discovered by the --buck-compilation-database option.

See also infer-capture(1).
--no-biabduction

Deactivates: the separation logic based bi-abduction analysis using the checkers framework (Conversely: --biabduction)

See also infer-analyze(1).
--biabduction-only

Activates: Enable --biabduction and disable all other checkers (Conversely: --no-biabduction-only)

See also infer-analyze(1).
--bo-debug
int

Debug level for buffer-overrun checker (0-4) (default: 0)

See also infer-analyze(1).
--bootclasspath
string

Specify the Java bootclasspath

See also infer-capture(1).
--buck-blacklist
regex

Skip analysis of files matched by the specified regular expression

See also infer-capture(1) and infer-run(1).
--buck-compilation-database
{ no-deps | deps }

Buck integration using the compilation database, with or without dependencies.

See also infer-capture(1).
--buck-compilation-database-depth
int

Depth of dependencies used by the --buck-compilation-database deps option. By default, all recursive dependencies are captured.

See also infer-capture(1).
--buck-out
dir

Specify the root directory of buck-out

See also infer-capture(1).
--bufferoverrun

Activates: the buffer overrun analysis (Conversely: --no-bufferoverrun)

See also infer-analyze(1).
--bufferoverrun-only

Activates: Enable --bufferoverrun and disable all other checkers (Conversely: --no-bufferoverrun-only)

See also infer-analyze(1).
--changed-files-index
file

Specify the file containing the list of source files from which reactive analysis should start. Source files should be specified relative to project root or be absolute

See also infer-analyze(1) and infer-diff(1).
--check-nullable

Activates: checks that values annotated with nullable are always checked for null before dereference (Conversely: --no-check-nullable)

See also infer-analyze(1).
--check-nullable-only

Activates: Enable --check-nullable and disable all other checkers (Conversely: --no-check-nullable-only)

See also infer-analyze(1).
--clang-biniou-file
file

Specify a file containing the AST of the program, in biniou format

See also infer-capture(1).
--compilation-database
+path

File that contain compilation commands (can be specified multiple times)

See also infer-capture(1).
--compilation-database-escaped
+path

File that contain compilation commands where all entries are escaped for the shell, eg coming from Xcode (can be specified multiple times)

See also infer-capture(1).
--compute-analytics

Activates: Emit analytics as info-level issues, like component kit line count and component kit file cyclomatic complexity (Conversely: --no-compute-analytics)

See also infer-capture(1) and infer-run(1).
--continue

Activates: Continue the capture for the reactive analysis, increasing the changed files/procedures. (If a procedure was changed beforehand, keep the changed marking.) (Conversely: --no-continue)

See also infer-analyze(1).
--cost

Activates: checker for performance cost analysis (Conversely: --no-cost)

See also infer-analyze(1).
--cost-only

Activates: Enable --cost and disable all other checkers (Conversely: --no-cost-only)

See also infer-analyze(1).
--crashcontext

Activates: the crashcontext checker for Java stack trace context reconstruction (Conversely: --no-crashcontext)

See also infer-analyze(1).
--crashcontext-only

Activates: Enable --crashcontext and disable all other checkers (Conversely: --no-crashcontext-only)

See also infer-analyze(1).
--current-to-previous-script
shell

Specify a script to checkout a previous version of the project to compare against, assuming we are on the current version already.

See also infer-diff(1).
--no-cxx

Deactivates: Analyze C++ methods (Conversely: --cxx)

See also infer-capture(1).
--cxx-infer-headers

Activates: Include C++ header models during compilation. Infer swaps some C++ headers for its own in order to get a better model of, eg, the standard library. This can sometimes cause compilation failures. (Conversely: --no-cxx-infer-headers)

See also infer-capture(1).
--cxx-scope-guards
json

Specify scope guard classes that can be read only by destructors without being reported as dead stores. (default: [])

See also infer-analyze(1).
--debug
,-g

Activates: Debug mode (also sets --debug-level 2, --developer-mode, --no-filtering, --print-buckets, --print-types, --reports-include-ml-loc, --no-only-cheap-debug, --trace-error, --write-dotty, --write-html) (Conversely: --no-debug | -G)

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--debug-level
level

Debug level (sets --bo-debug level, --debug-level-analysis level, --debug-level-capture level, --debug-level-linters level):

- 0: only basic debugging enabled
- 1: verbose debugging enabled
- 2: very verbose debugging enabled
See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--debug-level-analysis
int

Debug level for the analysis. See --debug-level for accepted values. (default: 0)

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--debug-level-capture
int

Debug level for the capture. See --debug-level for accepted values. (default: 0)

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--debug-level-linters
int

Debug level for the linters. See --debug-level for accepted values. (default: 0)

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--no-default-checkers

Deactivates: Default checkers: --annotation-reachability, --biabduction, --fragment-retains-view, --immutable-cast, --linters, --liveness, --ownership, --printf-args, --racerd, --siof, --uninit (Conversely: --default-checkers)

See also infer-analyze(1).
--no-default-linters

Deactivates: Use the default linters for the analysis. (Conversely: --default-linters)

See also infer-capture(1).
--dependencies

Activates: Translate all the dependencies during the capture. The classes in the given jar file will be translated. No sources needed. (Conversely: --no-dependencies)

See also infer-capture(1).
--differential-filter-files
string

Specify the file containing the list of source files for which a differential report is desired. Source files should be specified relative to project root or be absolute

See also infer-report(1).
--disable-issue-type
+issue_type

Do not show reports coming from this type of issue. Each checker can report a range of issue types. This option provides fine-grained filtering over which types of issue should be reported once the checkers have run. In particular, note that disabling issue types does not make the corresponding checker not run.

By default, the following issue types are disabled:
ANALYSIS_STOPS, ARRAY_OUT_OF_BOUNDS_L1, ARRAY_OUT_OF_BOUNDS_L2,
ARRAY_OUT_OF_BOUNDS_L3, BUFFER_OVERRUN_L4, BUFFER_OVERRUN_L5,
BUFFER_OVERRUN_U5, CLASS_CAST_EXCEPTION, CONDITION_ALWAYS_FALSE,
CONDITION_ALWAYS_TRUE, DANGLING_POINTER_DEREFERENCE,
DIVIDE_BY_ZERO,
GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL,
INFERBO_ALLOC_MAY_BE_BIG, INFERBO_ALLOC_MAY_BE_NEGATIVE,
INFINITE_EXECUTION_TIME_CALL, NULL_TEST_AFTER_DEREFERENCE,
RETURN_VALUE_IGNORED, STACK_VARIABLE_ADDRESS_ESCAPE,
UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION.
See also --report-issue-type.
(default:
ANALYSIS_STOPS,ARRAY_OUT_OF_BOUNDS_L1,ARRAY_OUT_OF_BOUNDS_L2,ARRAY_OUT_OF_BOUNDS_L3,BUFFER_OVERRUN_L4,BUFFER_OVERRUN_L5,BUFFER_OVERRUN_U5,CLASS_CAST_EXCEPTION,CONDITION_ALWAYS_FALSE,CONDITION_ALWAYS_TRUE,DANGLING_POINTER_DEREFERENCE,DIVIDE_BY_ZERO,GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL,INFERBO_ALLOC_MAY_BE_BIG,INFERBO_ALLOC_MAY_BE_NEGATIVE,INFINITE_EXECUTION_TIME_CALL,NULL_TEST_AFTER_DEREFERENCE,RETURN_VALUE_IGNORED,STACK_VARIABLE_ADDRESS_ESCAPE,UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION
)
See also infer-report(1).
--dump-duplicate-symbols

Activates: Dump all symbols with the same name that are defined in more than one file. (Conversely: --no-dump-duplicate-symbols)

See also infer-capture(1).
--enable-issue-type
+issue_type

Show reports coming from this type of issue. By default, all issue types are enabled except the ones listed in --disable-issue-type. Note that enabling issue types does not make the corresponding checker run; see individual checker options to turn them on or off.

See also infer-report(1).
--eradicate

Activates: the eradicate @Nullable checker for Java annotations (Conversely: --no-eradicate)

See also infer-analyze(1).
--eradicate-only

Activates: Enable --eradicate and disable all other checkers (Conversely: --no-eradicate-only)

See also infer-analyze(1).
--external-java-packages
+prefix

Specify a list of Java package prefixes for external Java packages. If set, the analysis will not report non-actionable warnings on those packages.

See also infer-analyze(1).
--fail-on-issue

Activates: Exit with error code 2 if Infer found something to report (Conversely: --no-fail-on-issue)

See also infer-run(1).
--file-renamings
path

JSON with a list of file renamings to use while computing differential reports

See also infer-reportdiff(1).
--filter-report
+string

Specify a filter for issues to report. If multiple filters are specified, they are applied in the order in which they are specified. Each filter is applied to each issue detected, and only issues which are accepted by all filters are reported. Each filter is of the form: ’<issue_type_regex>:<filename_regex>:<reason_string>’. The first two components are OCaml Str regular expressions, with an optional ’!’ character prefix. If a regex has a ’!’ prefix, the polarity is inverted, and the filter becomes a "blacklist" instead of a "whitelist". Each filter is interpreted as an implication: an issue matches if it does not match the ’issue_type_regex’ or if it does match the ’filename_regex’. The filenames that are tested by the regex are relative to the ’--project-root’ directory. The ’<reason_string>’ is a non-empty string used to explain why the issue was filtered.

See also infer-report(1) and infer-run(1).
--no-filtering
,-F

Deactivates: Do not show the experimental and blacklisted issue types (Conversely: --filtering | -f)

See also infer-report(1).
--flavors

Activates: Buck integration using Buck flavors (clang only), eg ’infer --flavors -- buck build //foo:bar#infer’ (Conversely: --no-flavors)

See also infer-capture(1).
--force-delete-results-dir

Activates: Do not refuse to delete the results directory if it doesn't look like an infer results directory. (Conversely: --no-force-delete-results-dir)

See also infer-capture(1), infer-compile(1), infer-diff(1), and
infer-run
(1).
--force-integration
command

Proceed as if the first argument after -- was command. Possible values: analyze, ant, buck, gradle, gradlew, java, javac, cc, clang, gcc, clang++, c++, g++, make, configure, cmake, waf, mvn, mvnw, ndk-build, python, xcodebuild.

See also infer-capture(1) and infer-run(1).
--no-fragment-retains-view

Deactivates: detects when Android fragments are not explicitly nullified before becoming unreabable (Conversely: --fragment-retains-view)

See also infer-analyze(1).
--fragment-retains-view-only

Activates: Enable --fragment-retains-view and disable all other checkers (Conversely: --no-fragment-retains-view-only)

See also infer-analyze(1).
--from-json-report
report.json

Load analysis results from a report file (default is to load the results from the specs files generated by the analysis).

See also infer-report(1).
--frontend-tests

Activates: Save filename.ext.test.dot with the cfg in dotty format for frontend tests (also sets --print-types) (Conversely: --no-frontend-tests)

See also infer-capture(1).
--gen-previous-build-command-script
shell

Specify a script that outputs the build command to capture in the previous version of the project. The script should output the command on stdout. For example "echo make".

See also infer-diff(1).
--generated-classes
path

Specify where to load the generated class files

See also infer-capture(1).
--headers

Activates: Analyze code in header files (Conversely: --no-headers)

See also infer-capture(1).
--help

Show this manual

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-explore(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--help-format
{ auto | groff | pager | plain }

Show this help in the specified format. auto sets the format to plain if the environment variable TERM is "dumb" or undefined, and to pager otherwise. (default: auto)

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-explore(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--help-full

Show this manual with all internal options in the INTERNAL OPTIONS section

See also infer-analyze(1), infer-capture(1), infer-compile(1),
infer-diff
(1), infer-events(1), infer-explore(1), infer-report(1),
infer-reportdiff
(1), and infer-run(1).
--html

Activates: Generate html report. (Conversely: --no-html)

See also infer-explore(1).
--no-immutable-cast

Deactivates: the detection of object cast from immutable type to mutable type. For instance, it will detect cast from ImmutableList to List, ImmutableMap to Map, and ImmutableSet to Set. (Conversely: --immutable-cast)

See also infer-analyze(1).
--immutable-cast-only

Activates: Enable --immutable-cast and disable all other checkers (Conversely: --no-immutable-cast-only)

See also infer-analyze(1).
--iphoneos-target-sdk-version
string

Specify the target SDK version to use for iphoneos

See also infer-capture(1).
--iphoneos-target-sdk-version-path-regex
+string

To pass a specific target SDK version to use for iphoneos in a particular path, with the format path:version (can be specified multiple times)

See also infer-capture(1).
--issues-fields
,-separated sequence of { bug_class | kind | bug_type |
bucket | qualifier | severity | visibility | line | column | procedure
| procedure_id | procedure_start_line | file | bug_trace | key | hash |
line_offset | procedure_id_without_crc |
qualifier_contains_potential_exception_note }

Fields to emit with --issues-tests (default: file procedure line_offset bug_type bucket kind bug_trace)

See also infer-report(1).
--issues-tests
file

Write a list of issues in a format suitable for tests to file

See also infer-report(1).
--issues-txt
file

Write a list of issues in text format to file (default: infer-out/bugs.txt)

See also infer-report(1).
--java-jar-compiler
path

Specify the Java compiler jar used to generate the bytecode

See also infer-capture(1).
--jobs
,-j int

Run the specified number of analysis jobs simultaneously (default: 4)

See also infer-analyze(1).
--keep-going

Activates: Keep going when the analysis encounters a failure (Conversely: --no-keep-going)

See also infer-analyze(1).
--linter
string

From the linters available, only run this one linter. (Useful together with --linters-developer-mode)

See also infer-capture(1).
--no-linters

Deactivates: syntactic linters (Conversely: --linters)

See also infer-analyze(1).
--linters-def-file
+file

Specify the file containing linters definition (e.g. 'linters.al')

See also infer-capture(1).
--linters-def-folder
+dir

Specify the folder containing linters files with extension .al

See also infer-capture(1).
--linters-developer-mode

Activates: Debug mode for developing new linters. (Sets the analyzer to linters; also sets --debug, --debug-level-linters 2, --developer-mode, and unsets --allowed-failures and --default-linters. (Conversely: --no-linters-developer-mode)

See also infer-capture(1).
--linters-doc-url
+string

Specify custom documentation URL for some linter that overrides the default one. Useful if your project has specific ways of fixing a lint error that is not true in general or public info. Format: linter_name:doc_url.

See also infer-capture(1).
--linters-ignore-clang-failures

Activates: Continue linting files even if some compilation fails. (Conversely: --no-linters-ignore-clang-failures)

See also infer-capture(1).
--linters-only

Activates: Enable --linters and disable all other checkers (Conversely: --no-linters-only)

See also infer-analyze(1).
--linters-validate-syntax-only

Activates: Validate syntax of AL files, then emit possible errors in JSON format to stdout (Conversely: --no-linters-validate-syntax-only)

See also infer-capture(1).
--litho

Activates: Experimental checkers supporting the Litho framework (Conversely: --no-litho)

See also infer-analyze(1).
--litho-only

Activates: Enable --litho and disable all other checkers (Conversely: --no-litho-only)

See also infer-analyze(1).
--no-liveness

Deactivates: the detection of dead stores and unused variables (Conversely: --liveness)

See also infer-analyze(1).
--liveness-only

Activates: Enable --liveness and disable all other checkers (Conversely: --no-liveness-only)

See also infer-analyze(1).
--load-average
,-l float

Do not start new parallel jobs if the load average is greater than that specified (Buck and make only)

See also infer-capture(1).
--log-events

Activates: Turn on the feature that logs events in a machine-readable format (Conversely: --no-log-events)

See also infer-run(1).
--max-nesting
int

Level of nested procedure calls to show. Trace elements beyond the maximum nesting level are skipped. If omitted, all levels are shown.

See also infer-explore(1).
--merge

Activates: Merge the captured results directories specified in the dependency file (Conversely: --no-merge)

See also infer-analyze(1).
--ml-buckets
,-separated sequence of { all | cf | arc | narc | cpp |
unknown_origin }

Specify the memory leak buckets to be checked in C++:

- cpp from C++ code
(default: cf)
See also infer-analyze(1).
--only-show

Activates: Show the list of reports and exit (Conversely: --no-only-show)

See also infer-explore(1).
--no-ownership

Deactivates: the detection of C++ lifetime bugs (Conversely: --ownership)

See also infer-analyze(1).
--ownership-only

Activates: Enable --ownership and disable all other checkers (Conversely: --no-ownership-only)

See also infer-analyze(1).
--pmd-xml

Activates: Output issues in (PMD) XML format (Conversely: --no-pmd-xml)

See also infer-run(1).
--previous-to-current-script
shell

Specify a script to checkout the current version of the project. The project is supposed to already be at that current version when running infer diff; the script is used after having analyzed the current and previous versions of the project, to restore the project to the current version.

See also infer-diff(1).
--print-active-checkers

Activates: Print the active checkers before starting the analysis (Conversely: --no-print-active-checkers)

See also infer-analyze(1).
--print-log-identifier

Activates: Print the unique identifier that is common to all logged events (Conversely: --no-print-log-identifier)

See also infer-run(1).
--print-logs

Activates: Also log messages to stdout and stderr (Conversely: --no-print-logs)

See also infer-analyze(1), infer-capture(1), infer-report(1), and
infer-run
(1).
--no-printf-args

Deactivates: the detection of mismatch between the Java printf format strings and the argument types For, example, this checker will warn about the type error in ’printf("Hello %d", "world")’ (Conversely: --printf-args)

See also infer-analyze(1).
--printf-args-only

Activates: Enable --printf-args and disable all other checkers (Conversely: --no-printf-args-only)

See also infer-analyze(1).
--procedures

Activates: Print functions and methods discovered by infer (Conversely: --no-procedures)

See also infer-explore(1).
--procedures-attributes

Activates: Print the attributes of each procedure in the output of --procedures (Conversely: --no-procedures-attributes)

See also infer-explore(1).
--no-procedures-definedness

Deactivates: Include procedures definedness in the output of --procedures, i.e. whether the procedure definition was found, or only the procedure declaration, or the procedure is an auto-generated Objective-C accessor (Conversely: --procedures-definedness)

See also infer-explore(1).
--procedures-filter
filter

With --procedures, only print functions and methods (procedures) matching the specified filter. A procedure filter is of the form path_pattern:procedure_name. Patterns are interpreted by SQLite: use _ to match any one character and % to match any sequence of characters. For instance, to keep only methods named "foo", one can use the filter "%:foo".

See also infer-explore(1).
--procedures-name

Activates: Include procedures names in the output of --procedures (Conversely: --no-procedures-name)

See also infer-explore(1).
--no-procedures-source-file

Deactivates: Include the source file in which the procedure definition or declaration was found in the output of --procedures (Conversely: --procedures-source-file)

See also infer-explore(1).
--no-progress-bar
,-P

Deactivates: Show a progress bar (Conversely: --progress-bar | -p)

See also infer-run(1).
--project-root
,-C dir

Specify the root directory of the project (default: /home/jul/infer.fb)

See also infer-analyze(1), infer-capture(1), infer-report(1), and
infer-run
(1).
--quandary

Activates: the quandary taint analysis (Conversely: --no-quandary)

See also infer-analyze(1).
--quandary-endpoints
json

Specify endpoint classes for Quandary (default: [])

See also infer-analyze(1).
--quandary-only

Activates: Enable --quandary and disable all other checkers (Conversely: --no-quandary-only)

See also infer-analyze(1).
--quandary-sanitizers
json

Specify custom sanitizers for Quandary (default: [])

See also infer-analyze(1).
--quandary-sinks
json

Specify custom sinks for Quandary (default: [])

See also infer-analyze(1).
--quandary-sources
json

Specify custom sources for Quandary (default: [])

See also infer-analyze(1).
--quiet
,-q

Activates: Do not print specs on standard output (default: only print for the report command) (Conversely: --no-quiet | -Q)

See also infer-analyze(1) and infer-report(1).
--no-racerd

Deactivates: the RacerD thread safety analysis (Conversely: --racerd)

See also infer-analyze(1).
--racerd-only

Activates: Enable --racerd and disable all other checkers (Conversely: --no-racerd-only)

See also infer-analyze(1).
--reactive
,-r

Activates: Reactive mode: the analysis starts from the files captured since the infer command started (Conversely: --no-reactive | -R)

See also infer-analyze(1).
--no-report

Deactivates: Run the reporting phase once the analysis has completed (Conversely: --report)

See also infer-analyze(1) and infer-run(1).
--report-current
path

report of the latest revision

See also infer-reportdiff(1).
--report-formatter
{ none | phabricator }

Which formatter to use when emitting the report (default: phabricator)

See also infer-report(1).
--report-hook
script

Specify a script to be executed after the analysis results are written. This script will be passed, --issues-json, --issues-txt, --issues-xml, --project-root, and --results-dir. (default: /home/jul/infer.fb/infer/bin/../lib/python/report.py)

See also infer-analyze(1) and infer-run(1).
--report-previous
path

Report of the base revision to use for comparison

See also infer-reportdiff(1).
--results-dir
,-o dir

Write results and internal files in the specified directory (default: /home/jul/infer.fb/infer-out)

See also infer-analyze(1), infer-capture(1), infer-explore(1),
infer-report
(1), and infer-run(1).
--select
N

Select bug number N. If omitted, prompt for input.

See also infer-explore(1).
--no-siof

Deactivates: the Static Initialization Order Fiasco analysis (C++ only) (Conversely: --siof)

See also infer-analyze(1).
--siof-check-iostreams

Activates: Do not assume that iostreams (cout, cerr, ...) are always initialized. The default is to assume they are always initialized when --cxx-infer-headers is false to avoid false positives due to lack of models of the proper initialization of io streams. However, if your program compiles against a recent libstdc++ then the infer models are not needed for precision and it is safe to turn this option on. (Conversely: --no-siof-check-iostreams)

See also infer-analyze(1).
--siof-only

Activates: Enable --siof and disable all other checkers (Conversely: --no-siof-only)

See also infer-analyze(1).
--siof-safe-methods
+string

Methods that are SIOF-safe; "foo::bar" will match "foo::bar()", "foo<int>::bar()", etc. (can be specified multiple times)

See also infer-analyze(1).
--skip-analysis-in-path
+path_prefix_OCaml_regex

Ignore files whose path matches the given prefix (can be specified multiple times)

See also infer-capture(1) and infer-run(1).
--skip-analysis-in-path-skips-compilation

Activates: Whether paths in --skip-analysis-in-path should be compiled or not (Conversely: --no-skip-analysis-in-path-skips-compilation)

See also infer-report(1).
--no-skip-duplicated-types

Deactivates: Skip fixed-then-introduced duplicated types while computing differential reports (Conversely: --skip-duplicated-types)

See also infer-reportdiff(1).
--skip-translation-headers
+path_prefix

Ignore headers whose path matches the given prefix

See also infer-capture(1).
--source-files

Activates: Print source files discovered by infer (Conversely: --no-source-files)

See also infer-explore(1).
--source-files-cfgs

Activates: Print the Cfgs of each source file in the output of --source-files (Conversely: --no-source-files-cfgs)

See also infer-explore(1).
--source-files-filter
filter

With --source-files, only print source files matching the specified filter. The filter is a pattern that should match the file path. Patterns are interpreted by SQLite: use _ to match any one character and % to match any sequence of characters. For instance, "lib/%.c" matches only C files in the lib directory.

See also infer-explore(1).
--source-files-freshly-captured

Activates: Print whether the source file has been captured in the most recent capture phase in the output of --source-files. (Conversely: --no-source-files-freshly-captured)

See also infer-explore(1).
--source-files-procedure-names

Activates: Print the names of procedure of each source file in the output of --source-files (Conversely: --no-source-files-procedure-names)

See also infer-explore(1).
--source-files-type-environment

Activates: Print the type environment of each source file in the output of --source-files (Conversely: --no-source-files-type-environment)

See also infer-explore(1).
--no-source-preview

Deactivates: print code excerpts around trace elements (Conversely: --source-preview)

See also infer-explore(1).
--stacktrace
file

File path containing a json-encoded Java crash stacktrace. Used to guide the analysis (only with '-a crashcontext'). See tests/codetoanalyze/java/crashcontext/*.json for examples of the expected format.

See also infer-analyze(1).
--stacktraces-dir
dir

Directory path containing multiple json-encoded Java crash stacktraces. Used to guide the analysis (only with '-a crashcontext'). See tests/codetoanalyze/java/crashcontext/*.json for examples of the expected format.

See also infer-analyze(1).
--starvation

Activates: starvation analysis (Conversely: --no-starvation)

See also infer-analyze(1).
--starvation-only

Activates: Enable --starvation and disable all other checkers (Conversely: --no-starvation-only)

See also infer-analyze(1).
--suggest-nullable

Activates: Nullable annotation sugesstions analysis (Conversely: --no-suggest-nullable)

See also infer-analyze(1).
--suggest-nullable-only

Activates: Enable --suggest-nullable and disable all other checkers (Conversely: --no-suggest-nullable-only)

See also infer-analyze(1).
--threadsafe-aliases
json

Specify custom annotations that should be considered aliases of @ThreadSafe (default: [])

See also infer-analyze(1).
--no-uninit

Deactivates: checker for use of uninitialized values (Conversely: --uninit)

See also infer-analyze(1).
--uninit-only

Activates: Enable --uninit and disable all other checkers (Conversely: --no-uninit-only)

See also infer-analyze(1).
--unsafe-malloc

Activates: Assume that malloc(3) never returns null. (Conversely: --no-unsafe-malloc)

See also infer-analyze(1).
--version

Print version information and exit

See also infer-run(1).
--version-json

Print version information in json format and exit

See also infer-run(1).
--Xbuck
+string

Pass values as command-line arguments to invocations of ’buck build’

See also infer-capture(1).
--xcode-developer-dir
XCODE_DEVELOPER_DIR

Specify the path to Xcode developer directory

See also infer-capture(1).
--xcpretty

Activates: Infer will use xcpretty together with xcodebuild to analyze an iOS app. xcpretty just needs to be in the path, infer command is still just ’infer -- <xcodebuild command>’. (Conversely: --no-xcpretty)

See also infer-capture(1).

--

Stop argument processing, use remaining arguments as a build command

See also infer-capture(1) and infer-run(1).

ENVIRONMENT

Extra arguments may be passed to all infer commands using the INFER_ARGS environment variable (see the OPTIONS section). INFER_ARGS is expected to contain a string of ^-separated options. For instance, calling ’INFER_ARGS=--debug^--print-logs infer’ is equivalent to calling ’infer --debug --print-logs’.

INFERCONFIG: Tells infer where to find the .inferconfig file. (See the FILES section)

If INFER_STRICT_MODE is set to "1", then infer commands will exit with an error code in some cases when otherwise a simple warning would be emitted on stderr, for instance if a deprecated form of an option is used.

FILES

.inferconfig can be used to store infer options. Its format is that of a JSON record, where fields are infer long-form options, without their leading "--", and values depend on the type of the option:
- for switches options, the value is a JSON boolean (true or false, without quotes)
- for integers, the value is a JSON integer (without quotes)
- string options have string values
- path options have string values, and are interpreted relative to the location of the .inferconfig file
- cumulative options are JSON arrays of the appropriate type

Infer will look for an .inferconfig file in the current directory, then its parent, etc., stopping at the first .inferconfig file found.

Example:

{
"cxx": false,
"infer-blacklist-files-containing": ["@generated","@Generated"]
}

SEE ALSO

infer-analyze(1), infer-capture(1), infer-compile(1), infer-diff(1), infer-events(1), infer-explore(1), infer-report(1), infer-reportdiff(1), infer-run(1)