diff --git a/website/docs/all-issue-types.md b/website/docs/all-issue-types.md index a28011b9c..a24c599f7 100644 --- a/website/docs/all-issue-types.md +++ b/website/docs/all-issue-types.md @@ -219,37 +219,11 @@ This error is reported when the argument types to a `printf` method do not match Action: fix the mismatch between format string and argument types. -## COMPONENT_FACTORY_FUNCTION - -Reported as "Component Factory Function" by [linters](/docs/next/checker-linters). - - -## COMPONENT_FILE_CYCLOMATIC_COMPLEXITY - -Reported as "Component File Cyclomatic Complexity" by [linters](/docs/next/checker-linters). - - -## COMPONENT_FILE_LINE_COUNT - -Reported as "Component File Line Count" by [linters](/docs/next/checker-linters). - - -## COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS - -Reported as "Component Initializer With Side Effects" by [linters](/docs/next/checker-linters). - - ## COMPONENT_WITH_MULTIPLE_FACTORY_METHODS Reported as "Component With Multiple Factory Methods" by [linters](/docs/next/checker-linters). -## COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS - -Reported as "Component With Unconventional Superclass" by [linters](/docs/next/checker-linters). - -[Doc in ComponentKit page](http://componentkit.org/docs/never-subclass-components) - ## CONDITION_ALWAYS_FALSE Reported as "Condition Always False" by [bufferoverrun](/docs/next/checker-bufferoverrun). @@ -1326,11 +1300,6 @@ 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. -## POINTER_SIZE_MISMATCH - -Reported as "Pointer Size Mismatch" by [biabduction](/docs/next/checker-biabduction). - - ## POINTER_TO_CONST_OBJC_CLASS Reported as "Pointer To Const Objc Class" by [linters](/docs/next/checker-linters). @@ -1403,16 +1372,6 @@ void set_impure(int x, int y) { Reported as "Taint Error" by [quandary](/docs/next/checker-quandary). Generic taint error when nothing else fits. -## REGISTERED_OBSERVER_BEING_DEALLOCATED - -Reported as "Registered Observer Being Deallocated" by [linters](/docs/next/checker-linters). - -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. - ## RESOURCE_LEAK Reported as "Resource Leak" by [biabduction](/docs/next/checker-biabduction). @@ -1736,11 +1695,6 @@ Environment variable or file data flowing to shell. Reported as "Shell Injection Risk" by [quandary](/docs/next/checker-quandary). Code injection if the caller of the endpoint doesn't sanitize on its end. -## SKIP_POINTER_DEREFERENCE - -Reported as "Skip Pointer Dereference" by [biabduction](/docs/next/checker-biabduction). - - ## SQL_INJECTION Reported as "Sql Injection" by [quandary](/docs/next/checker-quandary). @@ -1981,36 +1935,6 @@ These annotations can be found at `com.facebook.infer.annotation.*`. Reported as "Topl Error" by [topl](/docs/next/checker-topl). Experimental. -## UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION - -Reported as "Unary Minus Applied To Unsigned Expression" by [biabduction](/docs/next/checker-biabduction). - - -## UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK - -Reported as "Unavailable Api In Supported Ios Sdk" by [linters](/docs/next/checker-linters). - -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]; -} -``` - ## UNINITIALIZED_VALUE Reported as "Uninitialized Value" by [uninit](/docs/next/checker-uninit). diff --git a/website/docs/checker-biabduction.md b/website/docs/checker-biabduction.md index 2fefba249..f544e215a 100644 --- a/website/docs/checker-biabduction.md +++ b/website/docs/checker-biabduction.md @@ -23,9 +23,6 @@ The following issue types are reported by this checker: - [IVAR_NOT_NULL_CHECKED](/docs/next/all-issue-types#ivar_not_null_checked) - [NULL_DEREFERENCE](/docs/next/all-issue-types#null_dereference) - [PARAMETER_NOT_NULL_CHECKED](/docs/next/all-issue-types#parameter_not_null_checked) -- [POINTER_SIZE_MISMATCH](/docs/next/all-issue-types#pointer_size_mismatch) - [PREMATURE_NIL_TERMINATION_ARGUMENT](/docs/next/all-issue-types#premature_nil_termination_argument) - [RESOURCE_LEAK](/docs/next/all-issue-types#resource_leak) - [RETAIN_CYCLE](/docs/next/all-issue-types#retain_cycle) -- [SKIP_POINTER_DEREFERENCE](/docs/next/all-issue-types#skip_pointer_dereference) -- [UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION](/docs/next/all-issue-types#unary_minus_applied_to_unsigned_expression) diff --git a/website/docs/checker-config-checks-between-markers.md b/website/docs/checker-config-checks-between-markers.md index d56eff8b3..a59004cb5 100644 --- a/website/docs/checker-config-checks-between-markers.md +++ b/website/docs/checker-config-checks-between-markers.md @@ -8,7 +8,7 @@ description: "[EXPERIMENTAL] Collects config checks between marker start and end Activate with `--config-checks-between-markers`. Supported languages: -- C/C++/ObjC: No +- C/C++/ObjC: Experimental - Java: Experimental This checker is currently only useful for certain Facebook code. diff --git a/website/docs/checker-linters.md b/website/docs/checker-linters.md index 46bad0ff3..cc852c203 100644 --- a/website/docs/checker-linters.md +++ b/website/docs/checker-linters.md @@ -709,18 +709,11 @@ developing new linters in Infer. Read about them in the [`infer capture` manual] The following issue types are reported by this checker: - [ASSIGN_POINTER_WARNING](/docs/next/all-issue-types#assign_pointer_warning) - [BAD_POINTER_COMPARISON](/docs/next/all-issue-types#bad_pointer_comparison) -- [COMPONENT_FACTORY_FUNCTION](/docs/next/all-issue-types#component_factory_function) -- [COMPONENT_FILE_CYCLOMATIC_COMPLEXITY](/docs/next/all-issue-types#component_file_cyclomatic_complexity) -- [COMPONENT_FILE_LINE_COUNT](/docs/next/all-issue-types#component_file_line_count) -- [COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS](/docs/next/all-issue-types#component_initializer_with_side_effects) - [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](/docs/next/all-issue-types#component_with_multiple_factory_methods) -- [COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS](/docs/next/all-issue-types#component_with_unconventional_superclass) - [CXX_REFERENCE_CAPTURED_IN_OBJC_BLOCK](/docs/next/all-issue-types#cxx_reference_captured_in_objc_block) - [DIRECT_ATOMIC_PROPERTY_ACCESS](/docs/next/all-issue-types#direct_atomic_property_access) - [DISCOURAGED_WEAK_PROPERTY_CUSTOM_SETTER](/docs/next/all-issue-types#discouraged_weak_property_custom_setter) - [GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL](/docs/next/all-issue-types#global_variable_initialized_with_function_or_method_call) - [MUTABLE_LOCAL_VARIABLE_IN_COMPONENT_FILE](/docs/next/all-issue-types#mutable_local_variable_in_component_file) - [POINTER_TO_CONST_OBJC_CLASS](/docs/next/all-issue-types#pointer_to_const_objc_class) -- [REGISTERED_OBSERVER_BEING_DEALLOCATED](/docs/next/all-issue-types#registered_observer_being_deallocated) - [STRONG_DELEGATE_WARNING](/docs/next/all-issue-types#strong_delegate_warning) -- [UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK](/docs/next/all-issue-types#unavailable_api_in_supported_ios_sdk) diff --git a/website/static/man/next/infer-analyze.1.html b/website/static/man/next/infer-analyze.1.html index 66073ba0d..74d1a33a5 100644 --- a/website/static/man/next/infer-analyze.1.html +++ b/website/static/man/next/infer-analyze.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-analyze -

infer-analyze

+

infer-analyze

NAME
SYNOPSIS
@@ -38,35 +37,31 @@
-

NAME -

+

NAME

infer-analyze - analyze the files captured by infer

-

SYNOPSIS -

+

SYNOPSIS

infer analyze [options]
infer
[options]

-

DESCRIPTION -

+

DESCRIPTION

Analyze the files captured in the project results directory and report.

-

OPTIONS -

+

OPTIONS

@@ -74,12 +69,12 @@ report.

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

@@ -153,7 +148,7 @@ given the same before. Not compatible with

Activates: checker cost: Computes the time complexity of functions and methods. Can be used to detect changes in runtime complexity with -’infer reportdiff’. (Conversely: +‘infer reportdiff‘. (Conversely: --no-cost)

--cost-only

@@ -227,7 +222,7 @@ reporting. (Conversely: --deduplicate)

--eradicate

Activates: checker eradicate: -The eradicate ’@Nullable’ checker for Java +The eradicate ‘@Nullable‘ checker for Java annotations. (Conversely: --no-eradicate)

--eradicate-only

@@ -273,9 +268,9 @@ internal options in the INTERNAL OPTIONS section

Activates: checker immutable-cast: Detection of object cast from immutable types to mutable types. For instance, it will detect casts -from ’ImmutableList’ to ’List’, -’ImmutableMap’ to ’Map’, and -’ImmutableSet’ to ’Set’. +from ‘ImmutableList‘ to ‘List‘, +‘ImmutableMap‘ to ‘Map‘, and +‘ImmutableSet‘ to ‘Set‘. (Conversely: --no-immutable-cast)

@@ -344,7 +339,7 @@ disable all other checkers (Conversely:

Activates: checker litho-required-props: Checks that all non-optional -’@Prop’s have been specified when constructing +‘@Prop‘s have been specified when constructing Litho components. (Conversely: --no-litho-required-props)

@@ -403,11 +398,11 @@ stdout and stderr (Conversely: --no-print-logs)

--printf-args

Activates: checker printf-args: -Detect mismatches between the Java ’printf’ +Detect mismatches 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("Hello %d", +"world")‘ (Conversely: --no-printf-args)

--printf-args-only

@@ -555,7 +550,7 @@ files in the specified directory

Deactivates: checker self-in-block: An Objective-C-specific analysis to detect -when a block captures ’self’. (Conversely: +when a block captures ‘self‘. (Conversely: --self-in-block)

@@ -635,9 +630,8 @@ Warns when values are used before having been initialized. disable all other checkers (Conversely: --no-uninit-only)

-

BUCK OPTIONS -

+

BUCK OPTIONS

@@ -647,9 +641,8 @@ disable all other checkers (Conversely: results directories specified in the dependency file. (Conversely: --no-merge)

-

BUFFER OVERRUN OPTIONS -

+

BUFFER OVERRUN OPTIONS

@@ -665,9 +658,8 @@ checker (0-4)

Limit of field depth of abstract location in buffer-overrun checker

-

CLANG OPTIONS -

+

CLANG OPTIONS

@@ -700,9 +692,10 @@ Example:

".*::Trusted::.*" ] }
}
}
-}
-This will cause us to create a new ISOLATED_REACHING_CONNECT -
+}

+ +

This will cause +us to create a new ISOLATED_REACHING_CONNECT
issue for every function whose source path starts with "isolated/"
that may reach the function named "connect", @@ -759,9 +752,8 @@ to be checked in C++:

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

-

JAVA OPTIONS -

+

JAVA OPTIONS

@@ -790,9 +782,8 @@ packages.

The version of Java being used. Set it to your Java version if mvn is failing.

-

QUANDARY CHECKER OPTIONS -

+

QUANDARY CHECKER OPTIONS

@@ -820,9 +811,8 @@ Quandary

Specify custom sources for Quandary

-

RACERD CHECKER OPTIONS -

+

RACERD CHECKER OPTIONS

@@ -845,9 +835,8 @@ nothing. (Conversely:

Specify custom annotations that should be considered aliases of @ThreadSafe

-

SIOF CHECKER OPTIONS -

+

SIOF CHECKER OPTIONS

@@ -868,9 +857,8 @@ recent libstdc++ then it is safe to turn this option on. "foo<int>::bar()", etc. (can be specified multiple times)

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -880,9 +868,8 @@ multiple times)

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -891,9 +878,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer-capture.1.html b/website/static/man/next/infer-capture.1.html index 21398b8d7..dacb0aae8 100644 --- a/website/static/man/next/infer-capture.1.html +++ b/website/static/man/next/infer-capture.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-capture -

infer-capture

+

infer-capture

NAME
SYNOPSIS
@@ -35,17 +34,15 @@
-

NAME -

+

NAME

infer-capture - capture source files for later analysis

-

SYNOPSIS -

+

SYNOPSIS

infer @@ -72,9 +69,8 @@ infer capture [options] -- ndk-build infer capture [--no-xcpretty] [options] -- xcodebuild ...

-

DESCRIPTION -

+

DESCRIPTION

Capture the @@ -84,9 +80,8 @@ source files, translate them into infer's intermediate representation, and store the result of the translation in the results directory.

-

OPTIONS -

+

OPTIONS

@@ -233,25 +228,24 @@ database operations, in milliseconds.

SQLite page size in bytes, must be a power of two between 512 and 65536.

- +

--

+

Stop argument +processing, use remaining arguments as a build command

-

--

-

Stop argument processing, use remaining arguments as a -build command

-

BUCK OPTIONS -

+

BUCK OPTIONS

@@ -326,14 +320,14 @@ matched by the specified regular expression. Only valid for +string

Pass values as command-line -arguments to invocations of ’buck build’. +arguments to invocations of ‘buck build‘. Only valid for --buck-clang.

--Xbuck-no-inline +string

Pass values as command-line -arguments to invocations of ’buck build’, +arguments to invocations of ‘buck build‘, don't inline any args starting with '@'. Only valid for --buck-clang.

@@ -343,9 +337,8 @@ don't inline any args starting with '@'. Only valid for

Specify the path to Xcode developer directory, to use for Buck clang targets

-

CLANG LINTERS OPTIONS -

+

CLANG LINTERS OPTIONS

@@ -362,21 +355,6 @@ See --debug-level for accepted values.

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

- -

--iphoneos-target-sdk-version -string

- -

Specify the target SDK version -to use for iphoneos

- - -

--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)

-

--linter string

@@ -430,9 +408,8 @@ files even if some compilation fails. (Conversely: AL files, then emit possible errors in JSON format to stdout (Conversely: --no-linters-validate-syntax-only)

-

CLANG OPTIONS -

+

CLANG OPTIONS

@@ -478,13 +455,6 @@ commands (can be specified multiple times)

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

-

--compute-analytics

- -

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

-

--no-cxx

Deactivates: Analyze C++ @@ -527,13 +497,12 @@ arguments to invocations of clang

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: +still just ‘infer -- <xcodebuild +command>‘. (Conversely: --no-xcpretty)

-

JAVA OPTIONS -

+

JAVA OPTIONS

@@ -575,9 +544,8 @@ used to generate the bytecode

The version of Java being used. Set it to your Java version if mvn is failing.

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -587,9 +555,8 @@ Set it to your Java version if mvn is failing.

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -598,9 +565,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer-compile.1.html b/website/static/man/next/infer-compile.1.html index d9da56a6b..28825affe 100644 --- a/website/static/man/next/infer-compile.1.html +++ b/website/static/man/next/infer-compile.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-compile -

infer-compile

+

infer-compile

NAME
SYNOPSIS
@@ -32,25 +31,22 @@
-

NAME -

+

NAME

infer-compile - compile project from within the infer environment

-

SYNOPSIS -

+

SYNOPSIS

infer compile -- [compile command]

-

DESCRIPTION -

+

DESCRIPTION

Intercepts @@ -59,9 +55,8 @@ simply execute these compilation commands and do not perform any translation of the source files. This can be useful to configure build systems or for debugging purposes.

-

OPTIONS -

+

OPTIONS

@@ -130,9 +125,8 @@ undefined, and to pager otherwise.

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

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -142,9 +136,8 @@ internal options in the INTERNAL OPTIONS section

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -153,9 +146,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

EXAMPLES -

+

EXAMPLES

@@ -190,9 +182,8 @@ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 ..
infer capture --compilation-database compile_commands.json

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer-explore.1.html b/website/static/man/next/infer-explore.1.html index a0ccc7497..8092ed5a7 100644 --- a/website/static/man/next/infer-explore.1.html +++ b/website/static/man/next/infer-explore.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-explore -

infer-explore

+

infer-explore

NAME
SYNOPSIS
@@ -34,17 +33,15 @@
-

NAME -

+

NAME

infer-explore - explore the error traces in infer reports

-

SYNOPSIS -

+

SYNOPSIS

infer @@ -52,9 +49,8 @@ explore [options]
infer explore --procedures
[options]
infer explore --source-files
[options]

-

DESCRIPTION -

+

DESCRIPTION

If @@ -70,9 +66,8 @@ the list of bugs on the console and explore symbolic program traces emitted by infer to explain a report. Can also generate an HTML report from a JSON report.

-

OPTIONS -

+

OPTIONS

@@ -99,9 +94,8 @@ internal options in the INTERNAL OPTIONS section

Write results and internal files in the specified directory

-

EXPLORE BUGS -

+

EXPLORE BUGS

@@ -128,9 +122,8 @@ omitted, prompt for input.

excerpts around trace elements (Conversely: --source-preview)

-

EXPLORE PROCEDURES -

+

EXPLORE PROCEDURES

@@ -189,9 +182,8 @@ found in the output of --procedures (Conversely: of each procedure in the output of --procedures (Conversely: --no-procedures-summary)

-

EXPLORE SOURCE FILES -

+

EXPLORE SOURCE FILES

@@ -241,9 +233,8 @@ environment of each source file in the output of --source-files (Conversely: --no-source-files-type-environment)

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -253,9 +244,8 @@ environment of each source file in the output of

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -264,9 +254,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer-help.1.html b/website/static/man/next/infer-help.1.html index a7c9871fc..8fb866d79 100644 --- a/website/static/man/next/infer-help.1.html +++ b/website/static/man/next/infer-help.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-help -

infer-help

+

infer-help

NAME
SYNOPSIS
@@ -30,17 +29,15 @@
-

NAME -

+

NAME

infer-help - Show and generate documentation.

-

SYNOPSIS -

+

SYNOPSIS

infer help @@ -53,9 +50,8 @@ infer help --list-checkers
infer help --list-issue-types
infer help --write-website
website_root

-

DESCRIPTION -

+

DESCRIPTION

Without @@ -81,9 +77,8 @@ for the fbinfer.com website. (Used in scripts, not meant to be used except when publishing content to fbinfer.com)

-

OPTIONS -

+

OPTIONS

@@ -139,9 +134,8 @@ documenting issue types and checkers under Infer directory to generate its website at fbinfer.com at website/.

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -151,9 +145,8 @@ Infer directory to generate its website at

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

diff --git a/website/static/man/next/infer-report.1.html b/website/static/man/next/infer-report.1.html index 0778c7804..f96509b04 100644 --- a/website/static/man/next/infer-report.1.html +++ b/website/static/man/next/infer-report.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-report -

infer-report

+

infer-report

NAME
SYNOPSIS
@@ -32,25 +31,22 @@
-

NAME -

+

NAME

infer-report - compute and manipulate infer results

-

SYNOPSIS -

+

SYNOPSIS

infer report [options] [file.specs...]

-

DESCRIPTION -

+

DESCRIPTION

Read, convert, @@ -61,9 +57,8 @@ is printed to standard output unless option -q is used.

file are passed on the command line, process all the .specs in the results directory.

-

OPTIONS -

+

OPTIONS

@@ -79,18 +74,18 @@ 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>’. +‘<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 +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 +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 +‘--project-root‘ directory. The +‘<reason_string>‘ is a non-empty string used to explain why the issue was filtered.

--cost-issues-tests @@ -165,8 +160,11 @@ have run. In particular, note that disabling issue types does not make the corresponding checker not run.

Available issue types are as -follows:
-ARRAY_OUT_OF_BOUNDS_L1 (disabled by default),
+follows:

+ + +

ARRAY_OUT_OF_BOUNDS_L1 +(disabled by default),
ARRAY_OUT_OF_BOUNDS_L2 (disabled by default),
ARRAY_OUT_OF_BOUNDS_L3 (disabled by default),
ASSIGN_POINTER_WARNING (enabled by default),
@@ -195,16 +193,8 @@ CHECKERS_FRAGMENT_RETAINS_VIEW (enabled by default),
CHECKERS_IMMUTABLE_CAST (enabled by default),
CHECKERS_PRINTF_ARGS (enabled by default),
CLASS_CAST_EXCEPTION (disabled by default),
-COMPONENT_FACTORY_FUNCTION (enabled by default),
-COMPONENT_FILE_CYCLOMATIC_COMPLEXITY (enabled by default), -
-COMPONENT_FILE_LINE_COUNT (disabled by default),
-COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS (enabled by -default),
COMPONENT_WITH_MULTIPLE_FACTORY_METHODS (enabled by default),
-COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS (enabled by -default),
CONDITION_ALWAYS_FALSE (disabled by default),
CONDITION_ALWAYS_TRUE (disabled by default),
CONFIG_CHECKS_BETWEEN_MARKERS (disabled by default),
@@ -302,7 +292,6 @@ Missing_fld (enabled by default),
NULLPTR_DEREFERENCE (disabled by default),
NULL_DEREFERENCE (enabled by default),
PARAMETER_NOT_NULL_CHECKED (enabled by default),
-POINTER_SIZE_MISMATCH (enabled by default),
POINTER_TO_CONST_OBJC_CLASS (enabled by default),
PRECONDITION_NOT_FOUND (enabled by default),
PRECONDITION_NOT_MET (enabled by default),
@@ -310,14 +299,11 @@ PREMATURE_NIL_TERMINATION_ARGUMENT (enabled by default),
PURE_FUNCTION (enabled by default),
QUANDARY_TAINT_ERROR (enabled by default),
-REGISTERED_OBSERVER_BEING_DEALLOCATED (enabled by default), -
RESOURCE_LEAK (enabled by default),
RETAIN_CYCLE (enabled by default),
SHELL_INJECTION (enabled by default),
SHELL_INJECTION_RISK (enabled by default),
SKIP_FUNCTION (disabled by default),
-SKIP_POINTER_DEREFERENCE (disabled by default),
SQL_INJECTION (enabled by default),
SQL_INJECTION_RISK (enabled by default),
STACK_VARIABLE_ADDRESS_ESCAPE (enabled by default),
@@ -330,10 +316,6 @@ STRONG_SELF_NOT_CHECKED (enabled by default),
Symexec_memory_error (enabled by default),
THREAD_SAFETY_VIOLATION (enabled by default),
TOPL_ERROR (enabled by default),
-UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION (disabled by
-default),
-UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK (enabled by default), -
UNINITIALIZED_VALUE (enabled by default),
UNREACHABLE_CODE (enabled by default),
UNTRUSTED_BUFFER_ACCESS (disabled by default),
@@ -493,9 +475,8 @@ files in the specified directory

(Conversely: --no-skip-analysis-in-path-skips-compilation)

-

HOISTING OPTIONS -

+

HOISTING OPTIONS

@@ -506,9 +487,8 @@ loop-invariant calls only when the function is expensive, i.e. at least linear (Conversely: --hoisting-report-only-expensive)

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -518,9 +498,8 @@ i.e. at least linear (Conversely:

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -529,9 +508,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer-reportdiff.1.html b/website/static/man/next/infer-reportdiff.1.html index e3af16a3e..6bbe48d04 100644 --- a/website/static/man/next/infer-reportdiff.1.html +++ b/website/static/man/next/infer-reportdiff.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer-reportdiff -

infer-reportdiff

+

infer-reportdiff

NAME
SYNOPSIS
@@ -31,27 +30,24 @@
-

NAME -

+

NAME

infer-reportdiff - compute the differences between two infer reports

-

SYNOPSIS -

+

SYNOPSIS

infer reportdiff --report-current file --report-previous file [options]

-

DESCRIPTION -

+

DESCRIPTION

Given two infer @@ -69,9 +65,8 @@ directory:

All three files follow the same format as normal infer reports.

-

OPTIONS -

+

OPTIONS

@@ -176,9 +171,8 @@ fixed-then-introduced duplicated types while computing differential reports (Conversely: --skip-duplicated-types)

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -188,9 +182,8 @@ differential reports (Conversely:

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -199,9 +192,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer-run.1.html b/website/static/man/next/infer-run.1.html index 03a789c30..d209c1f43 100644 --- a/website/static/man/next/infer-run.1.html +++ b/website/static/man/next/infer-run.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,24 +8,22 @@ infer-run -

infer-run

+

infer-run

NAME
SYNOPSIS
DESCRIPTION
OPTIONS
BUCK OPTIONS
-CLANG OPTIONS
JAVA OPTIONS
ENVIRONMENT
FILES
@@ -34,17 +32,15 @@
-

NAME -

+

NAME

infer-run - capture source files, analyze, and report

-

SYNOPSIS -

+

SYNOPSIS

infer @@ -52,9 +48,8 @@ run [options]
infer
[options] -- compile command

-

DESCRIPTION -

+

DESCRIPTION

Calling @@ -65,14 +60,13 @@ to performing the following sequence of commands:

capture [options]
infer analyze
[options]

-

OPTIONS -

+

OPTIONS

-

--censor-report -+string

+

--censor-report ++string

Specify a filter for issues to be censored by adding a 'censored_reason' field in the json @@ -83,18 +77,18 @@ 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>’. +‘<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 +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 +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 +‘--project-root‘ directory. The +‘<reason_string>‘ is a non-empty string used to explain why the issue was filtered.

--debug,-g

@@ -289,25 +283,24 @@ exit

Print version information in json format and exit

- +

--

+

Stop argument +processing, use remaining arguments as a build command

-

--

-

Stop argument processing, use remaining arguments as a -build command

-

BUCK OPTIONS -

+

BUCK OPTIONS

@@ -326,22 +319,8 @@ not Java.
matched by the specified regular expression. Only valid for --buck-compilation-database.

-

CLANG OPTIONS - -

- - - -

--compute-analytics

- -

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

- -

JAVA OPTIONS -

+

JAVA OPTIONS

@@ -352,9 +331,8 @@ component kit file cyclomatic complexity (Conversely: by the specified OCaml regular expression (only supported by the javac integration for now).

-

ENVIRONMENT -

+

ENVIRONMENT

@@ -364,9 +342,8 @@ the javac integration for now).

See the ENVIRONMENT section in the manual of infer(1).

-

FILES -

+

FILES

@@ -375,9 +352,8 @@ the manual of infer(1).

See the FILES section in the manual of infer(1).

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/man/next/infer.1.html b/website/static/man/next/infer.1.html index dffe3faae..6c8813a04 100644 --- a/website/static/man/next/infer.1.html +++ b/website/static/man/next/infer.1.html @@ -1,5 +1,5 @@ - - + + @@ -8,17 +8,16 @@ infer -

infer

+

infer

NAME
SYNOPSIS
@@ -31,17 +30,15 @@
-

NAME -

+

NAME

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

-

SYNOPSIS -

+

SYNOPSIS

infer @@ -58,9 +55,8 @@ infer --compilation-database[-escaped] file infer [options] -- compile command
infer
[options]

-

DESCRIPTION -

+

DESCRIPTION

Infer is a @@ -80,9 +76,8 @@ specified via the -- option or one of the infer behaves as infer-run(1). Otherwise, infer behaves as infer-analyze(1).

-

OPTIONS -

+

OPTIONS

Every infer @@ -122,12 +117,12 @@ reserved for internal use).

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

See also @@ -172,9 +167,10 @@ Example:

".*::Trusted::.*" ] }
}
}
-}
-This will cause us to create a new ISOLATED_REACHING_CONNECT -
+}

+ +

This will cause +us to create a new ISOLATED_REACHING_CONNECT
issue for every function whose source path starts with "isolated/"
that may reach the function named "connect", @@ -348,18 +344,18 @@ 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>’. +‘<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 +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 +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 +‘--project-root‘ directory. The +‘<reason_string>‘ is a non-empty string used to explain why the issue was filtered.

See also infer-report(1) @@ -417,15 +413,6 @@ 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).
--config-checks-between-markers

Activates: checker @@ -470,7 +457,7 @@ given the same before. Not compatible with

Activates: checker cost: Computes the time complexity of functions and methods. Can be used to detect changes in runtime complexity with -’infer reportdiff’. (Conversely: +‘infer reportdiff‘. (Conversely: --no-cost)

See also @@ -643,8 +630,11 @@ have run. In particular, note that disabling issue types does not make the corresponding checker not run.

Available issue types are as -follows:
-ARRAY_OUT_OF_BOUNDS_L1 (disabled by default),
+follows:

+ + +

ARRAY_OUT_OF_BOUNDS_L1 +(disabled by default),
ARRAY_OUT_OF_BOUNDS_L2 (disabled by default),
ARRAY_OUT_OF_BOUNDS_L3 (disabled by default),
ASSIGN_POINTER_WARNING (enabled by default),
@@ -673,16 +663,8 @@ CHECKERS_FRAGMENT_RETAINS_VIEW (enabled by default),
CHECKERS_IMMUTABLE_CAST (enabled by default),
CHECKERS_PRINTF_ARGS (enabled by default),
CLASS_CAST_EXCEPTION (disabled by default),
-COMPONENT_FACTORY_FUNCTION (enabled by default),
-COMPONENT_FILE_CYCLOMATIC_COMPLEXITY (enabled by default), -
-COMPONENT_FILE_LINE_COUNT (disabled by default),
-COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS (enabled by -default),
COMPONENT_WITH_MULTIPLE_FACTORY_METHODS (enabled by default),
-COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS (enabled by -default),
CONDITION_ALWAYS_FALSE (disabled by default),
CONDITION_ALWAYS_TRUE (disabled by default),
CONFIG_CHECKS_BETWEEN_MARKERS (disabled by default),
@@ -780,7 +762,6 @@ Missing_fld (enabled by default),
NULLPTR_DEREFERENCE (disabled by default),
NULL_DEREFERENCE (enabled by default),
PARAMETER_NOT_NULL_CHECKED (enabled by default),
-POINTER_SIZE_MISMATCH (enabled by default),
POINTER_TO_CONST_OBJC_CLASS (enabled by default),
PRECONDITION_NOT_FOUND (enabled by default),
PRECONDITION_NOT_MET (enabled by default),
@@ -788,14 +769,11 @@ PREMATURE_NIL_TERMINATION_ARGUMENT (enabled by default),
PURE_FUNCTION (enabled by default),
QUANDARY_TAINT_ERROR (enabled by default),
-REGISTERED_OBSERVER_BEING_DEALLOCATED (enabled by default), -
RESOURCE_LEAK (enabled by default),
RETAIN_CYCLE (enabled by default),
SHELL_INJECTION (enabled by default),
SHELL_INJECTION_RISK (enabled by default),
SKIP_FUNCTION (disabled by default),
-SKIP_POINTER_DEREFERENCE (disabled by default),
SQL_INJECTION (enabled by default),
SQL_INJECTION_RISK (enabled by default),
STACK_VARIABLE_ADDRESS_ESCAPE (enabled by default),
@@ -808,10 +786,6 @@ STRONG_SELF_NOT_CHECKED (enabled by default),
Symexec_memory_error (enabled by default),
THREAD_SAFETY_VIOLATION (enabled by default),
TOPL_ERROR (enabled by default),
-UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION (disabled by
-default),
-UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK (enabled by default), -
UNINITIALIZED_VALUE (enabled by default),
UNREACHABLE_CODE (enabled by default),
UNTRUSTED_BUFFER_ACCESS (disabled by default),
@@ -830,8 +804,10 @@ USE_AFTER_FREE (enabled by default),
USE_AFTER_LIFETIME (enabled by default),
VECTOR_INVALIDATION (enabled by default),
WEAK_SELF_IN_NO_ESCAPE_BLOCK (enabled by default),
-Wrong_argument_number (enabled by default).
-See also infer-report(1).
+Wrong_argument_number (enabled by default).

+ +

See also +infer-report(1).
--dump-duplicate-symbols

Activates: Dump all symbols @@ -854,7 +830,7 @@ or off.

--eradicate

Activates: checker eradicate: -The eradicate ’@Nullable’ checker for Java +The eradicate ‘@Nullable‘ checker for Java annotations. (Conversely: --no-eradicate)

See also @@ -1049,9 +1025,9 @@ report. (Conversely: --no-html)

Activates: checker immutable-cast: Detection of object cast from immutable types to mutable types. For instance, it will detect casts -from ’ImmutableList’ to ’List’, -’ImmutableMap’ to ’Map’, and -’ImmutableSet’ to ’Set’. +from ‘ImmutableList‘ to ‘List‘, +‘ImmutableMap‘ to ‘Map‘, and +‘ImmutableSet‘ to ‘Set‘. (Conversely: --no-immutable-cast)

See also @@ -1100,22 +1076,6 @@ inefficient-keyset-iterator and disable all other checkers

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-tests
file

Write a list of issues in a @@ -1261,7 +1221,7 @@ issue types that infer might report. (Conversely:

Activates: checker litho-required-props: Checks that all non-optional -’@Prop’s have been specified when constructing +‘@Prop‘s have been specified when constructing Litho components. (Conversely: --no-litho-required-props)

@@ -1351,8 +1311,10 @@ unknown_origin }

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

-

- cpp from C++ code
-See also infer-analyze(1).
+

- cpp from C++ code

+ +

See also +infer-analyze(1).
--perf-profiler-data-file
file

DEPRECATED: Specify the file @@ -1388,11 +1350,11 @@ infer-run(1).
--printf-args

Activates: checker printf-args: -Detect mismatches between the Java ’printf’ +Detect mismatches 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("Hello %d", +"world")‘ (Conversely: --no-printf-args)

See also @@ -1757,7 +1719,7 @@ omitted, prompt for input.

Deactivates: checker self-in-block: An Objective-C-specific analysis to detect -when a block captures ’self’. (Conversely: +when a block captures ‘self‘. (Conversely: --self-in-block)

See also @@ -2019,7 +1981,7 @@ Infer directory to generate its website at --Xbuck +string

Pass values as command-line -arguments to invocations of ’buck build’. +arguments to invocations of ‘buck build‘. Only valid for --buck-clang.

See also @@ -2027,7 +1989,7 @@ Only valid for --buck-clang.

--Xbuck-no-inline +string

Pass values as command-line -arguments to invocations of ’buck build’, +arguments to invocations of ‘buck build‘, don't inline any args starting with '@'. Only valid for --buck-clang.

@@ -2052,35 +2014,34 @@ developer directory, to use for Buck clang targets

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: +still just ‘infer -- <xcodebuild +command>‘. (Conversely: --no-xcpretty)

See also infer-capture(1).

- +

--

+

Stop argument +processing, use remaining arguments as a build command

-

--

-

Stop argument processing, use remaining arguments as a -build command

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

-

ENVIRONMENT -

+

ENVIRONMENT

Extra arguments @@ -2088,9 +2049,9 @@ 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’.

+calling ‘INFER_ARGS=--debug^--print-logs infer‘ +is equivalent to calling ‘infer --debug +--print-logs‘.

INFERCONFIG: @@ -2103,9 +2064,8 @@ 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 -

+

FILES

@@ -2137,9 +2097,8 @@ then its parent, etc., stopping at the first ["@gen","/* no infer */"]
}

-

SEE ALSO -

+

SEE ALSO

diff --git a/website/static/odoc/next/infer/ASTLanguage/ALUtils/index.html b/website/static/odoc/next/infer/ASTLanguage/ALUtils/index.html index 752e511ba..b1500b059 100644 --- a/website/static/odoc/next/infer/ASTLanguage/ALUtils/index.html +++ b/website/static/odoc/next/infer/ASTLanguage/ALUtils/index.html @@ -1,2 +1,2 @@ -ALUtils (infer.ASTLanguage.ALUtils)

Module ASTLanguage.ALUtils

val location_from_stmt : CLintersContext.context -> ATDGenerated.Clang_ast_t.stmt -> IBase.Location.t
val location_from_dinfo : CLintersContext.context -> ATDGenerated.Clang_ast_t.decl_info -> IBase.Location.t
val location_from_an : CLintersContext.context -> Ctl_parser_types.ast_node -> IBase.Location.t
val location_from_decl : CLintersContext.context -> ATDGenerated.Clang_ast_t.decl -> IBase.Location.t
val ivar_name : Ctl_parser_types.ast_node -> string
val cxx_ref_captured_in_block : Ctl_parser_types.ast_node -> string
val decl_ref_or_selector_name : Ctl_parser_types.ast_node -> string
val iphoneos_target_sdk_version : CLintersContext.context -> Ctl_parser_types.ast_node -> string
val available_ios_sdk : Ctl_parser_types.ast_node -> string
val class_available_ios_sdk : Ctl_parser_types.ast_node -> string
val receiver_method_call : Ctl_parser_types.ast_node -> string
val class_name : Ctl_parser_types.ast_node -> string
\ No newline at end of file +ALUtils (infer.ASTLanguage.ALUtils)

Module ASTLanguage.ALUtils

val location_from_dinfo : CLintersContext.context -> ATDGenerated.Clang_ast_t.decl_info -> IBase.Location.t
val location_from_an : CLintersContext.context -> Ctl_parser_types.ast_node -> IBase.Location.t
val location_from_decl : CLintersContext.context -> ATDGenerated.Clang_ast_t.decl -> IBase.Location.t
val ivar_name : Ctl_parser_types.ast_node -> string
val cxx_ref_captured_in_block : Ctl_parser_types.ast_node -> string
val decl_ref_or_selector_name : Ctl_parser_types.ast_node -> string
val receiver_method_call : Ctl_parser_types.ast_node -> string
val class_name : Ctl_parser_types.ast_node -> string
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage/ALVar/index.html b/website/static/odoc/next/infer/ASTLanguage/ALVar/index.html index c8d1dc7e7..405d6d180 100644 --- a/website/static/odoc/next/infer/ASTLanguage/ALVar/index.html +++ b/website/static/odoc/next/infer/ASTLanguage/ALVar/index.html @@ -1,2 +1,2 @@ -ALVar (infer.ASTLanguage.ALVar)

Module ASTLanguage.ALVar

type keyword =
| Doc_url
| Message
| Mode
| Name
| Report_when
| Severity
| Suggestion
type formula_id =
| Formula_id of string
val compare_formula_id : formula_id -> formula_id -> int
type cached_regexp = {
string : string;
regexp : Str.regexp IStdlib.IStd.Lazy.t;
}

a regexp and its cached compiled version

val compare_cached_regexp : cached_regexp -> cached_regexp -> int
type alexp =
| Const of string
| Regexp of cached_regexp
| Var of string
| FId of formula_id
val compare_alexp : alexp -> alexp -> int
type t = alexp
val equal : t -> t -> bool
val formula_id_to_string : formula_id -> string
val alexp_to_string : t -> string
val keyword_to_string : keyword -> string
val is_report_when_keyword : keyword -> bool
val is_message_keyword : keyword -> bool
val is_suggestion_keyword : keyword -> bool
val is_severity_keyword : keyword -> bool
val is_mode_keyword : keyword -> bool
val is_doc_url_keyword : keyword -> bool
val is_name_keyword : keyword -> bool
val str_match_forward : string -> Str.regexp -> bool
val compare_str_with_alexp : string -> alexp -> bool
module FormulaIdMap : IStdlib.IStd.Caml.Map.S with type FormulaIdMap.key = formula_id
module VarMap : IStdlib.IStd.Caml.Map.S with type VarMap.key = string
\ No newline at end of file +ALVar (infer.ASTLanguage.ALVar)

Module ASTLanguage.ALVar

type keyword =
| Doc_url
| Message
| Mode
| Name
| Report_when
| Severity
| Suggestion
type formula_id =
| Formula_id of string
val compare_formula_id : formula_id -> formula_id -> int
type cached_regexp = {
string : string;
regexp : Str.regexp IStdlib.IStd.Lazy.t;
}

a regexp and its cached compiled version

val compare_cached_regexp : cached_regexp -> cached_regexp -> int
type alexp =
| Const of string
| Regexp of cached_regexp
| Var of string
| FId of formula_id
val compare_alexp : alexp -> alexp -> int
type t = alexp
val equal : t -> t -> bool
val formula_id_to_string : formula_id -> string
val alexp_to_string : t -> string
val keyword_to_string : keyword -> string
val is_report_when_keyword : keyword -> bool
val is_message_keyword : keyword -> bool
val is_suggestion_keyword : keyword -> bool
val is_severity_keyword : keyword -> bool
val is_mode_keyword : keyword -> bool
val is_doc_url_keyword : keyword -> bool
val is_name_keyword : keyword -> bool
val compare_str_with_alexp : string -> alexp -> bool
module FormulaIdMap : IStdlib.IStd.Caml.Map.S with type FormulaIdMap.key = formula_id
module VarMap : IStdlib.IStd.Caml.Map.S with type VarMap.key = string
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html b/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html index 640f1d46e..83ac26f17 100644 --- a/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html +++ b/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html @@ -2,4 +2,4 @@ CPredicates (infer.ASTLanguage.CPredicates)

Module ASTLanguage.CPredicates

type t = ALVar.formula_id * ALVar.alexp list

(name, param1,...,paramK)

val compare : t -> t -> int
val captured_variables_cxx_ref : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.named_decl_info list

list of cxx references captured by an ObjC Block

val objc_block_is_capturing_var_of_type : Ctl_parser_types.ast_node -> ALVar.t -> bool

true if the ObjC Block captures a variable of a given type

val objc_block_is_capturing_values : Ctl_parser_types.ast_node -> bool

true if the ObjC Block captures any variables

val call_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

call_method an m an is true iff node an is a call to an ObjC method with name containing string m

val call_cxx_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

call_cxx_method an m an is true iff node an is a call to a C++ method with name containing string m

val call_class_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

call_class_method an mname is true iff node an is a call to an ObjC class method with name containing mname

val call_instance_method : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

call_instance_method an mname is true iff node an is a call to an ObjC instance method with name containing mname

val declaration_name : ATDGenerated.Clang_ast_t.decl -> string option

declaration_name d returns the name of declaration d

val is_enum_constant : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_enum_constant an name is true iff an is an EnumConstant with name containing name

val is_enum_constant_of_enum : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val is_global_var : Ctl_parser_types.ast_node -> bool

is_global_var an is true iff an is a global variable (but not a static local)

val is_static_local_var : Ctl_parser_types.ast_node -> bool

is_static_local_var an is true iff an is a static local variable

val is_static_var : Ctl_parser_types.ast_node -> bool

is_static_var an is true iff an is a static local variable

val is_extern_var : Ctl_parser_types.ast_node -> bool

is_extern_var an is true iff an is a extern variable

val is_const_expr_var : Ctl_parser_types.ast_node -> bool

is_const_expr_var an is true iff an is a const variable declaration

val is_init_integral_constant_expr : Ctl_parser_types.ast_node -> bool

is_init_integra_constant_expr an is true iff it is an initializer and an integral constant expression, or in C++11, whether the initializer is a constant expression.

val is_qual_type_const : Ctl_parser_types.ast_node -> bool

is_qual_type_const an is true iff an is a qual_type const expression

val has_init_list_const_expr : Ctl_parser_types.ast_node -> bool

has_init_list_const_expr is true iff for an InitListExpr where all subexpressions are const expression

val call_function : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

call_function an name is true iff an is a call to a function whose name contains name

val call_qualified_function : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

call_function an name is true iff an is a call to a function whose fully qualified name contains name

val is_strong_property : Ctl_parser_types.ast_node -> bool

is_strong_property an is true iff an denotes a objc property declaration with strong attribute

val is_strong_ivar : Ctl_parser_types.ast_node -> bool

is_strong_ivar an is true iff an denotes a objc ivar with strong attribute

val is_weak_property : Ctl_parser_types.ast_node -> bool

is_weak_property an is true iff an denotes a objc property declaration with weak attribute

val is_assign_property : Ctl_parser_types.ast_node -> bool

is_assign_property an is true iff an denotes a objc property declaration with assign attribute

val is_property_pointer_type : Ctl_parser_types.ast_node -> bool

is_property_pointer_type an is true iff an denotes a objc property declaration with type pointer

val context_in_synchronized_block : CLintersContext.context -> bool

true if the current node is in the context of a synchronized objc block

val is_ivar_atomic : Ctl_parser_types.ast_node -> bool

is_ivar_atomic an is true iff an denotes an atomi objc ivar

val is_method_property_accessor_of_ivar : Ctl_parser_types.ast_node -> CLintersContext.context -> bool
val is_in_block : CLintersContext.context -> bool

true if the current node is in the context of an objc block

val is_optional_objc_method : Ctl_parser_types.ast_node -> bool

true if the current node is an objc method declaration which is declared with @optional

val is_call_to_optional_objc_method : Ctl_parser_types.ast_node -> bool

true if the current node is a call to an objc method declaration which is declared with @optional

val is_in_cxx_constructor : CLintersContext.context -> ALVar.alexp -> bool

is_in_cxx_constructor context name is true if the curent node is within a CXX constructor whose name contains name

val is_in_cxx_destructor : CLintersContext.context -> ALVar.alexp -> bool

is_in_destructor_constructor context name is true if the curent node is within a CXX destructor whose name contains name

val is_in_cxx_method : CLintersContext.context -> ALVar.alexp -> bool

is_in_cxx_method context name is true if the curent node is within a CXX method whose name contains name

val is_in_function : CLintersContext.context -> ALVar.alexp -> bool

is_in_function context name is true if the curent node is within a function whose name contains name

val is_objc_extension : CLintersContext.context -> bool

Checks if the current file has an ObjC file extension (I.E. .m or .mm)

val is_objc_class_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCInterfaceDecl or ObjCImplementationDecl node whose name matches the provided REGEXP

Matches on MyClass in:

@interface MyClass
 @implementation MyClass
val is_objc_interface_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCInterfaceDecl node whose name matches the provided REGEXP

Matches on MyClass in @interface MyClass

val is_objc_implementation_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCImplementationDecl node whose name matches the provided REGEXP

Matches on MyClass in @implementation MyClass

val is_objc_category_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose name matches the provided REGEXP

Matches on MyCategory in:

@interface MyClass (MyCategory)
 @implementation MyClass (MyCategory)
val is_objc_category_interface_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose name matches the provided REGEXP

Matches on MyCategory in @interface MyClass (MyCategory)

val is_objc_category_implementation_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose name matches the provided REGEXP

Matches on MyCategory in @implementation MyClass (MyCategory)

val is_objc_category_on_class_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class name matches the provided REGEXP

Matches on MyClass in:

@interface MyClass (MyCategory)
-@implementation MyClass (MyCategory)
val is_objc_category_interface_on_class_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class name matches the provided REGEXP

Matches on MyClass in @interface MyClass (MyCategory)

val is_objc_category_implementation_on_class_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

Matches on MyClass in @implementation MyClass (MyCategory)

val is_objc_category_on_subclass_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_interface_on_subclass_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_implementation_on_subclass_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val adhere_to_protocol : Ctl_parser_types.ast_node -> bool

true if an objC class adhere to a protocol

val is_objc_protocol_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_objc_class_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_objc_instance_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_objc_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_constructor : CLintersContext.context -> bool

is_in_objc_constructor context is true if the curent node is within an ObjC constructor

val objc_class_has_only_one_constructor_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

true if an ObjC class has only one class method and is a constructor whose name matches the provided REGEXP

val is_objc_dealloc : CLintersContext.context -> bool

is_in_objc_dealloc context is true if the curent node is within an ObjC dealloc method

val is_in_objc_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node which inherits from a class whose name matches the provided REGEXP

val is_in_objc_interface_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl node whose name matches the provided REGEXP

val is_in_objc_implementation_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_category_interface_on_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class name matches the provided REGEXP

val is_in_objc_category_implementation_on_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_on_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_interface_on_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_implementation_on_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_on_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_interface_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose name matches the provided REGEXP

val is_in_objc_category_implementation_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_category_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_protocol_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_in_objc_class_method : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_in_objc_instance_method : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_in_objc_method : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_method_overriding : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is overriding a method in the superclass.

A method is said to override any method in the class base classes, its protocols, or its categories' protocols, that has the same selector and is of the same kind (class or instance). A method in an implementation is not considered as overriding the same method in the interface or its categories.

val is_objc_method_exposed : CLintersContext.context -> Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is exposed in an interface.

A method is said to be exposed if it's overriding a method or it's declared in a matching interface. For example, a method defined in a class implementation is exposed if it's declared in the class interface or interface extension, but not if it's declared in a category on the class. If the current node is a subnode of an ObjCInterfaceDecl, ObjCCategoryDecl, or ObjCProtocolDecl, this predicate returns false.

val captures_cxx_references : Ctl_parser_types.ast_node -> bool

captures_cxx_references an is true iff the node an captures some CXX references

val is_binop_with_kind : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_binop_with_kind an binop is true iff an denotes a binary operator of kind binop

val is_unop_with_kind : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_unop_of_kind an unop is true iff an denotes a unary operator of kind unop

val has_cast_kind : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

has_cast_kind an cast is true iff an denotes a cast operation of kind cast

val isa : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

node an is of class classname

val is_node : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_node an nodename is true iff an is a node of kind nodename

val declaration_has_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val declaration_ref_name : ?⁠kind:ATDGenerated.Clang_ast_t.decl_kind -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool

declaration_ref_has_name an n is true iff node an is a DeclRefExpr with name containing string n. The optional parameter kind allow to distinguish between special kind of decl_ref_exprs like is_enum_constant.

val is_class : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val pp_predicate : Stdlib.Format.formatter -> t -> unit
val decl_unavailable_in_supported_ios_sdk : CLintersContext.context -> Ctl_parser_types.ast_node -> bool
val class_unavailable_in_supported_ios_sdk : CLintersContext.context -> Ctl_parser_types.ast_node -> bool
val has_type : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val has_value : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val method_return_type : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val has_type_subprotocol_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val get_available_attr_ios_sdk : Ctl_parser_types.ast_node -> string option
val get_selector : Ctl_parser_types.ast_node -> string option
val within_responds_to_selector_block : CLintersContext.context -> Ctl_parser_types.ast_node -> bool
val objc_method_call_within_responds_to_selector_block : CLintersContext.context -> Ctl_parser_types.ast_node -> bool

true if a ObjC method call is withing the scope of a responds_to_selector check

val using_namespace : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val receiver_class_method_call : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val receiver_method_call : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val is_receiver_objc_class_type : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the Class type.

val is_receiver_objc_id_type : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the id type.

val is_receiver_subclass_of : CLintersContext.context -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which inherits from a class whose name matches the provided REGEXP.

val is_receiver_class_named : CLintersContext.context -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver whose class name matches the provided REGEXP.

val is_receiver_super : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to super.

Matches on super myMethod;

val is_receiver_self : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to self.

val is_at_selector_with_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

an is an expression @selector with whose name in the language of re

val has_visibility_attribute : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val cxx_construct_expr_has_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

true if the node is a CXXConstruct with name matching the provided REGEXP

val has_used_attribute : Ctl_parser_types.ast_node -> bool
val has_no_escape_attribute : Ctl_parser_types.ast_node -> bool
val iphoneos_target_sdk_version_by_path : CLintersContext.context -> string option
val iphoneos_target_sdk_version_greater_or_equal : CLintersContext.context -> string -> bool
val within_available_class_block : CLintersContext.context -> Ctl_parser_types.ast_node -> bool
val has_type_const_ptr_to_objc_class : Ctl_parser_types.ast_node -> bool
val is_decl : Ctl_parser_types.ast_node -> bool

is_decl an is true iff an is a node denoting a declaration

val get_ast_node_type_ptr : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.type_ptr option
val is_method_called_by_superclass : Ctl_parser_types.ast_node -> bool
val is_cxx_copy_constructor : Ctl_parser_types.ast_node -> bool

true if the current node is a C++ copy constructor

val has_cxx_fully_qualified_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching the given regexp

val has_cxx_fully_qualified_name_in_custom_symbols : Ctl_parser_types.ast_node -> string -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching a prefix on the given named custom symbol list

val is_in_source_file : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

True iff the source file path of the given node matches the given regexp or string.

val is_referencing_decl_from_source_file : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

True iff the given node is a DeclRefExpr referencing a decl whose source file path matches the given regexp or string.

val is_cxx_method_overriding : Ctl_parser_types.ast_node -> ALVar.alexp option -> bool

True iff the current node is a CXXMethodDecl node and is overriding a method whose fully-qualified name (with class and namespace) matches the given regexp (if given, otherwise any overriding method satisfies).

val is_init_expr_cxx11_constant : Ctl_parser_types.ast_node -> bool

true if the current node is classified as C++11 constant expression by the AST. It works only for VarDecl init expr

val cxx_construct_expr_has_no_parameters : Ctl_parser_types.ast_node -> bool

true if a construct expr has no subexpressions

val has_unavailable_attribute : Ctl_parser_types.ast_node -> bool

true is a declaration has an Unavailable attribute

\ No newline at end of file +@implementation MyClass (MyCategory)
val is_objc_category_interface_on_class_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class name matches the provided REGEXP

Matches on MyClass in @interface MyClass (MyCategory)

val is_objc_category_implementation_on_class_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

Matches on MyClass in @implementation MyClass (MyCategory)

val is_objc_category_on_subclass_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_interface_on_subclass_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_implementation_on_subclass_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val adhere_to_protocol : Ctl_parser_types.ast_node -> bool

true if an objC class adhere to a protocol

val is_objc_protocol_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_objc_class_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_objc_instance_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_objc_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_constructor : CLintersContext.context -> bool

is_in_objc_constructor context is true if the curent node is within an ObjC constructor

val objc_class_has_only_one_constructor_method_named : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

true if an ObjC class has only one class method and is a constructor whose name matches the provided REGEXP

val is_objc_dealloc : CLintersContext.context -> bool

is_in_objc_dealloc context is true if the curent node is within an ObjC dealloc method

val is_in_objc_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node which inherits from a class whose name matches the provided REGEXP

val is_in_objc_interface_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl node whose name matches the provided REGEXP

val is_in_objc_implementation_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_category_interface_on_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class name matches the provided REGEXP

val is_in_objc_category_implementation_on_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_on_class_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_interface_on_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_implementation_on_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_on_subclass_of : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_interface_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose name matches the provided REGEXP

val is_in_objc_category_implementation_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_category_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_protocol_named : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_in_objc_class_method : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_in_objc_instance_method : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_in_objc_method : CLintersContext.context -> ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_method_overriding : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is overriding a method in the superclass.

A method is said to override any method in the class base classes, its protocols, or its categories' protocols, that has the same selector and is of the same kind (class or instance). A method in an implementation is not considered as overriding the same method in the interface or its categories.

val is_objc_method_exposed : CLintersContext.context -> Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is exposed in an interface.

A method is said to be exposed if it's overriding a method or it's declared in a matching interface. For example, a method defined in a class implementation is exposed if it's declared in the class interface or interface extension, but not if it's declared in a category on the class. If the current node is a subnode of an ObjCInterfaceDecl, ObjCCategoryDecl, or ObjCProtocolDecl, this predicate returns false.

val captures_cxx_references : Ctl_parser_types.ast_node -> bool

captures_cxx_references an is true iff the node an captures some CXX references

val is_binop_with_kind : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_binop_with_kind an binop is true iff an denotes a binary operator of kind binop

val is_unop_with_kind : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_unop_of_kind an unop is true iff an denotes a unary operator of kind unop

val has_cast_kind : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

has_cast_kind an cast is true iff an denotes a cast operation of kind cast

val isa : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

node an is of class classname

val is_node : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

is_node an nodename is true iff an is a node of kind nodename

val declaration_has_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val declaration_ref_name : ?⁠kind:ATDGenerated.Clang_ast_t.decl_kind -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool

declaration_ref_has_name an n is true iff node an is a DeclRefExpr with name containing string n. The optional parameter kind allow to distinguish between special kind of decl_ref_exprs like is_enum_constant.

val is_class : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val pp_predicate : Stdlib.Format.formatter -> t -> unit
val has_type : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val has_value : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val method_return_type : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val has_type_subprotocol_of : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val get_selector : Ctl_parser_types.ast_node -> string option
val within_responds_to_selector_block : CLintersContext.context -> Ctl_parser_types.ast_node -> bool
val objc_method_call_within_responds_to_selector_block : CLintersContext.context -> Ctl_parser_types.ast_node -> bool

true if a ObjC method call is withing the scope of a responds_to_selector check

val using_namespace : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val receiver_class_method_call : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val receiver_method_call : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val is_receiver_objc_class_type : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the Class type.

val is_receiver_objc_id_type : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the id type.

val is_receiver_subclass_of : CLintersContext.context -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which inherits from a class whose name matches the provided REGEXP.

val is_receiver_class_named : CLintersContext.context -> Ctl_parser_types.ast_node -> ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver whose class name matches the provided REGEXP.

val is_receiver_super : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to super.

Matches on super myMethod;

val is_receiver_self : Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to self.

val is_at_selector_with_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

an is an expression @selector with whose name in the language of re

val has_visibility_attribute : Ctl_parser_types.ast_node -> ALVar.alexp -> bool
val cxx_construct_expr_has_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

true if the node is a CXXConstruct with name matching the provided REGEXP

val has_used_attribute : Ctl_parser_types.ast_node -> bool
val has_no_escape_attribute : Ctl_parser_types.ast_node -> bool
val within_available_class_block : CLintersContext.context -> Ctl_parser_types.ast_node -> bool
val has_type_const_ptr_to_objc_class : Ctl_parser_types.ast_node -> bool
val is_decl : Ctl_parser_types.ast_node -> bool

is_decl an is true iff an is a node denoting a declaration

val get_ast_node_type_ptr : Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.type_ptr option
val is_method_called_by_superclass : Ctl_parser_types.ast_node -> bool
val is_cxx_copy_constructor : Ctl_parser_types.ast_node -> bool

true if the current node is a C++ copy constructor

val has_cxx_fully_qualified_name : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching the given regexp

val has_cxx_fully_qualified_name_in_custom_symbols : Ctl_parser_types.ast_node -> string -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching a prefix on the given named custom symbol list

val is_in_source_file : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

True iff the source file path of the given node matches the given regexp or string.

val is_referencing_decl_from_source_file : Ctl_parser_types.ast_node -> ALVar.alexp -> bool

True iff the given node is a DeclRefExpr referencing a decl whose source file path matches the given regexp or string.

val is_cxx_method_overriding : Ctl_parser_types.ast_node -> ALVar.alexp option -> bool

True iff the current node is a CXXMethodDecl node and is overriding a method whose fully-qualified name (with class and namespace) matches the given regexp (if given, otherwise any overriding method satisfies).

val is_init_expr_cxx11_constant : Ctl_parser_types.ast_node -> bool

true if the current node is classified as C++11 constant expression by the AST. It works only for VarDecl init expr

val cxx_construct_expr_has_no_parameters : Ctl_parser_types.ast_node -> bool

true if a construct expr has no subexpressions

val has_unavailable_attribute : Ctl_parser_types.ast_node -> bool

true is a declaration has an Unavailable attribute

\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage/ComponentKit/index.html b/website/static/odoc/next/infer/ASTLanguage/ComponentKit/index.html index 2d8d130bf..49107d092 100644 --- a/website/static/odoc/next/infer/ASTLanguage/ComponentKit/index.html +++ b/website/static/odoc/next/infer/ASTLanguage/ComponentKit/index.html @@ -1,2 +1,2 @@ -ComponentKit (infer.ASTLanguage.ComponentKit)

Module ASTLanguage.ComponentKit

val contains_ck_impl : ATDGenerated.Clang_ast_t.decl list -> bool

Returns true if the passed-in list of decls contains an ObjCImplementationDecl of a descendant of CKComponent or CKComponentController.

Does not recurse into hierarchy.

val mutable_local_vars_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t option
val component_factory_function_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t option
val component_with_unconventional_superclass_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t option
val component_with_multiple_factory_methods_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t list
val component_initializer_with_side_effects_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t option
val component_file_line_count_info : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t list
val component_file_cyclomatic_complexity_info : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t option
\ No newline at end of file +ComponentKit (infer.ASTLanguage.ComponentKit)

Module ASTLanguage.ComponentKit

val contains_ck_impl : ATDGenerated.Clang_ast_t.decl list -> bool

Returns true if the passed-in list of decls contains an ObjCImplementationDecl of a descendant of CKComponent or CKComponentController.

Does not recurse into hierarchy.

val mutable_local_vars_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t option
val component_with_multiple_factory_methods_advice : CLintersContext.context -> Ctl_parser_types.ast_node -> CIssue.t list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage__ALUtils/index.html b/website/static/odoc/next/infer/ASTLanguage__ALUtils/index.html index cd864d883..e0359a5ce 100644 --- a/website/static/odoc/next/infer/ASTLanguage__ALUtils/index.html +++ b/website/static/odoc/next/infer/ASTLanguage__ALUtils/index.html @@ -1,2 +1,2 @@ -ASTLanguage__ALUtils (infer.ASTLanguage__ALUtils)

Module ASTLanguage__ALUtils

val location_from_stmt : ASTLanguage.CLintersContext.context -> ATDGenerated.Clang_ast_t.stmt -> IBase.Location.t
val location_from_dinfo : ASTLanguage.CLintersContext.context -> ATDGenerated.Clang_ast_t.decl_info -> IBase.Location.t
val location_from_an : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> IBase.Location.t
val location_from_decl : ASTLanguage.CLintersContext.context -> ATDGenerated.Clang_ast_t.decl -> IBase.Location.t
val ivar_name : ASTLanguage.Ctl_parser_types.ast_node -> string
val cxx_ref_captured_in_block : ASTLanguage.Ctl_parser_types.ast_node -> string
val decl_ref_or_selector_name : ASTLanguage.Ctl_parser_types.ast_node -> string
val iphoneos_target_sdk_version : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> string
val available_ios_sdk : ASTLanguage.Ctl_parser_types.ast_node -> string
val class_available_ios_sdk : ASTLanguage.Ctl_parser_types.ast_node -> string
val receiver_method_call : ASTLanguage.Ctl_parser_types.ast_node -> string
val class_name : ASTLanguage.Ctl_parser_types.ast_node -> string
\ No newline at end of file +ASTLanguage__ALUtils (infer.ASTLanguage__ALUtils)

Module ASTLanguage__ALUtils

val location_from_dinfo : ASTLanguage.CLintersContext.context -> ATDGenerated.Clang_ast_t.decl_info -> IBase.Location.t
val location_from_an : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> IBase.Location.t
val location_from_decl : ASTLanguage.CLintersContext.context -> ATDGenerated.Clang_ast_t.decl -> IBase.Location.t
val ivar_name : ASTLanguage.Ctl_parser_types.ast_node -> string
val cxx_ref_captured_in_block : ASTLanguage.Ctl_parser_types.ast_node -> string
val decl_ref_or_selector_name : ASTLanguage.Ctl_parser_types.ast_node -> string
val receiver_method_call : ASTLanguage.Ctl_parser_types.ast_node -> string
val class_name : ASTLanguage.Ctl_parser_types.ast_node -> string
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage__ALVar/index.html b/website/static/odoc/next/infer/ASTLanguage__ALVar/index.html index 7f0e68676..5565cdc52 100644 --- a/website/static/odoc/next/infer/ASTLanguage__ALVar/index.html +++ b/website/static/odoc/next/infer/ASTLanguage__ALVar/index.html @@ -1,2 +1,2 @@ -ASTLanguage__ALVar (infer.ASTLanguage__ALVar)

Module ASTLanguage__ALVar

type keyword =
| Doc_url
| Message
| Mode
| Name
| Report_when
| Severity
| Suggestion
type formula_id =
| Formula_id of string
val compare_formula_id : formula_id -> formula_id -> int
type cached_regexp = {
string : string;
regexp : Str.regexp IStdlib.IStd.Lazy.t;
}

a regexp and its cached compiled version

val compare_cached_regexp : cached_regexp -> cached_regexp -> int
type alexp =
| Const of string
| Regexp of cached_regexp
| Var of string
| FId of formula_id
val compare_alexp : alexp -> alexp -> int
type t = alexp
val equal : t -> t -> bool
val formula_id_to_string : formula_id -> string
val alexp_to_string : t -> string
val keyword_to_string : keyword -> string
val is_report_when_keyword : keyword -> bool
val is_message_keyword : keyword -> bool
val is_suggestion_keyword : keyword -> bool
val is_severity_keyword : keyword -> bool
val is_mode_keyword : keyword -> bool
val is_doc_url_keyword : keyword -> bool
val is_name_keyword : keyword -> bool
val str_match_forward : string -> Str.regexp -> bool
val compare_str_with_alexp : string -> alexp -> bool
module FormulaIdMap : IStdlib.IStd.Caml.Map.S with type FormulaIdMap.key = formula_id
module VarMap : IStdlib.IStd.Caml.Map.S with type VarMap.key = string
\ No newline at end of file +ASTLanguage__ALVar (infer.ASTLanguage__ALVar)

Module ASTLanguage__ALVar

type keyword =
| Doc_url
| Message
| Mode
| Name
| Report_when
| Severity
| Suggestion
type formula_id =
| Formula_id of string
val compare_formula_id : formula_id -> formula_id -> int
type cached_regexp = {
string : string;
regexp : Str.regexp IStdlib.IStd.Lazy.t;
}

a regexp and its cached compiled version

val compare_cached_regexp : cached_regexp -> cached_regexp -> int
type alexp =
| Const of string
| Regexp of cached_regexp
| Var of string
| FId of formula_id
val compare_alexp : alexp -> alexp -> int
type t = alexp
val equal : t -> t -> bool
val formula_id_to_string : formula_id -> string
val alexp_to_string : t -> string
val keyword_to_string : keyword -> string
val is_report_when_keyword : keyword -> bool
val is_message_keyword : keyword -> bool
val is_suggestion_keyword : keyword -> bool
val is_severity_keyword : keyword -> bool
val is_mode_keyword : keyword -> bool
val is_doc_url_keyword : keyword -> bool
val is_name_keyword : keyword -> bool
val compare_str_with_alexp : string -> alexp -> bool
module FormulaIdMap : IStdlib.IStd.Caml.Map.S with type FormulaIdMap.key = formula_id
module VarMap : IStdlib.IStd.Caml.Map.S with type VarMap.key = string
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html b/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html index 8da63d519..5036a34b2 100644 --- a/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html +++ b/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html @@ -2,4 +2,4 @@ ASTLanguage__CPredicates (infer.ASTLanguage__CPredicates)

Module ASTLanguage__CPredicates

type t = ASTLanguage.ALVar.formula_id * ASTLanguage.ALVar.alexp list

(name, param1,...,paramK)

val compare : t -> t -> int
val captured_variables_cxx_ref : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.named_decl_info list

list of cxx references captured by an ObjC Block

val objc_block_is_capturing_var_of_type : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.t -> bool

true if the ObjC Block captures a variable of a given type

val objc_block_is_capturing_values : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the ObjC Block captures any variables

val call_method : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

call_method an m an is true iff node an is a call to an ObjC method with name containing string m

val call_cxx_method : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

call_cxx_method an m an is true iff node an is a call to a C++ method with name containing string m

val call_class_method : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

call_class_method an mname is true iff node an is a call to an ObjC class method with name containing mname

val call_instance_method : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

call_instance_method an mname is true iff node an is a call to an ObjC instance method with name containing mname

val declaration_name : ATDGenerated.Clang_ast_t.decl -> string option

declaration_name d returns the name of declaration d

val is_enum_constant : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_enum_constant an name is true iff an is an EnumConstant with name containing name

val is_enum_constant_of_enum : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val is_global_var : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_global_var an is true iff an is a global variable (but not a static local)

val is_static_local_var : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_static_local_var an is true iff an is a static local variable

val is_static_var : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_static_var an is true iff an is a static local variable

val is_extern_var : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_extern_var an is true iff an is a extern variable

val is_const_expr_var : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_const_expr_var an is true iff an is a const variable declaration

val is_init_integral_constant_expr : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_init_integra_constant_expr an is true iff it is an initializer and an integral constant expression, or in C++11, whether the initializer is a constant expression.

val is_qual_type_const : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_qual_type_const an is true iff an is a qual_type const expression

val has_init_list_const_expr : ASTLanguage.Ctl_parser_types.ast_node -> bool

has_init_list_const_expr is true iff for an InitListExpr where all subexpressions are const expression

val call_function : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

call_function an name is true iff an is a call to a function whose name contains name

val call_qualified_function : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

call_function an name is true iff an is a call to a function whose fully qualified name contains name

val is_strong_property : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_strong_property an is true iff an denotes a objc property declaration with strong attribute

val is_strong_ivar : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_strong_ivar an is true iff an denotes a objc ivar with strong attribute

val is_weak_property : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_weak_property an is true iff an denotes a objc property declaration with weak attribute

val is_assign_property : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_assign_property an is true iff an denotes a objc property declaration with assign attribute

val is_property_pointer_type : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_property_pointer_type an is true iff an denotes a objc property declaration with type pointer

val context_in_synchronized_block : ASTLanguage.CLintersContext.context -> bool

true if the current node is in the context of a synchronized objc block

val is_ivar_atomic : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_ivar_atomic an is true iff an denotes an atomi objc ivar

val is_method_property_accessor_of_ivar : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CLintersContext.context -> bool
val is_in_block : ASTLanguage.CLintersContext.context -> bool

true if the current node is in the context of an objc block

val is_optional_objc_method : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the current node is an objc method declaration which is declared with @optional

val is_call_to_optional_objc_method : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the current node is a call to an objc method declaration which is declared with @optional

val is_in_cxx_constructor : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

is_in_cxx_constructor context name is true if the curent node is within a CXX constructor whose name contains name

val is_in_cxx_destructor : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

is_in_destructor_constructor context name is true if the curent node is within a CXX destructor whose name contains name

val is_in_cxx_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

is_in_cxx_method context name is true if the curent node is within a CXX method whose name contains name

val is_in_function : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

is_in_function context name is true if the curent node is within a function whose name contains name

val is_objc_extension : ASTLanguage.CLintersContext.context -> bool

Checks if the current file has an ObjC file extension (I.E. .m or .mm)

val is_objc_class_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCInterfaceDecl or ObjCImplementationDecl node whose name matches the provided REGEXP

Matches on MyClass in:

@interface MyClass
 @implementation MyClass
val is_objc_interface_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCInterfaceDecl node whose name matches the provided REGEXP

Matches on MyClass in @interface MyClass

val is_objc_implementation_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCImplementationDecl node whose name matches the provided REGEXP

Matches on MyClass in @implementation MyClass

val is_objc_category_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose name matches the provided REGEXP

Matches on MyCategory in:

@interface MyClass (MyCategory)
 @implementation MyClass (MyCategory)
val is_objc_category_interface_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose name matches the provided REGEXP

Matches on MyCategory in @interface MyClass (MyCategory)

val is_objc_category_implementation_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose name matches the provided REGEXP

Matches on MyCategory in @implementation MyClass (MyCategory)

val is_objc_category_on_class_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class name matches the provided REGEXP

Matches on MyClass in:

@interface MyClass (MyCategory)
-@implementation MyClass (MyCategory)
val is_objc_category_interface_on_class_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class name matches the provided REGEXP

Matches on MyClass in @interface MyClass (MyCategory)

val is_objc_category_implementation_on_class_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

Matches on MyClass in @implementation MyClass (MyCategory)

val is_objc_category_on_subclass_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_interface_on_subclass_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_implementation_on_subclass_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val adhere_to_protocol : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if an objC class adhere to a protocol

val is_objc_protocol_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_objc_class_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_objc_instance_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_objc_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_constructor : ASTLanguage.CLintersContext.context -> bool

is_in_objc_constructor context is true if the curent node is within an ObjC constructor

val objc_class_has_only_one_constructor_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

true if an ObjC class has only one class method and is a constructor whose name matches the provided REGEXP

val is_objc_dealloc : ASTLanguage.CLintersContext.context -> bool

is_in_objc_dealloc context is true if the curent node is within an ObjC dealloc method

val is_in_objc_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node which inherits from a class whose name matches the provided REGEXP

val is_in_objc_interface_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl node whose name matches the provided REGEXP

val is_in_objc_implementation_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_category_interface_on_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class name matches the provided REGEXP

val is_in_objc_category_implementation_on_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_on_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_interface_on_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_implementation_on_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_on_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_interface_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose name matches the provided REGEXP

val is_in_objc_category_implementation_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_category_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_protocol_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_in_objc_class_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_in_objc_instance_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_in_objc_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_method_overriding : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is overriding a method in the superclass.

A method is said to override any method in the class base classes, its protocols, or its categories' protocols, that has the same selector and is of the same kind (class or instance). A method in an implementation is not considered as overriding the same method in the interface or its categories.

val is_objc_method_exposed : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is exposed in an interface.

A method is said to be exposed if it's overriding a method or it's declared in a matching interface. For example, a method defined in a class implementation is exposed if it's declared in the class interface or interface extension, but not if it's declared in a category on the class. If the current node is a subnode of an ObjCInterfaceDecl, ObjCCategoryDecl, or ObjCProtocolDecl, this predicate returns false.

val captures_cxx_references : ASTLanguage.Ctl_parser_types.ast_node -> bool

captures_cxx_references an is true iff the node an captures some CXX references

val is_binop_with_kind : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_binop_with_kind an binop is true iff an denotes a binary operator of kind binop

val is_unop_with_kind : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_unop_of_kind an unop is true iff an denotes a unary operator of kind unop

val has_cast_kind : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

has_cast_kind an cast is true iff an denotes a cast operation of kind cast

val isa : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

node an is of class classname

val is_node : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_node an nodename is true iff an is a node of kind nodename

val declaration_has_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val declaration_ref_name : ?⁠kind:ATDGenerated.Clang_ast_t.decl_kind -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

declaration_ref_has_name an n is true iff node an is a DeclRefExpr with name containing string n. The optional parameter kind allow to distinguish between special kind of decl_ref_exprs like is_enum_constant.

val is_class : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val pp_predicate : Stdlib.Format.formatter -> t -> unit
val decl_unavailable_in_supported_ios_sdk : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool
val class_unavailable_in_supported_ios_sdk : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool
val has_type : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val has_value : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val method_return_type : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val has_type_subprotocol_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val get_available_attr_ios_sdk : ASTLanguage.Ctl_parser_types.ast_node -> string option
val get_selector : ASTLanguage.Ctl_parser_types.ast_node -> string option
val within_responds_to_selector_block : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool
val objc_method_call_within_responds_to_selector_block : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool

true if a ObjC method call is withing the scope of a responds_to_selector check

val using_namespace : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val receiver_class_method_call : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val receiver_method_call : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val is_receiver_objc_class_type : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the Class type.

val is_receiver_objc_id_type : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the id type.

val is_receiver_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which inherits from a class whose name matches the provided REGEXP.

val is_receiver_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver whose class name matches the provided REGEXP.

val is_receiver_super : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to super.

Matches on super myMethod;

val is_receiver_self : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to self.

val is_at_selector_with_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

an is an expression @selector with whose name in the language of re

val has_visibility_attribute : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val cxx_construct_expr_has_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

true if the node is a CXXConstruct with name matching the provided REGEXP

val has_used_attribute : ASTLanguage.Ctl_parser_types.ast_node -> bool
val has_no_escape_attribute : ASTLanguage.Ctl_parser_types.ast_node -> bool
val iphoneos_target_sdk_version_by_path : ASTLanguage.CLintersContext.context -> string option
val iphoneos_target_sdk_version_greater_or_equal : ASTLanguage.CLintersContext.context -> string -> bool
val within_available_class_block : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool
val has_type_const_ptr_to_objc_class : ASTLanguage.Ctl_parser_types.ast_node -> bool
val is_decl : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_decl an is true iff an is a node denoting a declaration

val get_ast_node_type_ptr : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.type_ptr option
val is_method_called_by_superclass : ASTLanguage.Ctl_parser_types.ast_node -> bool
val is_cxx_copy_constructor : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the current node is a C++ copy constructor

val has_cxx_fully_qualified_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching the given regexp

val has_cxx_fully_qualified_name_in_custom_symbols : ASTLanguage.Ctl_parser_types.ast_node -> string -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching a prefix on the given named custom symbol list

val is_in_source_file : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

True iff the source file path of the given node matches the given regexp or string.

val is_referencing_decl_from_source_file : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

True iff the given node is a DeclRefExpr referencing a decl whose source file path matches the given regexp or string.

val is_cxx_method_overriding : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp option -> bool

True iff the current node is a CXXMethodDecl node and is overriding a method whose fully-qualified name (with class and namespace) matches the given regexp (if given, otherwise any overriding method satisfies).

val is_init_expr_cxx11_constant : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the current node is classified as C++11 constant expression by the AST. It works only for VarDecl init expr

val cxx_construct_expr_has_no_parameters : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if a construct expr has no subexpressions

val has_unavailable_attribute : ASTLanguage.Ctl_parser_types.ast_node -> bool

true is a declaration has an Unavailable attribute

\ No newline at end of file +@implementation MyClass (MyCategory)
val is_objc_category_interface_on_class_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class name matches the provided REGEXP

Matches on MyClass in @interface MyClass (MyCategory)

val is_objc_category_implementation_on_class_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

Matches on MyClass in @implementation MyClass (MyCategory)

val is_objc_category_on_subclass_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_interface_on_subclass_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_objc_category_implementation_on_subclass_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val adhere_to_protocol : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if an objC class adhere to a protocol

val is_objc_protocol_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_objc_class_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_objc_instance_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_objc_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_constructor : ASTLanguage.CLintersContext.context -> bool

is_in_objc_constructor context is true if the curent node is within an ObjC constructor

val objc_class_has_only_one_constructor_method_named : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

true if an ObjC class has only one class method and is a constructor whose name matches the provided REGEXP

val is_objc_dealloc : ASTLanguage.CLintersContext.context -> bool

is_in_objc_dealloc context is true if the curent node is within an ObjC dealloc method

val is_in_objc_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node which inherits from a class whose name matches the provided REGEXP

val is_in_objc_interface_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl node whose name matches the provided REGEXP

val is_in_objc_implementation_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCInterfaceDecl or ObjCImplementationDecl node whose name matches the provided REGEXP

val is_in_objc_category_interface_on_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class name matches the provided REGEXP

val is_in_objc_category_implementation_on_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_on_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class name matches the provided REGEXP

val is_in_objc_category_interface_on_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_implementation_on_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_on_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose class inherits from a class whose name matches the provided REGEXP

val is_in_objc_category_interface_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl node whose name matches the provided REGEXP

val is_in_objc_category_implementation_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_category_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCCategoryDecl or ObjCCategoryImplDecl node whose name matches the provided REGEXP

val is_in_objc_protocol_named : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is a subnode of an ObjCProtocolDecl node whose name matches the provided REGEXP

val is_in_objc_class_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is a class method

val is_in_objc_instance_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP and is an instance method

val is_in_objc_method : ASTLanguage.CLintersContext.context -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node, or a parent node, is an ObjCMethodDecl node whose name matches the provided REGEXP

val is_objc_method_overriding : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is overriding a method in the superclass.

A method is said to override any method in the class base classes, its protocols, or its categories' protocols, that has the same selector and is of the same kind (class or instance). A method in an implementation is not considered as overriding the same method in the interface or its categories.

val is_objc_method_exposed : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMethodDecl node and is exposed in an interface.

A method is said to be exposed if it's overriding a method or it's declared in a matching interface. For example, a method defined in a class implementation is exposed if it's declared in the class interface or interface extension, but not if it's declared in a category on the class. If the current node is a subnode of an ObjCInterfaceDecl, ObjCCategoryDecl, or ObjCProtocolDecl, this predicate returns false.

val captures_cxx_references : ASTLanguage.Ctl_parser_types.ast_node -> bool

captures_cxx_references an is true iff the node an captures some CXX references

val is_binop_with_kind : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_binop_with_kind an binop is true iff an denotes a binary operator of kind binop

val is_unop_with_kind : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_unop_of_kind an unop is true iff an denotes a unary operator of kind unop

val has_cast_kind : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

has_cast_kind an cast is true iff an denotes a cast operation of kind cast

val isa : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

node an is of class classname

val is_node : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

is_node an nodename is true iff an is a node of kind nodename

val declaration_has_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val declaration_ref_name : ?⁠kind:ATDGenerated.Clang_ast_t.decl_kind -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

declaration_ref_has_name an n is true iff node an is a DeclRefExpr with name containing string n. The optional parameter kind allow to distinguish between special kind of decl_ref_exprs like is_enum_constant.

val is_class : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val pp_predicate : Stdlib.Format.formatter -> t -> unit
val has_type : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val has_value : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val method_return_type : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val has_type_subprotocol_of : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val get_selector : ASTLanguage.Ctl_parser_types.ast_node -> string option
val within_responds_to_selector_block : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool
val objc_method_call_within_responds_to_selector_block : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool

true if a ObjC method call is withing the scope of a responds_to_selector check

val using_namespace : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val receiver_class_method_call : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val receiver_method_call : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.decl option
val is_receiver_objc_class_type : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the Class type.

val is_receiver_objc_id_type : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver equivalent to the id type.

val is_receiver_subclass_of : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which inherits from a class whose name matches the provided REGEXP.

val is_receiver_class_named : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver whose class name matches the provided REGEXP.

val is_receiver_super : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to super.

Matches on super myMethod;

val is_receiver_self : ASTLanguage.Ctl_parser_types.ast_node -> bool

Checks if the current node is an ObjCMessageExpr node and has a receiver which is equal to self.

val is_at_selector_with_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

an is an expression @selector with whose name in the language of re

val has_visibility_attribute : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool
val cxx_construct_expr_has_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

true if the node is a CXXConstruct with name matching the provided REGEXP

val has_used_attribute : ASTLanguage.Ctl_parser_types.ast_node -> bool
val has_no_escape_attribute : ASTLanguage.Ctl_parser_types.ast_node -> bool
val within_available_class_block : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> bool
val has_type_const_ptr_to_objc_class : ASTLanguage.Ctl_parser_types.ast_node -> bool
val is_decl : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_decl an is true iff an is a node denoting a declaration

val get_ast_node_type_ptr : ASTLanguage.Ctl_parser_types.ast_node -> ATDGenerated.Clang_ast_t.type_ptr option
val is_method_called_by_superclass : ASTLanguage.Ctl_parser_types.ast_node -> bool
val is_cxx_copy_constructor : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the current node is a C++ copy constructor

val has_cxx_fully_qualified_name : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching the given regexp

val has_cxx_fully_qualified_name_in_custom_symbols : ASTLanguage.Ctl_parser_types.ast_node -> string -> bool

true iff node has C++ fully qualified name (w/class and namespace) matching a prefix on the given named custom symbol list

val is_in_source_file : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

True iff the source file path of the given node matches the given regexp or string.

val is_referencing_decl_from_source_file : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp -> bool

True iff the given node is a DeclRefExpr referencing a decl whose source file path matches the given regexp or string.

val is_cxx_method_overriding : ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.ALVar.alexp option -> bool

True iff the current node is a CXXMethodDecl node and is overriding a method whose fully-qualified name (with class and namespace) matches the given regexp (if given, otherwise any overriding method satisfies).

val is_init_expr_cxx11_constant : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if the current node is classified as C++11 constant expression by the AST. It works only for VarDecl init expr

val cxx_construct_expr_has_no_parameters : ASTLanguage.Ctl_parser_types.ast_node -> bool

true if a construct expr has no subexpressions

val has_unavailable_attribute : ASTLanguage.Ctl_parser_types.ast_node -> bool

true is a declaration has an Unavailable attribute

\ No newline at end of file diff --git a/website/static/odoc/next/infer/ASTLanguage__ComponentKit/index.html b/website/static/odoc/next/infer/ASTLanguage__ComponentKit/index.html index 0cb7d98f7..f42cda9c3 100644 --- a/website/static/odoc/next/infer/ASTLanguage__ComponentKit/index.html +++ b/website/static/odoc/next/infer/ASTLanguage__ComponentKit/index.html @@ -1,2 +1,2 @@ -ASTLanguage__ComponentKit (infer.ASTLanguage__ComponentKit)

Module ASTLanguage__ComponentKit

val contains_ck_impl : ATDGenerated.Clang_ast_t.decl list -> bool

Returns true if the passed-in list of decls contains an ObjCImplementationDecl of a descendant of CKComponent or CKComponentController.

Does not recurse into hierarchy.

val mutable_local_vars_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t option
val component_factory_function_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t option
val component_with_unconventional_superclass_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t option
val component_with_multiple_factory_methods_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t list
val component_initializer_with_side_effects_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t option
val component_file_line_count_info : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t list
val component_file_cyclomatic_complexity_info : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t option
\ No newline at end of file +ASTLanguage__ComponentKit (infer.ASTLanguage__ComponentKit)

Module ASTLanguage__ComponentKit

val contains_ck_impl : ATDGenerated.Clang_ast_t.decl list -> bool

Returns true if the passed-in list of decls contains an ObjCImplementationDecl of a descendant of CKComponent or CKComponentController.

Does not recurse into hierarchy.

val mutable_local_vars_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t option
val component_with_multiple_factory_methods_advice : ASTLanguage.CLintersContext.context -> ASTLanguage.Ctl_parser_types.ast_node -> ASTLanguage.CIssue.t list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html index 01a4ed428..1d36e4c02 100644 --- a/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html +++ b/website/static/odoc/next/infer/Absint/AbstractDomain/TopLiftedUtils/index.html @@ -1,2 +1,2 @@ -TopLiftedUtils (infer.Absint.AbstractDomain.TopLiftedUtils)

Module AbstractDomain.TopLiftedUtils

val leq : leq:(lhs:'a -> rhs:'a -> bool) -> lhs:'a Types.top_lifted -> rhs:'a Types.top_lifted -> bool
val pp : pp:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a Types.top_lifted -> unit
val pp_top : Stdlib.Format.formatter -> unit
\ No newline at end of file +TopLiftedUtils (infer.Absint.AbstractDomain.TopLiftedUtils)

Module AbstractDomain.TopLiftedUtils

val pp_top : Stdlib.Format.formatter -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint/Localise/index.html b/website/static/odoc/next/infer/Absint/Localise/index.html index 840efcada..2fc86b295 100644 --- a/website/static/odoc/next/infer/Absint/Localise/index.html +++ b/website/static/odoc/next/infer/Absint/Localise/index.html @@ -1,2 +1,2 @@ -Localise (infer.Absint.Localise)

Module Absint.Localise

module Tags : sig ... end
type error_desc = {
descriptions : string list;
tags : Tags.t;
dotty : string option;
}

description field of error messages

val compare_error_desc : error_desc -> error_desc -> int
val no_desc : error_desc

empty error description

val verbatim_desc : string -> error_desc

verbatim desc from a string, not to be used for user-visible descs

module BucketLevel : sig ... end
val error_desc_get_bucket : error_desc -> string option

get the bucket value of an error_desc, if any

val error_desc_set_bucket : error_desc -> string -> error_desc

set the bucket value of an error_desc

val error_desc_is_reportable_bucket : error_desc -> bool

check if the report is in a high confidence bucket

val error_desc_hash : error_desc -> int

hash function for error_desc

val error_desc_equal : error_desc -> error_desc -> bool

equality for error_desc

val pp_error_desc : Stdlib.Format.formatter -> error_desc -> unit

pretty print an error description

val error_desc_get_dotty : error_desc -> string option
type deref_str

dereference strings used to explain a dereference action in an error message

val deref_str_null : IR.Procname.t option -> deref_str

dereference strings for null dereference

val deref_str_nullable : IR.Procname.t option -> string -> deref_str

dereference strings for null dereference due to Nullable annotation

val deref_str_undef : (IR.Procname.t * IBase.Location.t) -> deref_str

dereference strings for an undefined value coming from the given procedure

val deref_str_dangling : IR.PredSymb.dangling_kind option -> deref_str

dereference strings for a dangling pointer dereference

val deref_str_array_bound : IR.IntLit.t option -> IR.IntLit.t option -> deref_str

dereference strings for an array out of bound access

val deref_str_nil_argument_in_variadic_method : IR.Procname.t -> int -> int -> deref_str

dereference strings for nonterminal nil arguments in c/objc variadic methods

val deref_str_pointer_size_mismatch : IR.Typ.t -> IR.Typ.t -> deref_str

dereference strings for a pointer size mismatch

type access =
| Last_assigned of int * bool

line, null_case_flag

| Last_accessed of int * bool

line, is_nullable flag

| Initialized_automatically
| Returned_from_call of int

type of access

val dereference_string : IR.Procname.t -> deref_str -> string -> access option -> IBase.Location.t -> error_desc
val parameter_field_not_null_checked_desc : error_desc -> IR.Exp.t -> error_desc
val is_parameter_not_null_checked_desc : error_desc -> bool
val is_field_not_null_checked_desc : error_desc -> bool
val desc_class_cast_exception : IR.Procname.t option -> string -> string -> string option -> IBase.Location.t -> error_desc
val desc_condition_always_true_false : IR.IntLit.t -> string option -> IBase.Location.t -> error_desc
val desc_divide_by_zero : string -> IBase.Location.t -> error_desc
val desc_empty_vector_access : IR.Procname.t option -> string -> IBase.Location.t -> error_desc
val is_empty_vector_access_desc : error_desc -> bool
val desc_frontend_warning : string -> string option -> IBase.Location.t -> error_desc
val desc_leak : IR.Exp.t option -> string option -> IR.PredSymb.resource option -> IR.PredSymb.res_action option -> IBase.Location.t -> string option -> error_desc
val desc_custom_error : IBase.Location.t -> error_desc

Create human-readable error description for assertion failures

type pnm_kind =
| Pnm_bounds
| Pnm_dangling

kind of precondition not met

val desc_precondition_not_met : pnm_kind option -> IR.Procname.t -> IBase.Location.t -> error_desc
val desc_retain_cycle : string -> IBase.Location.t -> string option -> error_desc
val desc_registered_observer_being_deallocated : IR.Pvar.t -> IBase.Location.t -> error_desc
val desc_skip_function : IR.Procname.t -> error_desc
val desc_inherently_dangerous_function : IR.Procname.t -> error_desc
val desc_unary_minus_applied_to_unsigned_expression : string option -> string -> IBase.Location.t -> error_desc
val desc_uninitialized_dangling_pointer_deref : deref_str -> string -> IBase.Location.t -> error_desc
val access_desc : access option -> string list
\ No newline at end of file +Localise (infer.Absint.Localise)

Module Absint.Localise

module Tags : sig ... end
type error_desc = {
descriptions : string list;
tags : Tags.t;
dotty : string option;
}

description field of error messages

val compare_error_desc : error_desc -> error_desc -> int
val no_desc : error_desc

empty error description

val verbatim_desc : string -> error_desc

verbatim desc from a string, not to be used for user-visible descs

module BucketLevel : sig ... end
val error_desc_get_bucket : error_desc -> string option

get the bucket value of an error_desc, if any

val error_desc_set_bucket : error_desc -> string -> error_desc

set the bucket value of an error_desc

val error_desc_is_reportable_bucket : error_desc -> bool

check if the report is in a high confidence bucket

val error_desc_hash : error_desc -> int

hash function for error_desc

val error_desc_equal : error_desc -> error_desc -> bool

equality for error_desc

val pp_error_desc : Stdlib.Format.formatter -> error_desc -> unit

pretty print an error description

val error_desc_get_dotty : error_desc -> string option
type deref_str

dereference strings used to explain a dereference action in an error message

val deref_str_null : IR.Procname.t option -> deref_str

dereference strings for null dereference

val deref_str_nullable : IR.Procname.t option -> string -> deref_str

dereference strings for null dereference due to Nullable annotation

val deref_str_undef : (IR.Procname.t * IBase.Location.t) -> deref_str

dereference strings for an undefined value coming from the given procedure

val deref_str_dangling : IR.PredSymb.dangling_kind option -> deref_str

dereference strings for a dangling pointer dereference

val deref_str_array_bound : IR.IntLit.t option -> IR.IntLit.t option -> deref_str

dereference strings for an array out of bound access

val deref_str_nil_argument_in_variadic_method : IR.Procname.t -> int -> int -> deref_str

dereference strings for nonterminal nil arguments in c/objc variadic methods

type access =
| Last_assigned of int * bool

line, null_case_flag

| Last_accessed of int * bool

line, is_nullable flag

| Initialized_automatically
| Returned_from_call of int

type of access

val dereference_string : IR.Procname.t -> deref_str -> string -> access option -> IBase.Location.t -> error_desc
val parameter_field_not_null_checked_desc : error_desc -> IR.Exp.t -> error_desc
val is_parameter_not_null_checked_desc : error_desc -> bool
val is_field_not_null_checked_desc : error_desc -> bool
val desc_class_cast_exception : IR.Procname.t option -> string -> string -> string option -> IBase.Location.t -> error_desc
val desc_condition_always_true_false : IR.IntLit.t -> string option -> IBase.Location.t -> error_desc
val desc_divide_by_zero : string -> IBase.Location.t -> error_desc
val desc_empty_vector_access : IR.Procname.t option -> string -> IBase.Location.t -> error_desc
val is_empty_vector_access_desc : error_desc -> bool
val desc_frontend_warning : string -> string option -> IBase.Location.t -> error_desc
val desc_leak : IR.Exp.t option -> string option -> IR.PredSymb.resource option -> IR.PredSymb.res_action option -> IBase.Location.t -> string option -> error_desc
val desc_custom_error : IBase.Location.t -> error_desc

Create human-readable error description for assertion failures

type pnm_kind =
| Pnm_bounds
| Pnm_dangling

kind of precondition not met

val desc_precondition_not_met : pnm_kind option -> IR.Procname.t -> IBase.Location.t -> error_desc
val desc_retain_cycle : string -> IBase.Location.t -> string option -> error_desc
val desc_registered_observer_being_deallocated : IR.Pvar.t -> IBase.Location.t -> error_desc
val desc_skip_function : IR.Procname.t -> error_desc
val desc_inherently_dangerous_function : IR.Procname.t -> error_desc
val desc_uninitialized_dangling_pointer_deref : deref_str -> string -> IBase.Location.t -> error_desc
val access_desc : access option -> string list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint__AbstractDomain/TopLiftedUtils/index.html b/website/static/odoc/next/infer/Absint__AbstractDomain/TopLiftedUtils/index.html index 077f67b81..fa545bd01 100644 --- a/website/static/odoc/next/infer/Absint__AbstractDomain/TopLiftedUtils/index.html +++ b/website/static/odoc/next/infer/Absint__AbstractDomain/TopLiftedUtils/index.html @@ -1,2 +1,2 @@ -TopLiftedUtils (infer.Absint__AbstractDomain.TopLiftedUtils)

Module Absint__AbstractDomain.TopLiftedUtils

val leq : leq:(lhs:'a -> rhs:'a -> bool) -> lhs:'a Types.top_lifted -> rhs:'a Types.top_lifted -> bool
val pp : pp:(Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a Types.top_lifted -> unit
val pp_top : Stdlib.Format.formatter -> unit
\ No newline at end of file +TopLiftedUtils (infer.Absint__AbstractDomain.TopLiftedUtils)

Module Absint__AbstractDomain.TopLiftedUtils

val pp_top : Stdlib.Format.formatter -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint__Localise/index.html b/website/static/odoc/next/infer/Absint__Localise/index.html index 97d7be230..7c7be0d53 100644 --- a/website/static/odoc/next/infer/Absint__Localise/index.html +++ b/website/static/odoc/next/infer/Absint__Localise/index.html @@ -1,2 +1,2 @@ -Absint__Localise (infer.Absint__Localise)

Module Absint__Localise

module Tags : sig ... end
type error_desc = {
descriptions : string list;
tags : Tags.t;
dotty : string option;
}

description field of error messages

val compare_error_desc : error_desc -> error_desc -> int
val no_desc : error_desc

empty error description

val verbatim_desc : string -> error_desc

verbatim desc from a string, not to be used for user-visible descs

module BucketLevel : sig ... end
val error_desc_get_bucket : error_desc -> string option

get the bucket value of an error_desc, if any

val error_desc_set_bucket : error_desc -> string -> error_desc

set the bucket value of an error_desc

val error_desc_is_reportable_bucket : error_desc -> bool

check if the report is in a high confidence bucket

val error_desc_hash : error_desc -> int

hash function for error_desc

val error_desc_equal : error_desc -> error_desc -> bool

equality for error_desc

val pp_error_desc : Stdlib.Format.formatter -> error_desc -> unit

pretty print an error description

val error_desc_get_dotty : error_desc -> string option
type deref_str

dereference strings used to explain a dereference action in an error message

val deref_str_null : IR.Procname.t option -> deref_str

dereference strings for null dereference

val deref_str_nullable : IR.Procname.t option -> string -> deref_str

dereference strings for null dereference due to Nullable annotation

val deref_str_undef : (IR.Procname.t * IBase.Location.t) -> deref_str

dereference strings for an undefined value coming from the given procedure

val deref_str_dangling : IR.PredSymb.dangling_kind option -> deref_str

dereference strings for a dangling pointer dereference

val deref_str_array_bound : IR.IntLit.t option -> IR.IntLit.t option -> deref_str

dereference strings for an array out of bound access

val deref_str_nil_argument_in_variadic_method : IR.Procname.t -> int -> int -> deref_str

dereference strings for nonterminal nil arguments in c/objc variadic methods

val deref_str_pointer_size_mismatch : IR.Typ.t -> IR.Typ.t -> deref_str

dereference strings for a pointer size mismatch

type access =
| Last_assigned of int * bool

line, null_case_flag

| Last_accessed of int * bool

line, is_nullable flag

| Initialized_automatically
| Returned_from_call of int

type of access

val dereference_string : IR.Procname.t -> deref_str -> string -> access option -> IBase.Location.t -> error_desc
val parameter_field_not_null_checked_desc : error_desc -> IR.Exp.t -> error_desc
val is_parameter_not_null_checked_desc : error_desc -> bool
val is_field_not_null_checked_desc : error_desc -> bool
val desc_class_cast_exception : IR.Procname.t option -> string -> string -> string option -> IBase.Location.t -> error_desc
val desc_condition_always_true_false : IR.IntLit.t -> string option -> IBase.Location.t -> error_desc
val desc_divide_by_zero : string -> IBase.Location.t -> error_desc
val desc_empty_vector_access : IR.Procname.t option -> string -> IBase.Location.t -> error_desc
val is_empty_vector_access_desc : error_desc -> bool
val desc_frontend_warning : string -> string option -> IBase.Location.t -> error_desc
val desc_leak : IR.Exp.t option -> string option -> IR.PredSymb.resource option -> IR.PredSymb.res_action option -> IBase.Location.t -> string option -> error_desc
val desc_custom_error : IBase.Location.t -> error_desc

Create human-readable error description for assertion failures

type pnm_kind =
| Pnm_bounds
| Pnm_dangling

kind of precondition not met

val desc_precondition_not_met : pnm_kind option -> IR.Procname.t -> IBase.Location.t -> error_desc
val desc_retain_cycle : string -> IBase.Location.t -> string option -> error_desc
val desc_registered_observer_being_deallocated : IR.Pvar.t -> IBase.Location.t -> error_desc
val desc_skip_function : IR.Procname.t -> error_desc
val desc_inherently_dangerous_function : IR.Procname.t -> error_desc
val desc_unary_minus_applied_to_unsigned_expression : string option -> string -> IBase.Location.t -> error_desc
val desc_uninitialized_dangling_pointer_deref : deref_str -> string -> IBase.Location.t -> error_desc
val access_desc : access option -> string list
\ No newline at end of file +Absint__Localise (infer.Absint__Localise)

Module Absint__Localise

module Tags : sig ... end
type error_desc = {
descriptions : string list;
tags : Tags.t;
dotty : string option;
}

description field of error messages

val compare_error_desc : error_desc -> error_desc -> int
val no_desc : error_desc

empty error description

val verbatim_desc : string -> error_desc

verbatim desc from a string, not to be used for user-visible descs

module BucketLevel : sig ... end
val error_desc_get_bucket : error_desc -> string option

get the bucket value of an error_desc, if any

val error_desc_set_bucket : error_desc -> string -> error_desc

set the bucket value of an error_desc

val error_desc_is_reportable_bucket : error_desc -> bool

check if the report is in a high confidence bucket

val error_desc_hash : error_desc -> int

hash function for error_desc

val error_desc_equal : error_desc -> error_desc -> bool

equality for error_desc

val pp_error_desc : Stdlib.Format.formatter -> error_desc -> unit

pretty print an error description

val error_desc_get_dotty : error_desc -> string option
type deref_str

dereference strings used to explain a dereference action in an error message

val deref_str_null : IR.Procname.t option -> deref_str

dereference strings for null dereference

val deref_str_nullable : IR.Procname.t option -> string -> deref_str

dereference strings for null dereference due to Nullable annotation

val deref_str_undef : (IR.Procname.t * IBase.Location.t) -> deref_str

dereference strings for an undefined value coming from the given procedure

val deref_str_dangling : IR.PredSymb.dangling_kind option -> deref_str

dereference strings for a dangling pointer dereference

val deref_str_array_bound : IR.IntLit.t option -> IR.IntLit.t option -> deref_str

dereference strings for an array out of bound access

val deref_str_nil_argument_in_variadic_method : IR.Procname.t -> int -> int -> deref_str

dereference strings for nonterminal nil arguments in c/objc variadic methods

type access =
| Last_assigned of int * bool

line, null_case_flag

| Last_accessed of int * bool

line, is_nullable flag

| Initialized_automatically
| Returned_from_call of int

type of access

val dereference_string : IR.Procname.t -> deref_str -> string -> access option -> IBase.Location.t -> error_desc
val parameter_field_not_null_checked_desc : error_desc -> IR.Exp.t -> error_desc
val is_parameter_not_null_checked_desc : error_desc -> bool
val is_field_not_null_checked_desc : error_desc -> bool
val desc_class_cast_exception : IR.Procname.t option -> string -> string -> string option -> IBase.Location.t -> error_desc
val desc_condition_always_true_false : IR.IntLit.t -> string option -> IBase.Location.t -> error_desc
val desc_divide_by_zero : string -> IBase.Location.t -> error_desc
val desc_empty_vector_access : IR.Procname.t option -> string -> IBase.Location.t -> error_desc
val is_empty_vector_access_desc : error_desc -> bool
val desc_frontend_warning : string -> string option -> IBase.Location.t -> error_desc
val desc_leak : IR.Exp.t option -> string option -> IR.PredSymb.resource option -> IR.PredSymb.res_action option -> IBase.Location.t -> string option -> error_desc
val desc_custom_error : IBase.Location.t -> error_desc

Create human-readable error description for assertion failures

type pnm_kind =
| Pnm_bounds
| Pnm_dangling

kind of precondition not met

val desc_precondition_not_met : pnm_kind option -> IR.Procname.t -> IBase.Location.t -> error_desc
val desc_retain_cycle : string -> IBase.Location.t -> string option -> error_desc
val desc_registered_observer_being_deallocated : IR.Pvar.t -> IBase.Location.t -> error_desc
val desc_skip_function : IR.Procname.t -> error_desc
val desc_inherently_dangerous_function : IR.Procname.t -> error_desc
val desc_uninitialized_dangling_pointer_deref : deref_str -> string -> IBase.Location.t -> error_desc
val access_desc : access option -> string list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html b/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html index d6152c86f..26f9f9d71 100644 --- a/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html +++ b/website/static/odoc/next/infer/BO/AbsLoc/PowLoc/index.html @@ -1,2 +1,2 @@ -PowLoc (infer.BO.AbsLoc.PowLoc)

Module AbsLoc.PowLoc

include Absint.AbstractDomain.S
include Absint.AbstractDomain.NoJoin
include IStdlib.PrettyPrintable.PrintableType
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val append_field : t -> fn:IR.Fieldname.t -> t
val append_star_field : t -> fn:IR.Fieldname.t -> t
val bot : t
val add : Loc.t -> t -> t
val exists : (Loc.t -> bool) -> t -> bool
val mem : Loc.t -> t -> bool
val is_singleton_or_more : t -> Loc.t IStdlib.IContainer.singleton_or_more
val min_elt_opt : t -> Loc.t option
val singleton : Loc.t -> t
val fold : (Loc.t -> 'a -> 'a) -> t -> 'a -> 'a
val cast : IR.Typ.typ -> t -> t
val of_c_strlen : t -> t

It appends the strlen field.

val unknown : t
val exists_str : f:(string -> bool) -> t -> bool

It checks if a variable or a field name in the location path satisfies f.

val is_bot : t -> bool
type eval_locpath = Symb.SymbolPath.partial -> t

Type for evaluating a path to an abstract location.

val subst : t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val subst_loc : Loc.t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val lift_cmp : Boolean.EqualOrder.t -> t -> t -> Boolean.t

It lifts a comparison of Loc.t to t. The comparison can be Boolean.EqualOrder.eq, Boolean.EqualOrder.ne, etc.

val to_set : t -> LocSet.t
\ No newline at end of file +PowLoc (infer.BO.AbsLoc.PowLoc)

Module AbsLoc.PowLoc

include Absint.AbstractDomain.S
include Absint.AbstractDomain.NoJoin
include IStdlib.PrettyPrintable.PrintableType
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val append_field : t -> fn:IR.Fieldname.t -> t
val append_star_field : t -> fn:IR.Fieldname.t -> t
val bot : t
val add : Loc.t -> t -> t
val exists : (Loc.t -> bool) -> t -> bool
val mem : Loc.t -> t -> bool
val is_singleton_or_more : t -> Loc.t IStdlib.IContainer.singleton_or_more
val min_elt_opt : t -> Loc.t option
val singleton : Loc.t -> t
val fold : (Loc.t -> 'a -> 'a) -> t -> 'a -> 'a
val cast : IR.Typ.typ -> t -> t
val of_c_strlen : t -> t

It appends the strlen field.

val unknown : t
val exists_str : f:(string -> bool) -> t -> bool

It checks if a variable or a field name in the location path satisfies f.

val is_bot : t -> bool
type eval_locpath = Symb.SymbolPath.partial -> t

Type for evaluating a path to an abstract location.

val subst : t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val subst_loc : Loc.t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val lift_cmp : Boolean.EqualOrder.t -> t -> t -> Boolean.t

It lifts a comparison of Loc.t to t. The comparison can be Boolean.EqualOrder.eq, Boolean.EqualOrder.ne, etc.

val to_set : t -> LocSet.t
val get_linked_list_next : lhs:t -> rhs:t -> Loc.t option

It checks whether rhs is of lhs.any_field, which is a heuristic for detecting a linked list, e.g. x = x.next(). It returns Some lhs if the condition is satisfied, None otherwise.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html index ae6f2e1f2..b3be625ff 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunDomain/Val/Itv/index.html @@ -1,2 +1,2 @@ -Itv (infer.BO.BufferOverrunDomain.Val.Itv)

Module Val.Itv

val nat : t

[0,+oo]

val pos : t

[1,+oo]

val top : t

[-oo,+oo]

val zero : t

[0,0]

val zero_255 : t

[0,255]

val m1_255 : t

[-1,255]

val unknown_bool : t

[0,1]

\ No newline at end of file +Itv (infer.BO.BufferOverrunDomain.Val.Itv)

Module Val.Itv

val nat : t

[0,+oo]

val pos : t

[1,+oo]

val top : t

[-oo,+oo]

val zero : t

[0,0]

val one : t

[1,1]

val zero_255 : t

[0,255]

val m1_255 : t

[-1,255]

val unknown_bool : t

[0,1]

\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO/BufferOverrunField/index.html b/website/static/odoc/next/infer/BO/BufferOverrunField/index.html index aa8e45060..6bab7291f 100644 --- a/website/static/odoc/next/infer/BO/BufferOverrunField/index.html +++ b/website/static/odoc/next/infer/BO/BufferOverrunField/index.html @@ -1,2 +1,2 @@ -BufferOverrunField (infer.BO.BufferOverrunField)

Module BO.BufferOverrunField

Inferbo-specific constant field names

val pp : pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> sep:string -> Stdlib.Format.formatter -> 'a -> IR.Fieldname.t -> unit

A parameterized pretty printer for field appended values

val get_type : IR.Fieldname.t -> IR.Typ.t option

Get type of field that is constructed in this module. This does not work in Java at the moment.

val c_strlen : unit -> IR.Fieldname.t

Field for C string's length

val cpp_vector_elem : vec_typ:IR.Typ.t -> elt_typ:IR.Typ.t -> IR.Fieldname.t

Field for C++ vector's elements

val java_collection_internal_array : IR.Fieldname.t

Field for Java collection's elements

val is_cpp_vector_elem : IR.Fieldname.t -> bool

Check if the field is for C++ vector's elements

val is_java_collection_internal_array : IR.Fieldname.t -> bool

Check if the field is for Java collection's elements

Field domain constructor

type field_typ = IR.Typ.t option
type 'prim t =
| Prim of 'prim
| Field of {
prefix : 'prim t;
fn : IR.Fieldname.t;
typ : field_typ;
}
| StarField of {
prefix : 'prim t;
last_field : IR.Fieldname.t;
}

Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

  • There is at most one StarField
  • StarField excluded, there are no duplicate fieldnames
  • StarField can only be followed by Deref elements
val compare : ('prim -> 'prim -> int) -> 'prim t -> 'prim t -> int
val mk_append_field : prim_append_field:(?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> (depth:int -> 'prim t -> 'prim t) -> int -> 'prim -> 'prim t) -> prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> ?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> 'prim t
val mk_append_star_field : prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> 'prim t -> IR.Fieldname.t -> 'prim t
\ No newline at end of file +BufferOverrunField (infer.BO.BufferOverrunField)

Module BO.BufferOverrunField

Inferbo-specific constant field names

val pp : pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> sep:string -> Stdlib.Format.formatter -> 'a -> IR.Fieldname.t -> unit

A parameterized pretty printer for field appended values

val get_type : IR.Fieldname.t -> IR.Typ.t option

Get type of field that is constructed in this module. This does not work in Java at the moment.

val c_strlen : unit -> IR.Fieldname.t

Field for C string's length

val cpp_vector_elem : vec_typ:IR.Typ.t -> elt_typ:IR.Typ.t -> IR.Fieldname.t

Field for C++ vector's elements

val java_collection_internal_array : IR.Fieldname.t

Field for Java collection's elements

val java_linked_list_index : IR.Fieldname.t

Virtual field for index of Java's linked list

val java_linked_list_length : IR.Fieldname.t

Virtual field for length of Java's linked list

val is_cpp_vector_elem : IR.Fieldname.t -> bool

Check if the field is for C++ vector's elements

val is_java_collection_internal_array : IR.Fieldname.t -> bool

Check if the field is for Java collection's elements

Field domain constructor

type field_typ = IR.Typ.t option
type 'prim t =
| Prim of 'prim
| Field of {
prefix : 'prim t;
fn : IR.Fieldname.t;
typ : field_typ;
}
| StarField of {
prefix : 'prim t;
last_field : IR.Fieldname.t;
}

Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

  • There is at most one StarField
  • StarField excluded, there are no duplicate fieldnames
  • StarField can only be followed by Deref elements
val compare : ('prim -> 'prim -> int) -> 'prim t -> 'prim t -> int
val mk_append_field : prim_append_field:(?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> (depth:int -> 'prim t -> 'prim t) -> int -> 'prim -> 'prim t) -> prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> ?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> 'prim t
val mk_append_star_field : prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> 'prim t -> IR.Fieldname.t -> 'prim t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO/Itv/index.html b/website/static/odoc/next/infer/BO/Itv/index.html index 673b06c91..16234057e 100644 --- a/website/static/odoc/next/infer/BO/Itv/index.html +++ b/website/static/odoc/next/infer/BO/Itv/index.html @@ -1,2 +1,2 @@ -Itv (infer.BO.Itv)

Module BO.Itv

module F = Stdlib.Format
module Bound = Bounds.Bound
module SymbolPath = Symb.SymbolPath
module SymbolSet = Symb.SymbolSet
module ItvRange : sig ... end
module ItvPure : sig ... end
include module type of sig ... end
type t = ItvPure.t Absint__AbstractDomain.Types.bottom_lifted
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool
val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t
val is_bottom : t -> bool
val map : f:(ItvPure.t -> ItvPure.t) -> t -> t
val widen_thresholds : thresholds:Z.t list -> prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val bot : t

_|_

val zero_255 : t

0, 255

val m1_255 : t

-1, 255

val nat : t

0, +oo

val pos : t

1, +oo

val top : t

-oo, +oo

val zero : t

0

val zero_one : t

0, 1

val unknown_bool : t

0, 1

val get_range_of_iterator : t -> t
val of_bool : Boolean.t -> t
val of_int : int -> t
val of_big_int : Z.t -> t
val of_int_lit : IR.IntLit.t -> t
val get_const : t -> Z.t option
val is_zero : t -> bool
val is_one : t -> bool
val is_mone : t -> bool
val get_bound : t -> Symb.BoundEnd.t -> Bound.t Absint.AbstractDomain.Types.bottom_lifted
val is_false : t -> bool
val decr : t -> t
val incr : t -> t
val set_lb : Bound.t -> t -> t
val set_lb_zero : t -> t
val neg : t -> t
val normalize : t -> t
val is_symbolic : t -> bool
val get_symbols : t -> SymbolSet.t
val eq : t -> t -> bool
val le : lhs:t -> rhs:t -> bool
val (lnot) : t -> Boolean.t
val range : IBase.Location.t -> t -> ItvRange.t
val div : t -> t -> t
val div_const : t -> Z.t -> t
val minus : t -> t -> t
val mult : t -> t -> t
val mult_const : t -> Z.t -> t
val plus : t -> t -> t
val shiftlt : t -> t -> t
val shiftrt : t -> t -> t
val band_sem : t -> t -> t
val eq_sem : t -> t -> Boolean.t
val ge_sem : t -> t -> Boolean.t
val gt_sem : t -> t -> Boolean.t
val land_sem : t -> t -> Boolean.t
val le_sem : t -> t -> Boolean.t
val lor_sem : t -> t -> Boolean.t
val lt_sem : t -> t -> Boolean.t
val min_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val max_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val mod_sem : t -> t -> t
val ne_sem : t -> t -> Boolean.t
val prune_eq_zero : t -> t
val prune_ne_zero : t -> t
val prune_ge_one : t -> t
val prune_binop : IR.Binop.t -> t -> t -> t
val prune_eq : t -> t -> t
val prune_ne : t -> t -> t
val prune_lt : t -> t -> t
val prune_le : t -> t -> t
val subst : t -> Bound.eval_sym -> t
val max_of_ikind : IR.Typ.IntegerWidths.t -> IR.Typ.ikind -> t
val of_normal_path : unsigned:bool -> ?⁠non_int:bool -> Symb.SymbolPath.partial -> t
val of_offset_path : is_void:bool -> Symb.SymbolPath.partial -> t
val of_length_path : is_void:bool -> Symb.SymbolPath.partial -> t
val of_modeled_path : is_expensive:bool -> Symb.SymbolPath.partial -> t
val is_offset_path_of : Symb.SymbolPath.partial -> t -> bool
val is_length_path_of : Symb.SymbolPath.partial -> t -> bool
val has_only_non_int_symbols : t -> bool
val is_incr_of : Symb.SymbolPath.partial -> t -> bool

Check if itv is path+1 when called is_incr_of path itv

\ No newline at end of file +Itv (infer.BO.Itv)

Module BO.Itv

module F = Stdlib.Format
module Bound = Bounds.Bound
module SymbolPath = Symb.SymbolPath
module SymbolSet = Symb.SymbolSet
module ItvRange : sig ... end
module ItvPure : sig ... end
include module type of sig ... end
type t = ItvPure.t Absint__AbstractDomain.Types.bottom_lifted
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool
val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t
val is_bottom : t -> bool
val map : f:(ItvPure.t -> ItvPure.t) -> t -> t
val widen_thresholds : thresholds:Z.t list -> prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val bot : t

_|_

val zero_255 : t

0, 255

val m1_255 : t

-1, 255

val nat : t

0, +oo

val pos : t

1, +oo

val top : t

-oo, +oo

val zero : t

0

val one : t

1

val zero_one : t

0, 1

val unknown_bool : t

0, 1

val get_range_of_iterator : t -> t
val of_bool : Boolean.t -> t
val of_int : int -> t
val of_big_int : Z.t -> t
val of_int_lit : IR.IntLit.t -> t
val get_const : t -> Z.t option
val is_zero : t -> bool
val is_one : t -> bool
val is_mone : t -> bool
val get_bound : t -> Symb.BoundEnd.t -> Bound.t Absint.AbstractDomain.Types.bottom_lifted
val is_false : t -> bool
val decr : t -> t
val incr : t -> t
val set_lb : Bound.t -> t -> t
val set_lb_zero : t -> t
val neg : t -> t
val normalize : t -> t
val is_symbolic : t -> bool
val get_symbols : t -> SymbolSet.t
val eq : t -> t -> bool
val le : lhs:t -> rhs:t -> bool
val (lnot) : t -> Boolean.t
val range : IBase.Location.t -> t -> ItvRange.t
val div : t -> t -> t
val div_const : t -> Z.t -> t
val minus : t -> t -> t
val mult : t -> t -> t
val mult_const : t -> Z.t -> t
val plus : t -> t -> t
val shiftlt : t -> t -> t
val shiftrt : t -> t -> t
val band_sem : t -> t -> t
val eq_sem : t -> t -> Boolean.t
val ge_sem : t -> t -> Boolean.t
val gt_sem : t -> t -> Boolean.t
val land_sem : t -> t -> Boolean.t
val le_sem : t -> t -> Boolean.t
val lor_sem : t -> t -> Boolean.t
val lt_sem : t -> t -> Boolean.t
val min_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val max_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val mod_sem : t -> t -> t
val ne_sem : t -> t -> Boolean.t
val prune_eq_zero : t -> t
val prune_ne_zero : t -> t
val prune_ge_one : t -> t
val prune_binop : IR.Binop.t -> t -> t -> t
val prune_eq : t -> t -> t
val prune_ne : t -> t -> t
val prune_lt : t -> t -> t
val prune_le : t -> t -> t
val subst : t -> Bound.eval_sym -> t
val max_of_ikind : IR.Typ.IntegerWidths.t -> IR.Typ.ikind -> t
val of_normal_path : unsigned:bool -> ?⁠non_int:bool -> Symb.SymbolPath.partial -> t
val of_offset_path : is_void:bool -> Symb.SymbolPath.partial -> t
val of_length_path : is_void:bool -> Symb.SymbolPath.partial -> t
val of_modeled_path : is_expensive:bool -> Symb.SymbolPath.partial -> t
val is_offset_path_of : Symb.SymbolPath.partial -> t -> bool
val is_length_path_of : Symb.SymbolPath.partial -> t -> bool
val has_only_non_int_symbols : t -> bool
val is_incr_of : Symb.SymbolPath.partial -> t -> bool

Check if itv is path+1 when called is_incr_of path itv

\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO__AbsLoc/PowLoc/index.html b/website/static/odoc/next/infer/BO__AbsLoc/PowLoc/index.html index a415450b0..ca07e0d85 100644 --- a/website/static/odoc/next/infer/BO__AbsLoc/PowLoc/index.html +++ b/website/static/odoc/next/infer/BO__AbsLoc/PowLoc/index.html @@ -1,2 +1,2 @@ -PowLoc (infer.BO__AbsLoc.PowLoc)

Module BO__AbsLoc.PowLoc

include Absint.AbstractDomain.S
include Absint.AbstractDomain.NoJoin
include IStdlib.PrettyPrintable.PrintableType
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val append_field : t -> fn:IR.Fieldname.t -> t
val append_star_field : t -> fn:IR.Fieldname.t -> t
val bot : t
val add : Loc.t -> t -> t
val exists : (Loc.t -> bool) -> t -> bool
val mem : Loc.t -> t -> bool
val is_singleton_or_more : t -> Loc.t IStdlib.IContainer.singleton_or_more
val min_elt_opt : t -> Loc.t option
val singleton : Loc.t -> t
val fold : (Loc.t -> 'a -> 'a) -> t -> 'a -> 'a
val cast : IR.Typ.typ -> t -> t
val of_c_strlen : t -> t

It appends the strlen field.

val unknown : t
val exists_str : f:(string -> bool) -> t -> bool

It checks if a variable or a field name in the location path satisfies f.

val is_bot : t -> bool
type eval_locpath = BO.Symb.SymbolPath.partial -> t

Type for evaluating a path to an abstract location.

val subst : t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val subst_loc : Loc.t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val lift_cmp : BO.Boolean.EqualOrder.t -> t -> t -> BO.Boolean.t

It lifts a comparison of Loc.t to t. The comparison can be Boolean.EqualOrder.eq, Boolean.EqualOrder.ne, etc.

val to_set : t -> LocSet.t
\ No newline at end of file +PowLoc (infer.BO__AbsLoc.PowLoc)

Module BO__AbsLoc.PowLoc

include Absint.AbstractDomain.S
include Absint.AbstractDomain.NoJoin
include IStdlib.PrettyPrintable.PrintableType
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool

the implication relation: lhs <= rhs means lhs |- rhs

val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val append_field : t -> fn:IR.Fieldname.t -> t
val append_star_field : t -> fn:IR.Fieldname.t -> t
val bot : t
val add : Loc.t -> t -> t
val exists : (Loc.t -> bool) -> t -> bool
val mem : Loc.t -> t -> bool
val is_singleton_or_more : t -> Loc.t IStdlib.IContainer.singleton_or_more
val min_elt_opt : t -> Loc.t option
val singleton : Loc.t -> t
val fold : (Loc.t -> 'a -> 'a) -> t -> 'a -> 'a
val cast : IR.Typ.typ -> t -> t
val of_c_strlen : t -> t

It appends the strlen field.

val unknown : t
val exists_str : f:(string -> bool) -> t -> bool

It checks if a variable or a field name in the location path satisfies f.

val is_bot : t -> bool
type eval_locpath = BO.Symb.SymbolPath.partial -> t

Type for evaluating a path to an abstract location.

val subst : t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val subst_loc : Loc.t -> eval_locpath -> t

It substitutes paths in the abstract location using eval_locpath.

val lift_cmp : BO.Boolean.EqualOrder.t -> t -> t -> BO.Boolean.t

It lifts a comparison of Loc.t to t. The comparison can be Boolean.EqualOrder.eq, Boolean.EqualOrder.ne, etc.

val to_set : t -> LocSet.t
val get_linked_list_next : lhs:t -> rhs:t -> Loc.t option

It checks whether rhs is of lhs.any_field, which is a heuristic for detecting a linked list, e.g. x = x.next(). It returns Some lhs if the condition is satisfied, None otherwise.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO__BufferOverrunDomain/Val/Itv/index.html b/website/static/odoc/next/infer/BO__BufferOverrunDomain/Val/Itv/index.html index 18747b0cc..7e57511fd 100644 --- a/website/static/odoc/next/infer/BO__BufferOverrunDomain/Val/Itv/index.html +++ b/website/static/odoc/next/infer/BO__BufferOverrunDomain/Val/Itv/index.html @@ -1,2 +1,2 @@ -Itv (infer.BO__BufferOverrunDomain.Val.Itv)

Module Val.Itv

val nat : t

[0,+oo]

val pos : t

[1,+oo]

val top : t

[-oo,+oo]

val zero : t

[0,0]

val zero_255 : t

[0,255]

val m1_255 : t

[-1,255]

val unknown_bool : t

[0,1]

\ No newline at end of file +Itv (infer.BO__BufferOverrunDomain.Val.Itv)

Module Val.Itv

val nat : t

[0,+oo]

val pos : t

[1,+oo]

val top : t

[-oo,+oo]

val zero : t

[0,0]

val one : t

[1,1]

val zero_255 : t

[0,255]

val m1_255 : t

[-1,255]

val unknown_bool : t

[0,1]

\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO__BufferOverrunField/index.html b/website/static/odoc/next/infer/BO__BufferOverrunField/index.html index fb2407e4a..b526eb43d 100644 --- a/website/static/odoc/next/infer/BO__BufferOverrunField/index.html +++ b/website/static/odoc/next/infer/BO__BufferOverrunField/index.html @@ -1,2 +1,2 @@ -BO__BufferOverrunField (infer.BO__BufferOverrunField)

Module BO__BufferOverrunField

Inferbo-specific constant field names

val pp : pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> sep:string -> Stdlib.Format.formatter -> 'a -> IR.Fieldname.t -> unit

A parameterized pretty printer for field appended values

val get_type : IR.Fieldname.t -> IR.Typ.t option

Get type of field that is constructed in this module. This does not work in Java at the moment.

val c_strlen : unit -> IR.Fieldname.t

Field for C string's length

val cpp_vector_elem : vec_typ:IR.Typ.t -> elt_typ:IR.Typ.t -> IR.Fieldname.t

Field for C++ vector's elements

val java_collection_internal_array : IR.Fieldname.t

Field for Java collection's elements

val is_cpp_vector_elem : IR.Fieldname.t -> bool

Check if the field is for C++ vector's elements

val is_java_collection_internal_array : IR.Fieldname.t -> bool

Check if the field is for Java collection's elements

Field domain constructor

type field_typ = IR.Typ.t option
type 'prim t =
| Prim of 'prim
| Field of {
prefix : 'prim t;
fn : IR.Fieldname.t;
typ : field_typ;
}
| StarField of {
prefix : 'prim t;
last_field : IR.Fieldname.t;
}

Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

  • There is at most one StarField
  • StarField excluded, there are no duplicate fieldnames
  • StarField can only be followed by Deref elements
val compare : ('prim -> 'prim -> int) -> 'prim t -> 'prim t -> int
val mk_append_field : prim_append_field:(?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> (depth:int -> 'prim t -> 'prim t) -> int -> 'prim -> 'prim t) -> prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> ?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> 'prim t
val mk_append_star_field : prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> 'prim t -> IR.Fieldname.t -> 'prim t
\ No newline at end of file +BO__BufferOverrunField (infer.BO__BufferOverrunField)

Module BO__BufferOverrunField

Inferbo-specific constant field names

val pp : pp_lhs:(Stdlib.Format.formatter -> 'a -> unit) -> sep:string -> Stdlib.Format.formatter -> 'a -> IR.Fieldname.t -> unit

A parameterized pretty printer for field appended values

val get_type : IR.Fieldname.t -> IR.Typ.t option

Get type of field that is constructed in this module. This does not work in Java at the moment.

val c_strlen : unit -> IR.Fieldname.t

Field for C string's length

val cpp_vector_elem : vec_typ:IR.Typ.t -> elt_typ:IR.Typ.t -> IR.Fieldname.t

Field for C++ vector's elements

val java_collection_internal_array : IR.Fieldname.t

Field for Java collection's elements

val java_linked_list_index : IR.Fieldname.t

Virtual field for index of Java's linked list

val java_linked_list_length : IR.Fieldname.t

Virtual field for length of Java's linked list

val is_cpp_vector_elem : IR.Fieldname.t -> bool

Check if the field is for C++ vector's elements

val is_java_collection_internal_array : IR.Fieldname.t -> bool

Check if the field is for Java collection's elements

Field domain constructor

type field_typ = IR.Typ.t option
type 'prim t =
| Prim of 'prim
| Field of {
prefix : 'prim t;
fn : IR.Fieldname.t;
typ : field_typ;
}
| StarField of {
prefix : 'prim t;
last_field : IR.Fieldname.t;
}

Represents a path starting with prefix and ending with the field last_field, the middle can be anything. Invariants:

  • There is at most one StarField
  • StarField excluded, there are no duplicate fieldnames
  • StarField can only be followed by Deref elements
val compare : ('prim -> 'prim -> int) -> 'prim t -> 'prim t -> int
val mk_append_field : prim_append_field:(?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> (depth:int -> 'prim t -> 'prim t) -> int -> 'prim -> 'prim t) -> prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> ?⁠typ:IR.Typ.t -> 'prim t -> IR.Fieldname.t -> 'prim t
val mk_append_star_field : prim_append_star_field:('prim t -> IR.Fieldname.t -> ('prim t -> 'prim t) -> 'prim -> 'prim t) -> 'prim t -> IR.Fieldname.t -> 'prim t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/BO__Itv/index.html b/website/static/odoc/next/infer/BO__Itv/index.html index 43a581877..4de1f11aa 100644 --- a/website/static/odoc/next/infer/BO__Itv/index.html +++ b/website/static/odoc/next/infer/BO__Itv/index.html @@ -1,2 +1,2 @@ -BO__Itv (infer.BO__Itv)

Module BO__Itv

module F = Stdlib.Format
module Bound = BO.Bounds.Bound
module SymbolPath = BO.Symb.SymbolPath
module SymbolSet = BO.Symb.SymbolSet
module ItvRange : sig ... end
module ItvPure : sig ... end
include module type of sig ... end
type t = ItvPure.t Absint__AbstractDomain.Types.bottom_lifted
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool
val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t
val is_bottom : t -> bool
val map : f:(ItvPure.t -> ItvPure.t) -> t -> t
val widen_thresholds : thresholds:Z.t list -> prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val bot : t

_|_

val zero_255 : t

0, 255

val m1_255 : t

-1, 255

val nat : t

0, +oo

val pos : t

1, +oo

val top : t

-oo, +oo

val zero : t

0

val zero_one : t

0, 1

val unknown_bool : t

0, 1

val get_range_of_iterator : t -> t
val of_bool : BO.Boolean.t -> t
val of_int : int -> t
val of_big_int : Z.t -> t
val of_int_lit : IR.IntLit.t -> t
val get_const : t -> Z.t option
val is_zero : t -> bool
val is_one : t -> bool
val is_mone : t -> bool
val get_bound : t -> BO.Symb.BoundEnd.t -> Bound.t Absint.AbstractDomain.Types.bottom_lifted
val is_false : t -> bool
val decr : t -> t
val incr : t -> t
val set_lb : Bound.t -> t -> t
val set_lb_zero : t -> t
val neg : t -> t
val normalize : t -> t
val is_symbolic : t -> bool
val get_symbols : t -> SymbolSet.t
val eq : t -> t -> bool
val le : lhs:t -> rhs:t -> bool
val (lnot) : t -> BO.Boolean.t
val range : IBase.Location.t -> t -> ItvRange.t
val div : t -> t -> t
val div_const : t -> Z.t -> t
val minus : t -> t -> t
val mult : t -> t -> t
val mult_const : t -> Z.t -> t
val plus : t -> t -> t
val shiftlt : t -> t -> t
val shiftrt : t -> t -> t
val band_sem : t -> t -> t
val eq_sem : t -> t -> BO.Boolean.t
val ge_sem : t -> t -> BO.Boolean.t
val gt_sem : t -> t -> BO.Boolean.t
val land_sem : t -> t -> BO.Boolean.t
val le_sem : t -> t -> BO.Boolean.t
val lor_sem : t -> t -> BO.Boolean.t
val lt_sem : t -> t -> BO.Boolean.t
val min_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val max_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val mod_sem : t -> t -> t
val ne_sem : t -> t -> BO.Boolean.t
val prune_eq_zero : t -> t
val prune_ne_zero : t -> t
val prune_ge_one : t -> t
val prune_binop : IR.Binop.t -> t -> t -> t
val prune_eq : t -> t -> t
val prune_ne : t -> t -> t
val prune_lt : t -> t -> t
val prune_le : t -> t -> t
val subst : t -> Bound.eval_sym -> t
val max_of_ikind : IR.Typ.IntegerWidths.t -> IR.Typ.ikind -> t
val of_normal_path : unsigned:bool -> ?⁠non_int:bool -> BO.Symb.SymbolPath.partial -> t
val of_offset_path : is_void:bool -> BO.Symb.SymbolPath.partial -> t
val of_length_path : is_void:bool -> BO.Symb.SymbolPath.partial -> t
val of_modeled_path : is_expensive:bool -> BO.Symb.SymbolPath.partial -> t
val is_offset_path_of : BO.Symb.SymbolPath.partial -> t -> bool
val is_length_path_of : BO.Symb.SymbolPath.partial -> t -> bool
val has_only_non_int_symbols : t -> bool
val is_incr_of : BO.Symb.SymbolPath.partial -> t -> bool

Check if itv is path+1 when called is_incr_of path itv

\ No newline at end of file +BO__Itv (infer.BO__Itv)

Module BO__Itv

module F = Stdlib.Format
module Bound = BO.Bounds.Bound
module SymbolPath = BO.Symb.SymbolPath
module SymbolSet = BO.Symb.SymbolSet
module ItvRange : sig ... end
module ItvPure : sig ... end
include module type of sig ... end
type t = ItvPure.t Absint__AbstractDomain.Types.bottom_lifted
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val leq : lhs:t -> rhs:t -> bool
val join : t -> t -> t
val widen : prev:t -> next:t -> num_iters:int -> t
val bottom : t
val is_bottom : t -> bool
val map : f:(ItvPure.t -> ItvPure.t) -> t -> t
val widen_thresholds : thresholds:Z.t list -> prev:t -> next:t -> num_iters:int -> t
val compare : t -> t -> int
val bot : t

_|_

val zero_255 : t

0, 255

val m1_255 : t

-1, 255

val nat : t

0, +oo

val pos : t

1, +oo

val top : t

-oo, +oo

val zero : t

0

val one : t

1

val zero_one : t

0, 1

val unknown_bool : t

0, 1

val get_range_of_iterator : t -> t
val of_bool : BO.Boolean.t -> t
val of_int : int -> t
val of_big_int : Z.t -> t
val of_int_lit : IR.IntLit.t -> t
val get_const : t -> Z.t option
val is_zero : t -> bool
val is_one : t -> bool
val is_mone : t -> bool
val get_bound : t -> BO.Symb.BoundEnd.t -> Bound.t Absint.AbstractDomain.Types.bottom_lifted
val is_false : t -> bool
val decr : t -> t
val incr : t -> t
val set_lb : Bound.t -> t -> t
val set_lb_zero : t -> t
val neg : t -> t
val normalize : t -> t
val is_symbolic : t -> bool
val get_symbols : t -> SymbolSet.t
val eq : t -> t -> bool
val le : lhs:t -> rhs:t -> bool
val (lnot) : t -> BO.Boolean.t
val range : IBase.Location.t -> t -> ItvRange.t
val div : t -> t -> t
val div_const : t -> Z.t -> t
val minus : t -> t -> t
val mult : t -> t -> t
val mult_const : t -> Z.t -> t
val plus : t -> t -> t
val shiftlt : t -> t -> t
val shiftrt : t -> t -> t
val band_sem : t -> t -> t
val eq_sem : t -> t -> BO.Boolean.t
val ge_sem : t -> t -> BO.Boolean.t
val gt_sem : t -> t -> BO.Boolean.t
val land_sem : t -> t -> BO.Boolean.t
val le_sem : t -> t -> BO.Boolean.t
val lor_sem : t -> t -> BO.Boolean.t
val lt_sem : t -> t -> BO.Boolean.t
val min_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val max_sem : ?⁠use_minmax_bound:bool -> t -> t -> t
val mod_sem : t -> t -> t
val ne_sem : t -> t -> BO.Boolean.t
val prune_eq_zero : t -> t
val prune_ne_zero : t -> t
val prune_ge_one : t -> t
val prune_binop : IR.Binop.t -> t -> t -> t
val prune_eq : t -> t -> t
val prune_ne : t -> t -> t
val prune_lt : t -> t -> t
val prune_le : t -> t -> t
val subst : t -> Bound.eval_sym -> t
val max_of_ikind : IR.Typ.IntegerWidths.t -> IR.Typ.ikind -> t
val of_normal_path : unsigned:bool -> ?⁠non_int:bool -> BO.Symb.SymbolPath.partial -> t
val of_offset_path : is_void:bool -> BO.Symb.SymbolPath.partial -> t
val of_length_path : is_void:bool -> BO.Symb.SymbolPath.partial -> t
val of_modeled_path : is_expensive:bool -> BO.Symb.SymbolPath.partial -> t
val is_offset_path_of : BO.Symb.SymbolPath.partial -> t -> bool
val is_length_path_of : BO.Symb.SymbolPath.partial -> t -> bool
val has_only_non_int_symbols : t -> bool
val is_incr_of : BO.Symb.SymbolPath.partial -> t -> bool

Check if itv is path+1 when called is_incr_of path itv

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html b/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html index ad8dd1c79..4b3724174 100644 --- a/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html +++ b/website/static/odoc/next/infer/Biabduction/BuiltinDefn/index.html @@ -1,2 +1,2 @@ -BuiltinDefn (infer.Biabduction.BuiltinDefn)

Module Biabduction.BuiltinDefn

Models for the builtin functions supported

include IR.BUILTINS.S with type t = Builtin.registered
type t = Builtin.registered
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __free_cf : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val init : unit -> unit

Clients of Builtin module should call this before Builtin module is used. WARNING: builtins are not guaranteed to be registered with the Builtin module until after init has been called.

\ No newline at end of file +BuiltinDefn (infer.Biabduction.BuiltinDefn)

Module Biabduction.BuiltinDefn

Models for the builtin functions supported

include IR.BUILTINS.S with type t = Builtin.registered
type t = Builtin.registered
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val init : unit -> unit

Clients of Builtin module should call this before Builtin module is used. WARNING: builtins are not guaranteed to be registered with the Builtin module until after init has been called.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction/Errdesc/index.html b/website/static/odoc/next/infer/Biabduction/Errdesc/index.html index b7dcfa6a6..ad5266f4b 100644 --- a/website/static/odoc/next/infer/Biabduction/Errdesc/index.html +++ b/website/static/odoc/next/infer/Biabduction/Errdesc/index.html @@ -1,2 +1,2 @@ -Errdesc (infer.Biabduction.Errdesc)

Module Biabduction.Errdesc

val vpath_find : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> IR.DecompiledExp.vpath * IR.Typ.t option

find the dexp, if any, where the given value is stored also return the type of the value if found

val hpred_is_open_resource : IR.Tenv.t -> 'a Prop.t -> Predicates.hpred -> IR.PredSymb.resource option

Check whether the hpred is a |-> representing a resource in the Racquire state

val find_ident_assignment : IR.Procdesc.Node.t -> IR.Ident.t -> (IR.Procdesc.Node.t * IR.Exp.t) option

Find a program variable assignment to id in the current node or predecessors.

val exp_rv_dexp : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option

describe rvalue e as a dexp

val explain_array_access : IR.Procname.t -> IR.Tenv.t -> Absint.Localise.deref_str -> 'a Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of the array access performed in the current instruction, if any.

val explain_class_cast_exception : IR.Tenv.t -> IR.Procname.t option -> IR.Exp.t -> IR.Exp.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a class cast exception

val explain_dereference : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> ?⁠is_nullable:bool -> ?⁠is_premature_nil:bool -> Absint.Localise.deref_str -> 'a Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of which expression is dereferenced in the current instruction, if any.

val explain_dereference_as_caller_expression : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> Absint.Localise.deref_str -> 'a Prop.t -> 'b Prop.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> IR.Pvar.t list -> Absint.Localise.error_desc

return a description explaining value exp in prop in terms of a source expression using the formal parameters of the call

val explain_divide_by_zero : IR.Tenv.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a division by zero

val explain_condition_always_true_false : IR.Tenv.t -> IR.IntLit.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a condition which is always true or false

val explain_unary_minus_applied_to_unsigned_expression : IR.Tenv.t -> IR.Exp.t -> IR.Typ.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain unary minus applied to unsigned expression

val explain_leak : IR.Tenv.t -> Predicates.hpred -> 'a Prop.t -> IR.PredSymb.t option -> string option -> bool * Absint.Localise.error_desc

Produce a description of a leak by looking at the current state. If the current instruction is a variable nullify, blame the variable. If it is an abstraction, blame any variable nullify at the current node. If there is an alloc attribute, print the function call and line number.

val warning_err : IBase.Location.t -> ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

warn at the given location

val find_outermost_dereference : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option
val access_opt : ?⁠is_nullable:bool -> Predicates.inst -> Absint.Localise.access option
\ No newline at end of file +Errdesc (infer.Biabduction.Errdesc)

Module Biabduction.Errdesc

val vpath_find : IR.Tenv.t -> 'a Prop.t -> IR.Exp.t -> IR.DecompiledExp.vpath * IR.Typ.t option

find the dexp, if any, where the given value is stored also return the type of the value if found

val hpred_is_open_resource : IR.Tenv.t -> 'a Prop.t -> Predicates.hpred -> IR.PredSymb.resource option

Check whether the hpred is a |-> representing a resource in the Racquire state

val find_ident_assignment : IR.Procdesc.Node.t -> IR.Ident.t -> (IR.Procdesc.Node.t * IR.Exp.t) option

Find a program variable assignment to id in the current node or predecessors.

val exp_rv_dexp : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option

describe rvalue e as a dexp

val explain_array_access : IR.Procname.t -> IR.Tenv.t -> Absint.Localise.deref_str -> 'a Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of the array access performed in the current instruction, if any.

val explain_class_cast_exception : IR.Tenv.t -> IR.Procname.t option -> IR.Exp.t -> IR.Exp.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a class cast exception

val explain_dereference : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> ?⁠is_nullable:bool -> ?⁠is_premature_nil:bool -> Absint.Localise.deref_str -> 'a Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of which expression is dereferenced in the current instruction, if any.

val explain_dereference_as_caller_expression : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> Absint.Localise.deref_str -> 'a Prop.t -> 'b Prop.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> IR.Pvar.t list -> Absint.Localise.error_desc

return a description explaining value exp in prop in terms of a source expression using the formal parameters of the call

val explain_divide_by_zero : IR.Tenv.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a division by zero

val explain_condition_always_true_false : IR.Tenv.t -> IR.IntLit.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a condition which is always true or false

val explain_leak : IR.Tenv.t -> Predicates.hpred -> 'a Prop.t -> IR.PredSymb.t option -> string option -> bool * Absint.Localise.error_desc

Produce a description of a leak by looking at the current state. If the current instruction is a variable nullify, blame the variable. If it is an abstraction, blame any variable nullify at the current node. If there is an alloc attribute, print the function call and line number.

val warning_err : IBase.Location.t -> ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

warn at the given location

val find_outermost_dereference : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option
val access_opt : ?⁠is_nullable:bool -> Predicates.inst -> Absint.Localise.access option
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction/Exceptions/index.html b/website/static/odoc/next/infer/Biabduction/Exceptions/index.html index c00c2b38f..6ad3ccdd3 100644 --- a/website/static/odoc/next/infer/Biabduction/Exceptions/index.html +++ b/website/static/odoc/next/infer/Biabduction/Exceptions/index.html @@ -1,2 +1,2 @@ -Exceptions (infer.Biabduction.Exceptions)

Module Biabduction.Exceptions

Biabduction uses exceptions to store issues in summaries

exception Abduction_case_not_implemented of IBase.Logging.ocaml_pos
exception Analysis_stops of Absint.Localise.error_desc * IBase.Logging.ocaml_pos option
exception Array_of_pointsto of IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l1 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l2 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l3 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Bad_footprint of IBase.Logging.ocaml_pos
exception Cannot_star of IBase.Logging.ocaml_pos
exception Class_cast_exception of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Custom_error of string * IBase.IssueType.severity * Absint.Localise.error_desc
exception Dangling_pointer_dereference of bool * Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Divide_by_zero of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Field_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Empty_vector_access of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Inherently_dangerous_function of Absint.Localise.error_desc
exception Internal_error of Absint.Localise.error_desc
exception Leak of bool * bool * Absint.Localise.error_desc * bool * IR.PredSymb.resource * IBase.Logging.ocaml_pos
exception Missing_fld of IR.Fieldname.t * IBase.Logging.ocaml_pos
exception Premature_nil_termination of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Null_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Parameter_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Pointer_size_mismatch of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_found of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_met of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Retain_cycle of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Registered_observer_being_deallocated of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Skip_function of Absint.Localise.error_desc
exception Skip_pointer_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Symexec_memory_error of IBase.Logging.ocaml_pos
exception Unary_minus_applied_to_unsigned_expression of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Wrong_argument_number of IBase.Logging.ocaml_pos
val handle_exception : exn -> bool

Return true if the exception is not serious and should be handled in timeout mode

val print_exception_html : string -> exn -> unit

print a description of the exception to the html output

val recognize_exception : exn -> Absint.IssueToReport.t
\ No newline at end of file +Exceptions (infer.Biabduction.Exceptions)

Module Biabduction.Exceptions

Biabduction uses exceptions to store issues in summaries

exception Abduction_case_not_implemented of IBase.Logging.ocaml_pos
exception Analysis_stops of Absint.Localise.error_desc * IBase.Logging.ocaml_pos option
exception Array_of_pointsto of IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l1 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l2 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l3 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Bad_footprint of IBase.Logging.ocaml_pos
exception Cannot_star of IBase.Logging.ocaml_pos
exception Class_cast_exception of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Custom_error of string * IBase.IssueType.severity * Absint.Localise.error_desc
exception Dangling_pointer_dereference of bool * Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Divide_by_zero of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Field_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Empty_vector_access of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Inherently_dangerous_function of Absint.Localise.error_desc
exception Internal_error of Absint.Localise.error_desc
exception Leak of bool * bool * Absint.Localise.error_desc * bool * IR.PredSymb.resource * IBase.Logging.ocaml_pos
exception Missing_fld of IR.Fieldname.t * IBase.Logging.ocaml_pos
exception Premature_nil_termination of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Null_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Parameter_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_found of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_met of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Retain_cycle of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Registered_observer_being_deallocated of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Skip_function of Absint.Localise.error_desc
exception Symexec_memory_error of IBase.Logging.ocaml_pos
exception Wrong_argument_number of IBase.Logging.ocaml_pos
val handle_exception : exn -> bool

Return true if the exception is not serious and should be handled in timeout mode

val print_exception_html : string -> exn -> unit

print a description of the exception to the html output

val recognize_exception : exn -> Absint.IssueToReport.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction/Objc_models/index.html b/website/static/odoc/next/infer/Biabduction/Objc_models/index.html deleted file mode 100644 index 5c0ea4332..000000000 --- a/website/static/odoc/next/infer/Biabduction/Objc_models/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Objc_models (infer.Biabduction.Objc_models)

Module Biabduction.Objc_models

val is_malloc_model : IR.Typ.t -> IR.Procname.t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction/Prover/index.html b/website/static/odoc/next/infer/Biabduction/Prover/index.html index 751d2548c..f766e7831 100644 --- a/website/static/odoc/next/infer/Biabduction/Prover/index.html +++ b/website/static/odoc/next/infer/Biabduction/Prover/index.html @@ -1,2 +1,2 @@ -Prover (infer.Biabduction.Prover)

Module Biabduction.Prover

val atom_negate : IR.Tenv.t -> Predicates.atom -> Predicates.atom

Negate an atom

Ordinary Theorem Proving

val check_zero : IR.Tenv.t -> IR.Exp.t -> bool

Check |- e=0. Result false means "don't know".

val check_equal : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check prop |- exp1=exp2. Result false means "don't know".

val check_disequal : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check whether prop |- exp1!=exp2. Result false means "don't know".

val type_size_comparable : IR.Typ.t -> IR.Typ.t -> bool

Return true if the two types have sizes which can be compared

val check_type_size_leq : IR.Typ.t -> IR.Typ.t -> bool

Check <= on the size of comparable types

val check_atom : IR.Tenv.t -> Prop.normal Prop.t -> Predicates.atom -> bool

Check whether prop |- a. Result false means "don't know".

val check_inconsistency_base : IR.Tenv.t -> Prop.normal Prop.t -> bool

Inconsistency checking ignoring footprint.

val check_inconsistency : IR.Tenv.t -> Prop.normal Prop.t -> bool

Inconsistency checking.

val check_allocatedness : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> bool

Check whether prop |- allocated(exp).

val is_root : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> Predicates.offset list option

is_root prop base_exp exp checks whether base_exp = exp.offlist for some list of offsets offlist. If so, it returns Some(offlist). Otherwise, it returns None. Assumes that base_exp points to the beginning of a structure, not the middle.

val expand_hpred_pointer : IR.Tenv.t -> bool -> Predicates.hpred -> bool * bool * Predicates.hpred

expand_hpred_pointer calc_index_frame hpred expands hpred if it is a |-> whose lhs is a Lfield or Lindex or ptr+off. Return (changed, calc_index_frame', hpred') where changed indicates whether the predicate has changed.

val get_bounds : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.IntLit.t option * IR.IntLit.t option

Get upper and lower bounds of an expression, if any

Abduction prover

val check_implication : BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Prop.normal Prop.t -> Prop.exposed Prop.t -> bool

check_implication p1 p2 returns true if p1|-p2

type check =
| Bounds_check
| Class_cast_check of IR.Exp.t * IR.Exp.t * IR.Exp.t
val d_typings : (IR.Exp.t * IR.Exp.t) list -> unit
type implication_result =
| ImplOK of check list * Predicates.subst * Predicates.subst * Predicates.hpred list * Predicates.atom list * Predicates.hpred list * Predicates.hpred list * Predicates.hpred list * (IR.Exp.t * IR.Exp.t) list * (IR.Exp.t * IR.Exp.t) list
| ImplFail of check list
val check_implication_for_footprint : BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Prop.normal Prop.t -> Prop.exposed Prop.t -> implication_result

check_implication_for_footprint p1 p2 returns Some(sub, frame, missing) if sub(p1 * missing) |- sub(p2 * frame) where sub is a substitution which instantiates the primed vars of p1 and p2, which are assumed to be disjoint.

Cover: minimum set of pi's whose disjunction is equivalent to true

val find_minimum_pure_cover : IR.Tenv.t -> (Predicates.atom list * 'a) list -> (Predicates.atom list * 'a) list option

Find minimum set of pi's in cases whose disjunction covers true

\ No newline at end of file +Prover (infer.Biabduction.Prover)

Module Biabduction.Prover

val atom_negate : IR.Tenv.t -> Predicates.atom -> Predicates.atom

Negate an atom

Ordinary Theorem Proving

val check_zero : IR.Tenv.t -> IR.Exp.t -> bool

Check |- e=0. Result false means "don't know".

val check_equal : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check prop |- exp1=exp2. Result false means "don't know".

val check_disequal : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check whether prop |- exp1!=exp2. Result false means "don't know".

val check_atom : IR.Tenv.t -> Prop.normal Prop.t -> Predicates.atom -> bool

Check whether prop |- a. Result false means "don't know".

val check_inconsistency_base : IR.Tenv.t -> Prop.normal Prop.t -> bool

Inconsistency checking ignoring footprint.

val check_inconsistency : IR.Tenv.t -> Prop.normal Prop.t -> bool

Inconsistency checking.

val check_allocatedness : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> bool

Check whether prop |- allocated(exp).

val is_root : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.Exp.t -> Predicates.offset list option

is_root prop base_exp exp checks whether base_exp = exp.offlist for some list of offsets offlist. If so, it returns Some(offlist). Otherwise, it returns None. Assumes that base_exp points to the beginning of a structure, not the middle.

val expand_hpred_pointer : IR.Tenv.t -> bool -> Predicates.hpred -> bool * bool * Predicates.hpred

expand_hpred_pointer calc_index_frame hpred expands hpred if it is a |-> whose lhs is a Lfield or Lindex or ptr+off. Return (changed, calc_index_frame', hpred') where changed indicates whether the predicate has changed.

val get_bounds : IR.Tenv.t -> Prop.normal Prop.t -> IR.Exp.t -> IR.IntLit.t option * IR.IntLit.t option

Get upper and lower bounds of an expression, if any

Abduction prover

val check_implication : BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Prop.normal Prop.t -> Prop.exposed Prop.t -> bool

check_implication p1 p2 returns true if p1|-p2

type check =
| Bounds_check
| Class_cast_check of IR.Exp.t * IR.Exp.t * IR.Exp.t
val d_typings : (IR.Exp.t * IR.Exp.t) list -> unit
type implication_result =
| ImplOK of check list * Predicates.subst * Predicates.subst * Predicates.hpred list * Predicates.atom list * Predicates.hpred list * Predicates.hpred list * Predicates.hpred list * (IR.Exp.t * IR.Exp.t) list * (IR.Exp.t * IR.Exp.t) list
| ImplFail of check list
val check_implication_for_footprint : BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Prop.normal Prop.t -> Prop.exposed Prop.t -> implication_result

check_implication_for_footprint p1 p2 returns Some(sub, frame, missing) if sub(p1 * missing) |- sub(p2 * frame) where sub is a substitution which instantiates the primed vars of p1 and p2, which are assumed to be disjoint.

Cover: minimum set of pi's whose disjunction is equivalent to true

val find_minimum_pure_cover : IR.Tenv.t -> (Predicates.atom list * 'a) list -> (Predicates.atom list * 'a) list option

Find minimum set of pi's in cases whose disjunction covers true

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction/index.html b/website/static/odoc/next/infer/Biabduction/index.html index 0933fe889..7e81fadb0 100644 --- a/website/static/odoc/next/infer/Biabduction/index.html +++ b/website/static/odoc/next/infer/Biabduction/index.html @@ -1,2 +1,2 @@ -Biabduction (infer.Biabduction)

Module Biabduction

module Abs : sig ... end
module Absarray : sig ... end
module Attribute : sig ... end
module BiabductionConfig : sig ... end
module BiabductionModels : sig ... end
module BiabductionReporting : sig ... end
module BiabductionSummary : sig ... end
module Buckets : sig ... end
module Builtin : sig ... end
module BuiltinDefn : sig ... end
module Dom : sig ... end
module DotBiabduction : sig ... end
module Errdesc : sig ... end
module Exceptions : sig ... end
module Interproc : sig ... end
module JoinState : sig ... end
module Match : sig ... end
module Objc_models : sig ... end
module Paths : sig ... end
module Predicates : sig ... end
module Prop : sig ... end
module PropUtil : sig ... end
module Propgraph : sig ... end
module Propset : sig ... end
module Prover : sig ... end
module Rearrange : sig ... end
module RetainCycles : sig ... end
module RetainCyclesType : sig ... end
module State : sig ... end
module SymExec : sig ... end
module SymExecBlocks : sig ... end
module Tabulation : sig ... end
module Timeout : sig ... end
\ No newline at end of file +Biabduction (infer.Biabduction)

Module Biabduction

module Abs : sig ... end
module Absarray : sig ... end
module Attribute : sig ... end
module BiabductionConfig : sig ... end
module BiabductionModels : sig ... end
module BiabductionReporting : sig ... end
module BiabductionSummary : sig ... end
module Buckets : sig ... end
module Builtin : sig ... end
module BuiltinDefn : sig ... end
module Dom : sig ... end
module DotBiabduction : sig ... end
module Errdesc : sig ... end
module Exceptions : sig ... end
module Interproc : sig ... end
module JoinState : sig ... end
module Match : sig ... end
module Paths : sig ... end
module Predicates : sig ... end
module Prop : sig ... end
module PropUtil : sig ... end
module Propgraph : sig ... end
module Propset : sig ... end
module Prover : sig ... end
module Rearrange : sig ... end
module RetainCycles : sig ... end
module RetainCyclesType : sig ... end
module State : sig ... end
module SymExec : sig ... end
module SymExecBlocks : sig ... end
module Tabulation : sig ... end
module Timeout : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction__BuiltinDefn/index.html b/website/static/odoc/next/infer/Biabduction__BuiltinDefn/index.html index 6f9db4812..f9d88afcc 100644 --- a/website/static/odoc/next/infer/Biabduction__BuiltinDefn/index.html +++ b/website/static/odoc/next/infer/Biabduction__BuiltinDefn/index.html @@ -1,2 +1,2 @@ -Biabduction__BuiltinDefn (infer.Biabduction__BuiltinDefn)

Module Biabduction__BuiltinDefn

Models for the builtin functions supported

include IR.BUILTINS.S with type t = Biabduction.Builtin.registered
type t = Biabduction.Builtin.registered
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __free_cf : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val init : unit -> unit

Clients of Builtin module should call this before Builtin module is used. WARNING: builtins are not guaranteed to be registered with the Builtin module until after init has been called.

\ No newline at end of file +Biabduction__BuiltinDefn (infer.Biabduction__BuiltinDefn)

Module Biabduction__BuiltinDefn

Models for the builtin functions supported

include IR.BUILTINS.S with type t = Biabduction.Builtin.registered
type t = Biabduction.Builtin.registered
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val init : unit -> unit

Clients of Builtin module should call this before Builtin module is used. WARNING: builtins are not guaranteed to be registered with the Builtin module until after init has been called.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction__Errdesc/index.html b/website/static/odoc/next/infer/Biabduction__Errdesc/index.html index 89c4d5563..5b4f4c022 100644 --- a/website/static/odoc/next/infer/Biabduction__Errdesc/index.html +++ b/website/static/odoc/next/infer/Biabduction__Errdesc/index.html @@ -1,2 +1,2 @@ -Biabduction__Errdesc (infer.Biabduction__Errdesc)

Module Biabduction__Errdesc

val vpath_find : IR.Tenv.t -> 'a Biabduction.Prop.t -> IR.Exp.t -> IR.DecompiledExp.vpath * IR.Typ.t option

find the dexp, if any, where the given value is stored also return the type of the value if found

val hpred_is_open_resource : IR.Tenv.t -> 'a Biabduction.Prop.t -> Biabduction.Predicates.hpred -> IR.PredSymb.resource option

Check whether the hpred is a |-> representing a resource in the Racquire state

val find_ident_assignment : IR.Procdesc.Node.t -> IR.Ident.t -> (IR.Procdesc.Node.t * IR.Exp.t) option

Find a program variable assignment to id in the current node or predecessors.

val exp_rv_dexp : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option

describe rvalue e as a dexp

val explain_array_access : IR.Procname.t -> IR.Tenv.t -> Absint.Localise.deref_str -> 'a Biabduction.Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of the array access performed in the current instruction, if any.

val explain_class_cast_exception : IR.Tenv.t -> IR.Procname.t option -> IR.Exp.t -> IR.Exp.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a class cast exception

val explain_dereference : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> ?⁠is_nullable:bool -> ?⁠is_premature_nil:bool -> Absint.Localise.deref_str -> 'a Biabduction.Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of which expression is dereferenced in the current instruction, if any.

val explain_dereference_as_caller_expression : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> Absint.Localise.deref_str -> 'a Biabduction.Prop.t -> 'b Biabduction.Prop.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> IR.Pvar.t list -> Absint.Localise.error_desc

return a description explaining value exp in prop in terms of a source expression using the formal parameters of the call

val explain_divide_by_zero : IR.Tenv.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a division by zero

val explain_condition_always_true_false : IR.Tenv.t -> IR.IntLit.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a condition which is always true or false

val explain_unary_minus_applied_to_unsigned_expression : IR.Tenv.t -> IR.Exp.t -> IR.Typ.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain unary minus applied to unsigned expression

val explain_leak : IR.Tenv.t -> Biabduction.Predicates.hpred -> 'a Biabduction.Prop.t -> IR.PredSymb.t option -> string option -> bool * Absint.Localise.error_desc

Produce a description of a leak by looking at the current state. If the current instruction is a variable nullify, blame the variable. If it is an abstraction, blame any variable nullify at the current node. If there is an alloc attribute, print the function call and line number.

val warning_err : IBase.Location.t -> ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

warn at the given location

val find_outermost_dereference : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option
val access_opt : ?⁠is_nullable:bool -> Biabduction.Predicates.inst -> Absint.Localise.access option
\ No newline at end of file +Biabduction__Errdesc (infer.Biabduction__Errdesc)

Module Biabduction__Errdesc

val vpath_find : IR.Tenv.t -> 'a Biabduction.Prop.t -> IR.Exp.t -> IR.DecompiledExp.vpath * IR.Typ.t option

find the dexp, if any, where the given value is stored also return the type of the value if found

val hpred_is_open_resource : IR.Tenv.t -> 'a Biabduction.Prop.t -> Biabduction.Predicates.hpred -> IR.PredSymb.resource option

Check whether the hpred is a |-> representing a resource in the Racquire state

val find_ident_assignment : IR.Procdesc.Node.t -> IR.Ident.t -> (IR.Procdesc.Node.t * IR.Exp.t) option

Find a program variable assignment to id in the current node or predecessors.

val exp_rv_dexp : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option

describe rvalue e as a dexp

val explain_array_access : IR.Procname.t -> IR.Tenv.t -> Absint.Localise.deref_str -> 'a Biabduction.Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of the array access performed in the current instruction, if any.

val explain_class_cast_exception : IR.Tenv.t -> IR.Procname.t option -> IR.Exp.t -> IR.Exp.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a class cast exception

val explain_dereference : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> ?⁠is_nullable:bool -> ?⁠is_premature_nil:bool -> Absint.Localise.deref_str -> 'a Biabduction.Prop.t -> IBase.Location.t -> Absint.Localise.error_desc

Produce a description of which expression is dereferenced in the current instruction, if any.

val explain_dereference_as_caller_expression : IR.Procname.t -> IR.Tenv.t -> ?⁠use_buckets:bool -> Absint.Localise.deref_str -> 'a Biabduction.Prop.t -> 'b Biabduction.Prop.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> IR.Pvar.t list -> Absint.Localise.error_desc

return a description explaining value exp in prop in terms of a source expression using the formal parameters of the call

val explain_divide_by_zero : IR.Tenv.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a division by zero

val explain_condition_always_true_false : IR.Tenv.t -> IR.IntLit.t -> IR.Exp.t -> IR.Procdesc.Node.t -> IBase.Location.t -> Absint.Localise.error_desc

explain a condition which is always true or false

val explain_leak : IR.Tenv.t -> Biabduction.Predicates.hpred -> 'a Biabduction.Prop.t -> IR.PredSymb.t option -> string option -> bool * Absint.Localise.error_desc

Produce a description of a leak by looking at the current state. If the current instruction is a variable nullify, blame the variable. If it is an abstraction, blame any variable nullify at the current node. If there is an alloc attribute, print the function call and line number.

val warning_err : IBase.Location.t -> ('a, Stdlib.Format.formatter, unit) IStdlib.IStd.format -> 'a

warn at the given location

val find_outermost_dereference : IR.Tenv.t -> IR.Procdesc.Node.t -> IR.Exp.t -> IR.DecompiledExp.t option
val access_opt : ?⁠is_nullable:bool -> Biabduction.Predicates.inst -> Absint.Localise.access option
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction__Exceptions/index.html b/website/static/odoc/next/infer/Biabduction__Exceptions/index.html index f78751365..ba7d20e0b 100644 --- a/website/static/odoc/next/infer/Biabduction__Exceptions/index.html +++ b/website/static/odoc/next/infer/Biabduction__Exceptions/index.html @@ -1,2 +1,2 @@ -Biabduction__Exceptions (infer.Biabduction__Exceptions)

Module Biabduction__Exceptions

Biabduction uses exceptions to store issues in summaries

exception Abduction_case_not_implemented of IBase.Logging.ocaml_pos
exception Analysis_stops of Absint.Localise.error_desc * IBase.Logging.ocaml_pos option
exception Array_of_pointsto of IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l1 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l2 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l3 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Bad_footprint of IBase.Logging.ocaml_pos
exception Cannot_star of IBase.Logging.ocaml_pos
exception Class_cast_exception of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Custom_error of string * IBase.IssueType.severity * Absint.Localise.error_desc
exception Dangling_pointer_dereference of bool * Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Divide_by_zero of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Field_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Empty_vector_access of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Inherently_dangerous_function of Absint.Localise.error_desc
exception Internal_error of Absint.Localise.error_desc
exception Leak of bool * bool * Absint.Localise.error_desc * bool * IR.PredSymb.resource * IBase.Logging.ocaml_pos
exception Missing_fld of IR.Fieldname.t * IBase.Logging.ocaml_pos
exception Premature_nil_termination of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Null_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Parameter_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Pointer_size_mismatch of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_found of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_met of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Retain_cycle of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Registered_observer_being_deallocated of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Skip_function of Absint.Localise.error_desc
exception Skip_pointer_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Symexec_memory_error of IBase.Logging.ocaml_pos
exception Unary_minus_applied_to_unsigned_expression of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Wrong_argument_number of IBase.Logging.ocaml_pos
val handle_exception : exn -> bool

Return true if the exception is not serious and should be handled in timeout mode

val print_exception_html : string -> exn -> unit

print a description of the exception to the html output

val recognize_exception : exn -> Absint.IssueToReport.t
\ No newline at end of file +Biabduction__Exceptions (infer.Biabduction__Exceptions)

Module Biabduction__Exceptions

Biabduction uses exceptions to store issues in summaries

exception Abduction_case_not_implemented of IBase.Logging.ocaml_pos
exception Analysis_stops of Absint.Localise.error_desc * IBase.Logging.ocaml_pos option
exception Array_of_pointsto of IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l1 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l2 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Array_out_of_bounds_l3 of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Bad_footprint of IBase.Logging.ocaml_pos
exception Cannot_star of IBase.Logging.ocaml_pos
exception Class_cast_exception of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Custom_error of string * IBase.IssueType.severity * Absint.Localise.error_desc
exception Dangling_pointer_dereference of bool * Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Divide_by_zero of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Field_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Empty_vector_access of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Inherently_dangerous_function of Absint.Localise.error_desc
exception Internal_error of Absint.Localise.error_desc
exception Leak of bool * bool * Absint.Localise.error_desc * bool * IR.PredSymb.resource * IBase.Logging.ocaml_pos
exception Missing_fld of IR.Fieldname.t * IBase.Logging.ocaml_pos
exception Premature_nil_termination of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Null_dereference of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Parameter_not_null_checked of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_found of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Precondition_not_met of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Retain_cycle of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Registered_observer_being_deallocated of Absint.Localise.error_desc * IBase.Logging.ocaml_pos
exception Skip_function of Absint.Localise.error_desc
exception Symexec_memory_error of IBase.Logging.ocaml_pos
exception Wrong_argument_number of IBase.Logging.ocaml_pos
val handle_exception : exn -> bool

Return true if the exception is not serious and should be handled in timeout mode

val print_exception_html : string -> exn -> unit

print a description of the exception to the html output

val recognize_exception : exn -> Absint.IssueToReport.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction__Objc_models/index.html b/website/static/odoc/next/infer/Biabduction__Objc_models/index.html deleted file mode 100644 index a0f9582db..000000000 --- a/website/static/odoc/next/infer/Biabduction__Objc_models/index.html +++ /dev/null @@ -1,2 +0,0 @@ - -Biabduction__Objc_models (infer.Biabduction__Objc_models)

Module Biabduction__Objc_models

val is_malloc_model : IR.Typ.t -> IR.Procname.t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction__Prover/index.html b/website/static/odoc/next/infer/Biabduction__Prover/index.html index 5c79753c8..1091768a0 100644 --- a/website/static/odoc/next/infer/Biabduction__Prover/index.html +++ b/website/static/odoc/next/infer/Biabduction__Prover/index.html @@ -1,2 +1,2 @@ -Biabduction__Prover (infer.Biabduction__Prover)

Module Biabduction__Prover

val atom_negate : IR.Tenv.t -> Biabduction.Predicates.atom -> Biabduction.Predicates.atom

Negate an atom

Ordinary Theorem Proving

val check_zero : IR.Tenv.t -> IR.Exp.t -> bool

Check |- e=0. Result false means "don't know".

val check_equal : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check prop |- exp1=exp2. Result false means "don't know".

val check_disequal : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check whether prop |- exp1!=exp2. Result false means "don't know".

val type_size_comparable : IR.Typ.t -> IR.Typ.t -> bool

Return true if the two types have sizes which can be compared

val check_type_size_leq : IR.Typ.t -> IR.Typ.t -> bool

Check <= on the size of comparable types

val check_atom : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Predicates.atom -> bool

Check whether prop |- a. Result false means "don't know".

val check_inconsistency_base : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> bool

Inconsistency checking ignoring footprint.

val check_inconsistency : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> bool

Inconsistency checking.

val check_allocatedness : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> bool

Check whether prop |- allocated(exp).

val is_root : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.Exp.t -> Biabduction.Predicates.offset list option

is_root prop base_exp exp checks whether base_exp = exp.offlist for some list of offsets offlist. If so, it returns Some(offlist). Otherwise, it returns None. Assumes that base_exp points to the beginning of a structure, not the middle.

val expand_hpred_pointer : IR.Tenv.t -> bool -> Biabduction.Predicates.hpred -> bool * bool * Biabduction.Predicates.hpred

expand_hpred_pointer calc_index_frame hpred expands hpred if it is a |-> whose lhs is a Lfield or Lindex or ptr+off. Return (changed, calc_index_frame', hpred') where changed indicates whether the predicate has changed.

val get_bounds : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.IntLit.t option * IR.IntLit.t option

Get upper and lower bounds of an expression, if any

Abduction prover

val check_implication : Biabduction.BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Prop.exposed Biabduction.Prop.t -> bool

check_implication p1 p2 returns true if p1|-p2

type check =
| Bounds_check
| Class_cast_check of IR.Exp.t * IR.Exp.t * IR.Exp.t
val d_typings : (IR.Exp.t * IR.Exp.t) list -> unit
type implication_result =
| ImplOK of check list * Biabduction.Predicates.subst * Biabduction.Predicates.subst * Biabduction.Predicates.hpred list * Biabduction.Predicates.atom list * Biabduction.Predicates.hpred list * Biabduction.Predicates.hpred list * Biabduction.Predicates.hpred list * (IR.Exp.t * IR.Exp.t) list * (IR.Exp.t * IR.Exp.t) list
| ImplFail of check list
val check_implication_for_footprint : Biabduction.BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Prop.exposed Biabduction.Prop.t -> implication_result

check_implication_for_footprint p1 p2 returns Some(sub, frame, missing) if sub(p1 * missing) |- sub(p2 * frame) where sub is a substitution which instantiates the primed vars of p1 and p2, which are assumed to be disjoint.

Cover: minimum set of pi's whose disjunction is equivalent to true

val find_minimum_pure_cover : IR.Tenv.t -> (Biabduction.Predicates.atom list * 'a) list -> (Biabduction.Predicates.atom list * 'a) list option

Find minimum set of pi's in cases whose disjunction covers true

\ No newline at end of file +Biabduction__Prover (infer.Biabduction__Prover)

Module Biabduction__Prover

val atom_negate : IR.Tenv.t -> Biabduction.Predicates.atom -> Biabduction.Predicates.atom

Negate an atom

Ordinary Theorem Proving

val check_zero : IR.Tenv.t -> IR.Exp.t -> bool

Check |- e=0. Result false means "don't know".

val check_equal : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check prop |- exp1=exp2. Result false means "don't know".

val check_disequal : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.Exp.t -> bool

Check whether prop |- exp1!=exp2. Result false means "don't know".

val check_atom : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Predicates.atom -> bool

Check whether prop |- a. Result false means "don't know".

val check_inconsistency_base : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> bool

Inconsistency checking ignoring footprint.

val check_inconsistency : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> bool

Inconsistency checking.

val check_allocatedness : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> bool

Check whether prop |- allocated(exp).

val is_root : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.Exp.t -> Biabduction.Predicates.offset list option

is_root prop base_exp exp checks whether base_exp = exp.offlist for some list of offsets offlist. If so, it returns Some(offlist). Otherwise, it returns None. Assumes that base_exp points to the beginning of a structure, not the middle.

val expand_hpred_pointer : IR.Tenv.t -> bool -> Biabduction.Predicates.hpred -> bool * bool * Biabduction.Predicates.hpred

expand_hpred_pointer calc_index_frame hpred expands hpred if it is a |-> whose lhs is a Lfield or Lindex or ptr+off. Return (changed, calc_index_frame', hpred') where changed indicates whether the predicate has changed.

val get_bounds : IR.Tenv.t -> Biabduction.Prop.normal Biabduction.Prop.t -> IR.Exp.t -> IR.IntLit.t option * IR.IntLit.t option

Get upper and lower bounds of an expression, if any

Abduction prover

val check_implication : Biabduction.BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Prop.exposed Biabduction.Prop.t -> bool

check_implication p1 p2 returns true if p1|-p2

type check =
| Bounds_check
| Class_cast_check of IR.Exp.t * IR.Exp.t * IR.Exp.t
val d_typings : (IR.Exp.t * IR.Exp.t) list -> unit
type implication_result =
| ImplOK of check list * Biabduction.Predicates.subst * Biabduction.Predicates.subst * Biabduction.Predicates.hpred list * Biabduction.Predicates.atom list * Biabduction.Predicates.hpred list * Biabduction.Predicates.hpred list * Biabduction.Predicates.hpred list * (IR.Exp.t * IR.Exp.t) list * (IR.Exp.t * IR.Exp.t) list
| ImplFail of check list
val check_implication_for_footprint : Biabduction.BiabductionSummary.t Absint.InterproceduralAnalysis.t -> Biabduction.Prop.normal Biabduction.Prop.t -> Biabduction.Prop.exposed Biabduction.Prop.t -> implication_result

check_implication_for_footprint p1 p2 returns Some(sub, frame, missing) if sub(p1 * missing) |- sub(p2 * frame) where sub is a substitution which instantiates the primed vars of p1 and p2, which are assumed to be disjoint.

Cover: minimum set of pi's whose disjunction is equivalent to true

val find_minimum_pure_cover : IR.Tenv.t -> (Biabduction.Predicates.atom list * 'a) list -> (Biabduction.Predicates.atom list * 'a) list option

Find minimum set of pi's in cases whose disjunction covers true

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Checkers/FbGKInteraction/ConfigName/index.html b/website/static/odoc/next/infer/Checkers/FbGKInteraction/ConfigName/index.html new file mode 100644 index 000000000..59c303f14 --- /dev/null +++ b/website/static/odoc/next/infer/Checkers/FbGKInteraction/ConfigName/index.html @@ -0,0 +1,2 @@ + +ConfigName (infer.Checkers.FbGKInteraction.ConfigName)

Module FbGKInteraction.ConfigName

type t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : Stdlib.Format.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Checkers/FbGKInteraction/index.html b/website/static/odoc/next/infer/Checkers/FbGKInteraction/index.html index f61cec687..ed1ebc371 100644 --- a/website/static/odoc/next/infer/Checkers/FbGKInteraction/index.html +++ b/website/static/odoc/next/infer/Checkers/FbGKInteraction/index.html @@ -1,2 +1,2 @@ -FbGKInteraction (infer.Checkers.FbGKInteraction)

Module Checkers.FbGKInteraction

val is_config_class : IR.Pvar.t -> bool
val is_config_check : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_start : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_end : IR.Tenv.t -> IR.Procname.t -> bool
\ No newline at end of file +FbGKInteraction (infer.Checkers.FbGKInteraction)

Module Checkers.FbGKInteraction

module ConfigName : sig ... end
val get_config : IR.Exp.t -> ConfigName.t option
val get_marker : IR.Exp.t -> (IR.Pvar.t * IR.Fieldname.t) option
val get_config_check : IR.Tenv.t -> IR.Procname.t -> (IR.Exp.t * IR.Typ.t) list -> IR.Exp.t option
val is_config_load : IR.Procname.t -> bool
val is_marker_start_java : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_end_java : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_start_objc : IR.Procname.t -> bool
val is_marker_end_objc : IR.Procname.t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Checkers__FbGKInteraction/ConfigName/index.html b/website/static/odoc/next/infer/Checkers__FbGKInteraction/ConfigName/index.html new file mode 100644 index 000000000..2039dc042 --- /dev/null +++ b/website/static/odoc/next/infer/Checkers__FbGKInteraction/ConfigName/index.html @@ -0,0 +1,2 @@ + +ConfigName (infer.Checkers__FbGKInteraction.ConfigName)

Module Checkers__FbGKInteraction.ConfigName

type t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : Stdlib.Format.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Checkers__FbGKInteraction/index.html b/website/static/odoc/next/infer/Checkers__FbGKInteraction/index.html index f4fb1be51..4ba2e0bb9 100644 --- a/website/static/odoc/next/infer/Checkers__FbGKInteraction/index.html +++ b/website/static/odoc/next/infer/Checkers__FbGKInteraction/index.html @@ -1,2 +1,2 @@ -Checkers__FbGKInteraction (infer.Checkers__FbGKInteraction)

Module Checkers__FbGKInteraction

val is_config_class : IR.Pvar.t -> bool
val is_config_check : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_start : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_end : IR.Tenv.t -> IR.Procname.t -> bool
\ No newline at end of file +Checkers__FbGKInteraction (infer.Checkers__FbGKInteraction)

Module Checkers__FbGKInteraction

module ConfigName : sig ... end
val get_config : IR.Exp.t -> ConfigName.t option
val get_marker : IR.Exp.t -> (IR.Pvar.t * IR.Fieldname.t) option
val get_config_check : IR.Tenv.t -> IR.Procname.t -> (IR.Exp.t * IR.Typ.t) list -> IR.Exp.t option
val is_config_load : IR.Procname.t -> bool
val is_marker_start_java : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_end_java : IR.Tenv.t -> IR.Procname.t -> bool
val is_marker_start_objc : IR.Procname.t -> bool
val is_marker_end_objc : IR.Procname.t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html b/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html new file mode 100644 index 000000000..cbdbf89aa --- /dev/null +++ b/website/static/odoc/next/infer/ClangFrontend/CAddImplicitGettersSetters/index.html @@ -0,0 +1,2 @@ + +CAddImplicitGettersSetters (infer.ClangFrontend.CAddImplicitGettersSetters)

Module ClangFrontend.CAddImplicitGettersSetters

val process : IR.Cfg.t -> unit

In Objective-C when properties are created in the interface of a class, the compiler creates automatically the instance variable for it and also the getter and setter in the implementation of the class. In the frontend we collect the information about which method is the implicit getter and setter of which instance variable (we get the method declaration but not the implementation), and here we add the implicit implementation.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html b/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html index 5f4a17e6d..04f70d8e1 100644 --- a/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/CAst_utils/index.html @@ -1,2 +1,2 @@ -CAst_utils (infer.ClangFrontend.CAst_utils)

Module ClangFrontend.CAst_utils

val dummy_source_range : unit -> ATDGenerated.Clang_ast_t.source_range
val dummy_stmt_info : unit -> ATDGenerated.Clang_ast_t.stmt_info
val get_fresh_pointer : unit -> ATDGenerated.Clang_ast_t.pointer
val get_decl : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.decl option
val get_stmt : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_stmt_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt
val get_stmt_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_decl_opt_with_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt_with_decl_ref_opt : ATDGenerated.Clang_ast_t.decl_ref option -> ATDGenerated.Clang_ast_t.decl option
val get_property_of_ivar : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val update_sil_types_map : ATDGenerated.Clang_ast_t.type_ptr -> IR.Typ.desc -> unit
val update_enum_map_exn : ATDGenerated.Clang_ast_t.pointer -> IR.Exp.t -> unit
val add_enum_constant : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option -> unit
val get_enum_constant_exp_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option * IR.Exp.t option
val get_qualified_name : ?⁠linters_mode:bool -> ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns sanitized, fully qualified name given name info

val get_unqualified_name : ATDGenerated.Clang_ast_t.named_decl_info -> string

returns sanitized unqualified name given name info

val get_class_name_from_member : ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns qualified class name given member name info

val get_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and returns c_type. It requires type_ptr to be `TPtr.

val get_desugared_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and resolves any sugar around it. See get_type for more info and restrictions

val get_decl_from_typ_ptr : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.decl option

returns declaration of the type for certain types (RecordType, ObjCInterfaceType and None for others

val name_of_typedef_type_info : ATDGenerated.Clang_ast_t.typedef_type_info -> IR.QualifiedCppName.t
val name_opt_of_typedef_qual_type : ATDGenerated.Clang_ast_t.qual_type -> IR.QualifiedCppName.t option
type qual_type_to_sil_type = IR.Tenv.t -> ATDGenerated.Clang_ast_t.qual_type -> IR.Typ.t
type procname_from_decl = ?⁠tenv:IR.Tenv.t -> ?⁠block_return_type:ATDGenerated.Clang_ast_t.qual_type -> ?⁠outer_proc:IR.Procname.t -> ATDGenerated.Clang_ast_t.decl -> IR.Procname.t
val qual_type_of_decl_ptr : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.qual_type
val add_type_from_decl_ref_opt : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref option -> bool -> unit
val add_type_from_decl_ref_list : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref list -> unit
val get_function_decl_with_body : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_info_from_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.named_decl_info * ATDGenerated.Clang_ast_t.pointer * ATDGenerated.Clang_ast_t.qual_type
val exists_eventually_st : ('a -> ATDGenerated.Clang_ast_t.stmt -> bool) -> 'a -> ATDGenerated.Clang_ast_t.stmt -> bool
val is_syntactically_global_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a global variable

val is_static_local_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a static local variable

val is_const_expr_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a constexpr variable

val generate_key_stmt : ATDGenerated.Clang_ast_t.stmt -> string

Generates a key for a statement based on its sub-statements and the statement tag.

val generate_key_decl : ATDGenerated.Clang_ast_t.decl -> string

Generates a key for a declaration based on its name and the declaration tag.

val get_super_if : ATDGenerated.Clang_ast_t.decl option -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl or interface decl, returns the objc interface decl of the superclass, if any.

val get_impl_decl_info : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info option
val get_super_ObjCImplementationDecl : ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl decl info, return its super class implementation decl

val is_objc_if_descendant : ?⁠blacklist:string list -> ATDGenerated.Clang_ast_t.decl option -> string list -> bool

Recursively go up the inheritance hierarchy of a given ObjCInterfaceDecl. Returns true if the passed in decl is an objc interface decl that's an eventual descendant of one of the classes passed in. Ancestors param is a list of strings that represent the class names. Will short-circuit on NSObject and NSProxy since those are known to be common base classes. The list of classes to short-circuit on can be overridden via specifying the named `blacklist` argument.

val qual_type_to_objc_interface : ATDGenerated.Clang_ast_t.qual_type -> ATDGenerated.Clang_ast_t.decl option
val is_objc_factory_method : class_decl:ATDGenerated.Clang_ast_t.decl option -> method_decl:ATDGenerated.Clang_ast_t.decl option -> bool

A class method that returns an instance of the class is a factory method.

val name_of_decl_ref_opt : ATDGenerated.Clang_ast_t.decl_ref option -> string option
val sil_annot_of_type : ATDGenerated.Clang_ast_t.qual_type -> IR.Annot.Item.t
val type_of_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr option
val get_record_fields : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl list
val get_cxx_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val get_cxx_virtual_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val is_std_vector : ATDGenerated.Clang_ast_t.qual_type -> bool
val is_no_escape_block_arg : ATDGenerated.Clang_ast_t.decl -> bool
val has_block_attribute : ATDGenerated.Clang_ast_t.decl -> bool
val is_implicit_decl : ATDGenerated.Clang_ast_t.decl -> bool
val get_superclass_curr_class_objc_from_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl_ref option
val get_method_body_opt : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.stmt option
\ No newline at end of file +CAst_utils (infer.ClangFrontend.CAst_utils)

Module ClangFrontend.CAst_utils

val dummy_source_range : unit -> ATDGenerated.Clang_ast_t.source_range
val dummy_stmt_info : unit -> ATDGenerated.Clang_ast_t.stmt_info
val get_fresh_pointer : unit -> ATDGenerated.Clang_ast_t.pointer
val get_decl : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.decl option
val get_stmt : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_stmt_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt
val get_stmt_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_decl_opt_with_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt_with_decl_ref_opt : ATDGenerated.Clang_ast_t.decl_ref option -> ATDGenerated.Clang_ast_t.decl option
val get_property_of_ivar : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val update_sil_types_map : ATDGenerated.Clang_ast_t.type_ptr -> IR.Typ.desc -> unit
val update_enum_map_exn : ATDGenerated.Clang_ast_t.pointer -> IR.Exp.t -> unit
val add_enum_constant : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option -> unit
val get_enum_constant_exp_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option * IR.Exp.t option
val get_qualified_name : ?⁠linters_mode:bool -> ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns sanitized, fully qualified name given name info

val get_unqualified_name : ATDGenerated.Clang_ast_t.named_decl_info -> string

returns sanitized unqualified name given name info

val get_class_name_from_member : ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns qualified class name given member name info

val get_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and returns c_type. It requires type_ptr to be `TPtr.

val get_desugared_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and resolves any sugar around it. See get_type for more info and restrictions

val get_decl_from_typ_ptr : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.decl option

returns declaration of the type for certain types (RecordType, ObjCInterfaceType and None for others

val name_of_typedef_type_info : ATDGenerated.Clang_ast_t.typedef_type_info -> IR.QualifiedCppName.t
val name_opt_of_typedef_qual_type : ATDGenerated.Clang_ast_t.qual_type -> IR.QualifiedCppName.t option
type qual_type_to_sil_type = IR.Tenv.t -> ATDGenerated.Clang_ast_t.qual_type -> IR.Typ.t
type procname_from_decl = ?⁠tenv:IR.Tenv.t -> ?⁠block_return_type:ATDGenerated.Clang_ast_t.qual_type -> ?⁠outer_proc:IR.Procname.t -> ATDGenerated.Clang_ast_t.decl -> IR.Procname.t
val qual_type_of_decl_ptr : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.qual_type
val add_type_from_decl_ref_opt : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref option -> bool -> unit
val add_type_from_decl_ref_list : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref list -> unit
val get_function_decl_with_body : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_info_from_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.named_decl_info * ATDGenerated.Clang_ast_t.pointer * ATDGenerated.Clang_ast_t.qual_type
val exists_eventually_st : ('a -> ATDGenerated.Clang_ast_t.stmt -> bool) -> 'a -> ATDGenerated.Clang_ast_t.stmt -> bool
val is_syntactically_global_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a global variable

val is_static_local_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a static local variable

val is_const_expr_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a constexpr variable

val generate_key_stmt : ATDGenerated.Clang_ast_t.stmt -> string

Generates a key for a statement based on its sub-statements and the statement tag.

val generate_key_decl : ATDGenerated.Clang_ast_t.decl -> string

Generates a key for a declaration based on its name and the declaration tag.

val get_super_if : ATDGenerated.Clang_ast_t.decl option -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl or interface decl, returns the objc interface decl of the superclass, if any.

val get_impl_decl_info : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info option
val get_super_ObjCImplementationDecl : ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl decl info, return its super class implementation decl

val is_objc_if_descendant : ?⁠blacklist:string list -> ATDGenerated.Clang_ast_t.decl option -> string list -> bool

Recursively go up the inheritance hierarchy of a given ObjCInterfaceDecl. Returns true if the passed in decl is an objc interface decl that's an eventual descendant of one of the classes passed in. Ancestors param is a list of strings that represent the class names. Will short-circuit on NSObject and NSProxy since those are known to be common base classes. The list of classes to short-circuit on can be overridden via specifying the named `blacklist` argument.

val qual_type_to_objc_interface : ATDGenerated.Clang_ast_t.qual_type -> ATDGenerated.Clang_ast_t.decl option
val is_objc_factory_method : class_decl:ATDGenerated.Clang_ast_t.decl option -> method_decl:ATDGenerated.Clang_ast_t.decl option -> bool

A class method that returns an instance of the class is a factory method.

val sil_annot_of_type : ATDGenerated.Clang_ast_t.qual_type -> IR.Annot.Item.t
val type_of_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr option
val get_record_fields : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl list
val get_cxx_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val get_cxx_virtual_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val is_std_vector : ATDGenerated.Clang_ast_t.qual_type -> bool
val is_no_escape_block_arg : ATDGenerated.Clang_ast_t.decl -> bool
val has_block_attribute : ATDGenerated.Clang_ast_t.decl -> bool
val is_implicit_decl : ATDGenerated.Clang_ast_t.decl -> bool
val get_superclass_curr_class_objc_from_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl_ref option
val get_method_body_opt : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.stmt option
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ClangFrontend/index.html b/website/static/odoc/next/infer/ClangFrontend/index.html index d03f429cf..9226b41a0 100644 --- a/website/static/odoc/next/infer/ClangFrontend/index.html +++ b/website/static/odoc/next/infer/ClangFrontend/index.html @@ -1,2 +1,2 @@ -ClangFrontend (infer.ClangFrontend)

Module ClangFrontend

module AstToRangeMap : sig ... end
module Ast_expressions : sig ... end
module CAddImplicitDeallocImpl : sig ... end
module CArithmetic_trans : sig ... end
module CAst_utils : sig ... end
module CContext : sig ... end
module CEnum_decl : sig ... end
module CField_decl : sig ... end
module CFrontend : sig ... end
module CFrontend_config : sig ... end
module CFrontend_decl : sig ... end
module CFrontend_errors : sig ... end
module CGeneral_utils : sig ... end
module CLocation : sig ... end
module CMethodProperties : sig ... end
module CMethodSignature : sig ... end
module CMethod_trans : sig ... end
module CModule_type : sig ... end
module CScope : sig ... end
module CTrans : sig ... end
module CTrans_models : sig ... end
module CTrans_utils : sig ... end
module CType : sig ... end
module CType_decl : sig ... end
module CType_to_sil_type : sig ... end
module CVar_decl : sig ... end
module Capture : sig ... end
module ClangCommand : sig ... end
module ClangPointers : sig ... end
module ClangQuotes : sig ... end
module ClangWrapper : sig ... end
module Clang_ast_extend : sig ... end
module ObjcCategory_decl : sig ... end
module ObjcInterface_decl : sig ... end
module ObjcMethod_decl : sig ... end
module ObjcProperty_decl : sig ... end
module ObjcProtocol_decl : sig ... end
module ProcessAST : sig ... end
module SwitchCase : sig ... end
\ No newline at end of file +ClangFrontend (infer.ClangFrontend)

Module ClangFrontend

module AstToRangeMap : sig ... end
module Ast_expressions : sig ... end
module CAddImplicitDeallocImpl : sig ... end
module CAddImplicitGettersSetters : sig ... end
module CArithmetic_trans : sig ... end
module CAst_utils : sig ... end
module CContext : sig ... end
module CEnum_decl : sig ... end
module CField_decl : sig ... end
module CFrontend : sig ... end
module CFrontend_config : sig ... end
module CFrontend_decl : sig ... end
module CFrontend_errors : sig ... end
module CGeneral_utils : sig ... end
module CLocation : sig ... end
module CMethodProperties : sig ... end
module CMethodSignature : sig ... end
module CMethod_trans : sig ... end
module CModule_type : sig ... end
module CScope : sig ... end
module CTrans : sig ... end
module CTrans_models : sig ... end
module CTrans_utils : sig ... end
module CType : sig ... end
module CType_decl : sig ... end
module CType_to_sil_type : sig ... end
module CVar_decl : sig ... end
module Capture : sig ... end
module ClangCommand : sig ... end
module ClangPointers : sig ... end
module ClangQuotes : sig ... end
module ClangWrapper : sig ... end
module Clang_ast_extend : sig ... end
module ObjcCategory_decl : sig ... end
module ObjcInterface_decl : sig ... end
module ObjcMethod_decl : sig ... end
module ObjcProperty_decl : sig ... end
module ObjcProtocol_decl : sig ... end
module ProcessAST : sig ... end
module SwitchCase : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Biabduction__Objc_models/.dune-keep b/website/static/odoc/next/infer/ClangFrontend__CAddImplicitGettersSetters/.dune-keep similarity index 100% rename from website/static/odoc/next/infer/Biabduction__Objc_models/.dune-keep rename to website/static/odoc/next/infer/ClangFrontend__CAddImplicitGettersSetters/.dune-keep diff --git a/website/static/odoc/next/infer/ClangFrontend__CAddImplicitGettersSetters/index.html b/website/static/odoc/next/infer/ClangFrontend__CAddImplicitGettersSetters/index.html new file mode 100644 index 000000000..5c8c9a172 --- /dev/null +++ b/website/static/odoc/next/infer/ClangFrontend__CAddImplicitGettersSetters/index.html @@ -0,0 +1,2 @@ + +ClangFrontend__CAddImplicitGettersSetters (infer.ClangFrontend__CAddImplicitGettersSetters)

Module ClangFrontend__CAddImplicitGettersSetters

val process : IR.Cfg.t -> unit

In Objective-C when properties are created in the interface of a class, the compiler creates automatically the instance variable for it and also the getter and setter in the implementation of the class. In the frontend we collect the information about which method is the implicit getter and setter of which instance variable (we get the method declaration but not the implementation), and here we add the implicit implementation.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/ClangFrontend__CAst_utils/index.html b/website/static/odoc/next/infer/ClangFrontend__CAst_utils/index.html index 55fd0de1e..fac601daf 100644 --- a/website/static/odoc/next/infer/ClangFrontend__CAst_utils/index.html +++ b/website/static/odoc/next/infer/ClangFrontend__CAst_utils/index.html @@ -1,2 +1,2 @@ -ClangFrontend__CAst_utils (infer.ClangFrontend__CAst_utils)

Module ClangFrontend__CAst_utils

val dummy_source_range : unit -> ATDGenerated.Clang_ast_t.source_range
val dummy_stmt_info : unit -> ATDGenerated.Clang_ast_t.stmt_info
val get_fresh_pointer : unit -> ATDGenerated.Clang_ast_t.pointer
val get_decl : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.decl option
val get_stmt : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_stmt_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt
val get_stmt_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_decl_opt_with_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt_with_decl_ref_opt : ATDGenerated.Clang_ast_t.decl_ref option -> ATDGenerated.Clang_ast_t.decl option
val get_property_of_ivar : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val update_sil_types_map : ATDGenerated.Clang_ast_t.type_ptr -> IR.Typ.desc -> unit
val update_enum_map_exn : ATDGenerated.Clang_ast_t.pointer -> IR.Exp.t -> unit
val add_enum_constant : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option -> unit
val get_enum_constant_exp_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option * IR.Exp.t option
val get_qualified_name : ?⁠linters_mode:bool -> ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns sanitized, fully qualified name given name info

val get_unqualified_name : ATDGenerated.Clang_ast_t.named_decl_info -> string

returns sanitized unqualified name given name info

val get_class_name_from_member : ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns qualified class name given member name info

val get_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and returns c_type. It requires type_ptr to be `TPtr.

val get_desugared_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and resolves any sugar around it. See get_type for more info and restrictions

val get_decl_from_typ_ptr : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.decl option

returns declaration of the type for certain types (RecordType, ObjCInterfaceType and None for others

val name_of_typedef_type_info : ATDGenerated.Clang_ast_t.typedef_type_info -> IR.QualifiedCppName.t
val name_opt_of_typedef_qual_type : ATDGenerated.Clang_ast_t.qual_type -> IR.QualifiedCppName.t option
type qual_type_to_sil_type = IR.Tenv.t -> ATDGenerated.Clang_ast_t.qual_type -> IR.Typ.t
type procname_from_decl = ?⁠tenv:IR.Tenv.t -> ?⁠block_return_type:ATDGenerated.Clang_ast_t.qual_type -> ?⁠outer_proc:IR.Procname.t -> ATDGenerated.Clang_ast_t.decl -> IR.Procname.t
val qual_type_of_decl_ptr : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.qual_type
val add_type_from_decl_ref_opt : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref option -> bool -> unit
val add_type_from_decl_ref_list : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref list -> unit
val get_function_decl_with_body : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_info_from_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.named_decl_info * ATDGenerated.Clang_ast_t.pointer * ATDGenerated.Clang_ast_t.qual_type
val exists_eventually_st : ('a -> ATDGenerated.Clang_ast_t.stmt -> bool) -> 'a -> ATDGenerated.Clang_ast_t.stmt -> bool
val is_syntactically_global_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a global variable

val is_static_local_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a static local variable

val is_const_expr_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a constexpr variable

val generate_key_stmt : ATDGenerated.Clang_ast_t.stmt -> string

Generates a key for a statement based on its sub-statements and the statement tag.

val generate_key_decl : ATDGenerated.Clang_ast_t.decl -> string

Generates a key for a declaration based on its name and the declaration tag.

val get_super_if : ATDGenerated.Clang_ast_t.decl option -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl or interface decl, returns the objc interface decl of the superclass, if any.

val get_impl_decl_info : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info option
val get_super_ObjCImplementationDecl : ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl decl info, return its super class implementation decl

val is_objc_if_descendant : ?⁠blacklist:string list -> ATDGenerated.Clang_ast_t.decl option -> string list -> bool

Recursively go up the inheritance hierarchy of a given ObjCInterfaceDecl. Returns true if the passed in decl is an objc interface decl that's an eventual descendant of one of the classes passed in. Ancestors param is a list of strings that represent the class names. Will short-circuit on NSObject and NSProxy since those are known to be common base classes. The list of classes to short-circuit on can be overridden via specifying the named `blacklist` argument.

val qual_type_to_objc_interface : ATDGenerated.Clang_ast_t.qual_type -> ATDGenerated.Clang_ast_t.decl option
val is_objc_factory_method : class_decl:ATDGenerated.Clang_ast_t.decl option -> method_decl:ATDGenerated.Clang_ast_t.decl option -> bool

A class method that returns an instance of the class is a factory method.

val name_of_decl_ref_opt : ATDGenerated.Clang_ast_t.decl_ref option -> string option
val sil_annot_of_type : ATDGenerated.Clang_ast_t.qual_type -> IR.Annot.Item.t
val type_of_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr option
val get_record_fields : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl list
val get_cxx_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val get_cxx_virtual_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val is_std_vector : ATDGenerated.Clang_ast_t.qual_type -> bool
val is_no_escape_block_arg : ATDGenerated.Clang_ast_t.decl -> bool
val has_block_attribute : ATDGenerated.Clang_ast_t.decl -> bool
val is_implicit_decl : ATDGenerated.Clang_ast_t.decl -> bool
val get_superclass_curr_class_objc_from_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl_ref option
val get_method_body_opt : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.stmt option
\ No newline at end of file +ClangFrontend__CAst_utils (infer.ClangFrontend__CAst_utils)

Module ClangFrontend__CAst_utils

val dummy_source_range : unit -> ATDGenerated.Clang_ast_t.source_range
val dummy_stmt_info : unit -> ATDGenerated.Clang_ast_t.stmt_info
val get_fresh_pointer : unit -> ATDGenerated.Clang_ast_t.pointer
val get_decl : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.decl option
val get_stmt : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_stmt_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt
val get_stmt_opt : ATDGenerated.Clang_ast_t.pointer option -> ATDGenerated.Clang_ast_t.source_range -> ATDGenerated.Clang_ast_t.stmt option
val get_decl_opt_with_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.decl option
val get_decl_opt_with_decl_ref_opt : ATDGenerated.Clang_ast_t.decl_ref option -> ATDGenerated.Clang_ast_t.decl option
val get_property_of_ivar : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val update_sil_types_map : ATDGenerated.Clang_ast_t.type_ptr -> IR.Typ.desc -> unit
val update_enum_map_exn : ATDGenerated.Clang_ast_t.pointer -> IR.Exp.t -> unit
val add_enum_constant : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option -> unit
val get_enum_constant_exp_exn : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.pointer option * IR.Exp.t option
val get_qualified_name : ?⁠linters_mode:bool -> ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns sanitized, fully qualified name given name info

val get_unqualified_name : ATDGenerated.Clang_ast_t.named_decl_info -> string

returns sanitized unqualified name given name info

val get_class_name_from_member : ATDGenerated.Clang_ast_t.named_decl_info -> IR.QualifiedCppName.t

returns qualified class name given member name info

val get_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and returns c_type. It requires type_ptr to be `TPtr.

val get_desugared_type : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.c_type option

looks up clang pointer to type and resolves any sugar around it. See get_type for more info and restrictions

val get_decl_from_typ_ptr : ATDGenerated.Clang_ast_t.type_ptr -> ATDGenerated.Clang_ast_t.decl option

returns declaration of the type for certain types (RecordType, ObjCInterfaceType and None for others

val name_of_typedef_type_info : ATDGenerated.Clang_ast_t.typedef_type_info -> IR.QualifiedCppName.t
val name_opt_of_typedef_qual_type : ATDGenerated.Clang_ast_t.qual_type -> IR.QualifiedCppName.t option
type qual_type_to_sil_type = IR.Tenv.t -> ATDGenerated.Clang_ast_t.qual_type -> IR.Typ.t
type procname_from_decl = ?⁠tenv:IR.Tenv.t -> ?⁠block_return_type:ATDGenerated.Clang_ast_t.qual_type -> ?⁠outer_proc:IR.Procname.t -> ATDGenerated.Clang_ast_t.decl -> IR.Procname.t
val qual_type_of_decl_ptr : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.qual_type
val add_type_from_decl_ref_opt : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref option -> bool -> unit
val add_type_from_decl_ref_list : qual_type_to_sil_type -> IR.Tenv.t -> ATDGenerated.Clang_ast_t.decl_ref list -> unit
val get_function_decl_with_body : ATDGenerated.Clang_ast_t.pointer -> ATDGenerated.Clang_ast_t.decl option
val get_info_from_decl_ref : ATDGenerated.Clang_ast_t.decl_ref -> ATDGenerated.Clang_ast_t.named_decl_info * ATDGenerated.Clang_ast_t.pointer * ATDGenerated.Clang_ast_t.qual_type
val exists_eventually_st : ('a -> ATDGenerated.Clang_ast_t.stmt -> bool) -> 'a -> ATDGenerated.Clang_ast_t.stmt -> bool
val is_syntactically_global_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a global variable

val is_static_local_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a static local variable

val is_const_expr_var : ATDGenerated.Clang_ast_t.decl -> bool

true if a declaration is a constexpr variable

val generate_key_stmt : ATDGenerated.Clang_ast_t.stmt -> string

Generates a key for a statement based on its sub-statements and the statement tag.

val generate_key_decl : ATDGenerated.Clang_ast_t.decl -> string

Generates a key for a declaration based on its name and the declaration tag.

val get_super_if : ATDGenerated.Clang_ast_t.decl option -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl or interface decl, returns the objc interface decl of the superclass, if any.

val get_impl_decl_info : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info option
val get_super_ObjCImplementationDecl : ATDGenerated.Clang_ast_t.obj_c_implementation_decl_info -> ATDGenerated.Clang_ast_t.decl option

Given an objc impl decl info, return its super class implementation decl

val is_objc_if_descendant : ?⁠blacklist:string list -> ATDGenerated.Clang_ast_t.decl option -> string list -> bool

Recursively go up the inheritance hierarchy of a given ObjCInterfaceDecl. Returns true if the passed in decl is an objc interface decl that's an eventual descendant of one of the classes passed in. Ancestors param is a list of strings that represent the class names. Will short-circuit on NSObject and NSProxy since those are known to be common base classes. The list of classes to short-circuit on can be overridden via specifying the named `blacklist` argument.

val qual_type_to_objc_interface : ATDGenerated.Clang_ast_t.qual_type -> ATDGenerated.Clang_ast_t.decl option
val is_objc_factory_method : class_decl:ATDGenerated.Clang_ast_t.decl option -> method_decl:ATDGenerated.Clang_ast_t.decl option -> bool

A class method that returns an instance of the class is a factory method.

val sil_annot_of_type : ATDGenerated.Clang_ast_t.qual_type -> IR.Annot.Item.t
val type_of_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr option
val get_record_fields : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl list
val get_cxx_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val get_cxx_virtual_base_classes : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.type_ptr list
val is_std_vector : ATDGenerated.Clang_ast_t.qual_type -> bool
val is_no_escape_block_arg : ATDGenerated.Clang_ast_t.decl -> bool
val has_block_attribute : ATDGenerated.Clang_ast_t.decl -> bool
val is_implicit_decl : ATDGenerated.Clang_ast_t.decl -> bool
val get_superclass_curr_class_objc_from_decl : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.decl_ref option
val get_method_body_opt : ATDGenerated.Clang_ast_t.decl -> ATDGenerated.Clang_ast_t.stmt option
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib/Cost/index.html b/website/static/odoc/next/infer/Costlib/Cost/index.html index 68d1eb741..b72b006d6 100644 --- a/website/static/odoc/next/infer/Costlib/Cost/index.html +++ b/website/static/odoc/next/infer/Costlib/Cost/index.html @@ -1,2 +1,2 @@ -Cost (infer.Costlib.Cost)

Module Costlib.Cost

val checker : (CostDomain.summary option * BO.BufferOverrunAnalysisSummary.t option * Checkers.PurityDomain.summary option) Absint.InterproceduralAnalysis.t -> CostDomain.summary option
val instantiate_cost : IR.Typ.IntegerWidths.t -> inferbo_caller_mem:BO.BufferOverrunDomain.Mem.t -> callee_pname:IR.Procname.t -> callee_formals:(IR.Pvar.t * IR.Typ.t) list -> params:(IR.Exp.t * IR.Typ.t) list -> callee_cost:CostDomain.BasicCost.t -> loc:IBase.Location.t -> CostDomain.BasicCost.t
val is_report_suppressed : IR.Procname.t -> bool
\ No newline at end of file +Cost (infer.Costlib.Cost)

Module Costlib.Cost

val checker : (CostDomain.summary option * BO.BufferOverrunAnalysisSummary.t option * Checkers.PurityDomain.summary option) Absint.InterproceduralAnalysis.t -> CostDomain.summary option
val instantiate_cost : IR.Typ.IntegerWidths.t -> inferbo_caller_mem:BO.BufferOverrunDomain.Mem.t -> callee_pname:IR.Procname.t -> callee_formals:(IR.Pvar.t * IR.Typ.t) list -> params:(IR.Exp.t * IR.Typ.t) list -> callee_cost:CostDomain.BasicCostWithReason.t -> loc:IBase.Location.t -> CostDomain.BasicCostWithReason.t
val is_report_suppressed : IR.Procname.t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html new file mode 100644 index 000000000..12131f0e7 --- /dev/null +++ b/website/static/odoc/next/infer/Costlib/CostDomain/BasicCostWithReason/index.html @@ -0,0 +1,2 @@ + +BasicCostWithReason (infer.Costlib.CostDomain.BasicCostWithReason)

Module CostDomain.BasicCostWithReason

type t = {
cost : BasicCost.t;
top_pname_opt : IR.Procname.t option;
}
val is_top : t -> bool
val is_unreachable : t -> bool
val subst : IR.Procname.t -> IBase.Location.t -> t -> BO.Bounds.Bound.eval_sym -> t
val degree : t -> BO.Polynomials.Degree.t option
val polynomial_traces : t -> Absint.Errlog.loc_trace
val pp_hum : Stdlib.Format.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html index 23f939c98..3bf6ef166 100644 --- a/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html +++ b/website/static/odoc/next/infer/Costlib/CostDomain/VariantCostMap/index.html @@ -1,2 +1,2 @@ -VariantCostMap (infer.Costlib.CostDomain.VariantCostMap)

Module CostDomain.VariantCostMap

type t = BasicCost.t IBase.CostIssues.CostKindMap.t
val pp : F.formatter -> t -> unit
\ No newline at end of file +VariantCostMap (infer.Costlib.CostDomain.VariantCostMap)

Module CostDomain.VariantCostMap

type t = BasicCostWithReason.t IBase.CostIssues.CostKindMap.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib/CostDomain/index.html b/website/static/odoc/next/infer/Costlib/CostDomain/index.html index 96a75c359..b2b92c256 100644 --- a/website/static/odoc/next/infer/Costlib/CostDomain/index.html +++ b/website/static/odoc/next/infer/Costlib/CostDomain/index.html @@ -1,2 +1,2 @@ -CostDomain (infer.Costlib.CostDomain)

Module Costlib.CostDomain

module F = Stdlib.Format
module BasicCost : sig ... end
module VariantCostMap : sig ... end
type t = VariantCostMap.t
type summary = {
post : t;
is_on_ui_thread : bool;
}
val pp_summary : F.formatter -> summary -> unit
val get_cost_kind : IBase.CostKind.t -> t -> BasicCost.t
val get_operation_cost : t -> BasicCost.t
val map : f:(BasicCost.t -> BasicCost.t) -> t -> t
val zero_record : t

Map representing cost record {OperationCost:0; AllocationCost:0; IOCost:0}

val mult_by : t -> nb_exec:BasicCost.t -> t

Special map where each element is multiplied by the number of executions

val plus : t -> t -> t

Union of two maps where common costs are added together

val unit_cost_atomic_operation : t

Map representing cost record {OperationCost:1; AllocationCost:0; IOCost:0}

val unit_cost_allocation : t

Map representing cost record {OperationCost:0; AllocationCost:1; IOCost:0}

val of_operation_cost : BasicCost.t -> t

Map representing cost record {OperationCost:operation_cost; AllocationCost:0; IOCost:0}

\ No newline at end of file +CostDomain (infer.Costlib.CostDomain)

Module Costlib.CostDomain

module F = Stdlib.Format
module BasicCost : sig ... end
module BasicCostWithReason : sig ... end
module VariantCostMap : sig ... end
type t = VariantCostMap.t
type summary = {
post : t;
is_on_ui_thread : bool;
}
val pp_summary : F.formatter -> summary -> unit
val get_cost_kind : IBase.CostKind.t -> t -> BasicCostWithReason.t
val get_operation_cost : t -> BasicCostWithReason.t
val map : f:(BasicCostWithReason.t -> BasicCostWithReason.t) -> t -> t
val zero_record : t

Map representing cost record {OperationCost:0; AllocationCost:0; IOCost:0}

val mult_by : t -> nb_exec:BasicCost.t -> t

Special map where each element is multiplied by the number of executions

val plus : t -> t -> t

Union of two maps where common costs are added together

val unit_cost_atomic_operation : t

Map representing cost record {OperationCost:1; AllocationCost:0; IOCost:0}

val unit_cost_allocation : t

Map representing cost record {OperationCost:0; AllocationCost:1; IOCost:0}

val of_operation_cost : BasicCost.t -> t

Map representing cost record {OperationCost:operation_cost; AllocationCost:0; IOCost:0}

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib__Cost/index.html b/website/static/odoc/next/infer/Costlib__Cost/index.html index 00b3b01ab..6441543ae 100644 --- a/website/static/odoc/next/infer/Costlib__Cost/index.html +++ b/website/static/odoc/next/infer/Costlib__Cost/index.html @@ -1,2 +1,2 @@ -Costlib__Cost (infer.Costlib__Cost)

Module Costlib__Cost

val checker : (Costlib.CostDomain.summary option * BO.BufferOverrunAnalysisSummary.t option * Checkers.PurityDomain.summary option) Absint.InterproceduralAnalysis.t -> Costlib.CostDomain.summary option
val instantiate_cost : IR.Typ.IntegerWidths.t -> inferbo_caller_mem:BO.BufferOverrunDomain.Mem.t -> callee_pname:IR.Procname.t -> callee_formals:(IR.Pvar.t * IR.Typ.t) list -> params:(IR.Exp.t * IR.Typ.t) list -> callee_cost:Costlib.CostDomain.BasicCost.t -> loc:IBase.Location.t -> Costlib.CostDomain.BasicCost.t
val is_report_suppressed : IR.Procname.t -> bool
\ No newline at end of file +Costlib__Cost (infer.Costlib__Cost)

Module Costlib__Cost

val checker : (Costlib.CostDomain.summary option * BO.BufferOverrunAnalysisSummary.t option * Checkers.PurityDomain.summary option) Absint.InterproceduralAnalysis.t -> Costlib.CostDomain.summary option
val instantiate_cost : IR.Typ.IntegerWidths.t -> inferbo_caller_mem:BO.BufferOverrunDomain.Mem.t -> callee_pname:IR.Procname.t -> callee_formals:(IR.Pvar.t * IR.Typ.t) list -> params:(IR.Exp.t * IR.Typ.t) list -> callee_cost:Costlib.CostDomain.BasicCostWithReason.t -> loc:IBase.Location.t -> Costlib.CostDomain.BasicCostWithReason.t
val is_report_suppressed : IR.Procname.t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib__CostDomain/BasicCostWithReason/index.html b/website/static/odoc/next/infer/Costlib__CostDomain/BasicCostWithReason/index.html new file mode 100644 index 000000000..2dfd907ad --- /dev/null +++ b/website/static/odoc/next/infer/Costlib__CostDomain/BasicCostWithReason/index.html @@ -0,0 +1,2 @@ + +BasicCostWithReason (infer.Costlib__CostDomain.BasicCostWithReason)

Module Costlib__CostDomain.BasicCostWithReason

type t = {
cost : BasicCost.t;
top_pname_opt : IR.Procname.t option;
}
val is_top : t -> bool
val is_unreachable : t -> bool
val subst : IR.Procname.t -> IBase.Location.t -> t -> BO.Bounds.Bound.eval_sym -> t
val degree : t -> BO.Polynomials.Degree.t option
val polynomial_traces : t -> Absint.Errlog.loc_trace
val pp_hum : Stdlib.Format.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib__CostDomain/VariantCostMap/index.html b/website/static/odoc/next/infer/Costlib__CostDomain/VariantCostMap/index.html index a9f47a469..b9b829728 100644 --- a/website/static/odoc/next/infer/Costlib__CostDomain/VariantCostMap/index.html +++ b/website/static/odoc/next/infer/Costlib__CostDomain/VariantCostMap/index.html @@ -1,2 +1,2 @@ -VariantCostMap (infer.Costlib__CostDomain.VariantCostMap)

Module Costlib__CostDomain.VariantCostMap

type t = BasicCost.t IBase.CostIssues.CostKindMap.t
val pp : F.formatter -> t -> unit
\ No newline at end of file +VariantCostMap (infer.Costlib__CostDomain.VariantCostMap)

Module Costlib__CostDomain.VariantCostMap

type t = BasicCostWithReason.t IBase.CostIssues.CostKindMap.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Costlib__CostDomain/index.html b/website/static/odoc/next/infer/Costlib__CostDomain/index.html index 461ce1a25..153874f7f 100644 --- a/website/static/odoc/next/infer/Costlib__CostDomain/index.html +++ b/website/static/odoc/next/infer/Costlib__CostDomain/index.html @@ -1,2 +1,2 @@ -Costlib__CostDomain (infer.Costlib__CostDomain)

Module Costlib__CostDomain

module F = Stdlib.Format
module BasicCost : sig ... end
module VariantCostMap : sig ... end
type t = VariantCostMap.t
type summary = {
post : t;
is_on_ui_thread : bool;
}
val pp_summary : F.formatter -> summary -> unit
val get_cost_kind : IBase.CostKind.t -> t -> BasicCost.t
val get_operation_cost : t -> BasicCost.t
val map : f:(BasicCost.t -> BasicCost.t) -> t -> t
val zero_record : t

Map representing cost record {OperationCost:0; AllocationCost:0; IOCost:0}

val mult_by : t -> nb_exec:BasicCost.t -> t

Special map where each element is multiplied by the number of executions

val plus : t -> t -> t

Union of two maps where common costs are added together

val unit_cost_atomic_operation : t

Map representing cost record {OperationCost:1; AllocationCost:0; IOCost:0}

val unit_cost_allocation : t

Map representing cost record {OperationCost:0; AllocationCost:1; IOCost:0}

val of_operation_cost : BasicCost.t -> t

Map representing cost record {OperationCost:operation_cost; AllocationCost:0; IOCost:0}

\ No newline at end of file +Costlib__CostDomain (infer.Costlib__CostDomain)

Module Costlib__CostDomain

module F = Stdlib.Format
module BasicCost : sig ... end
module BasicCostWithReason : sig ... end
module VariantCostMap : sig ... end
type t = VariantCostMap.t
type summary = {
post : t;
is_on_ui_thread : bool;
}
val pp_summary : F.formatter -> summary -> unit
val get_cost_kind : IBase.CostKind.t -> t -> BasicCostWithReason.t
val get_operation_cost : t -> BasicCostWithReason.t
val map : f:(BasicCostWithReason.t -> BasicCostWithReason.t) -> t -> t
val zero_record : t

Map representing cost record {OperationCost:0; AllocationCost:0; IOCost:0}

val mult_by : t -> nb_exec:BasicCost.t -> t

Special map where each element is multiplied by the number of executions

val plus : t -> t -> t

Union of two maps where common costs are added together

val unit_cost_atomic_operation : t

Map representing cost record {OperationCost:1; AllocationCost:0; IOCost:0}

val unit_cost_allocation : t

Map representing cost record {OperationCost:0; AllocationCost:1; IOCost:0}

val of_operation_cost : BasicCost.t -> t

Map representing cost record {OperationCost:operation_cost; AllocationCost:0; IOCost:0}

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase/Config/index.html b/website/static/odoc/next/infer/IBase/Config/index.html index 2b556038c..beaf28101 100644 --- a/website/static/odoc/next/infer/IBase/Config/index.html +++ b/website/static/odoc/next/infer/IBase/Config/index.html @@ -1,2 +1,2 @@ -Config (infer.IBase.Config)

Module IBase.Config

type os_type =
| Unix
| Win32
| Cygwin
type build_system =
| BAnt
| BBuck
| BClang
| BGradle
| BJava
| BJavac
| BMake
| BMvn
| BNdk
| BXcode
type scheduler =
| File
| Restart
| SyntacticCallGraph
val equal_scheduler : scheduler -> scheduler -> bool
val build_system_of_exe_name : string -> build_system
val string_of_build_system : build_system -> string
val env_inside_maven : IStdlib.IStd.Unix.env

Constant configuration values

val anonymous_block_num_sep : string
val anonymous_block_prefix : string
val append_buck_flavors : string list
val assign : string
val biabduction_models_dir : string
val biabduction_models_jar : string
val biabduction_models_src_dir : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val clang_exe_aliases : string list
val clang_initializer_prefix : string
val clang_inner_destructor_prefix : string
val clang_plugin_path : string
val classpath : string option
val default_failure_name : string
val dotty_frontend_output : string
val etc_dir : string
val fail_on_issue_exit_code : int
val fcp_dir : string
val idempotent_getters : bool
val initial_analysis_time : float
val ivar_attributes : string
val java_lambda_marker_infix : string

marker to recognize methods generated by javalib to eliminate lambdas

val lib_dir : string
val load_average : float option
val max_narrows : int
val max_widens : int
val meet_level : int
val nsnotification_center_checker_backend : bool
val os_type : os_type
val passthroughs : bool
val patterns_modeled_expensive : string * Yojson.Basic.t
val patterns_never_returning_null : string * Yojson.Basic.t
val patterns_skip_implementation : string * Yojson.Basic.t
val patterns_skip_translation : string * Yojson.Basic.t
val pp_version : Stdlib.Format.formatter -> unit -> unit
val property_attributes : string
val relative_path_backtrack : int
val report : bool
val report_custom_error : bool
val report_force_relative_path : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val sourcepath : string option
val sources : string list
val specs_files_suffix : string
val trace_absarray : bool
val unsafe_unret : string
val incremental_analysis : bool
val weak : string
val whitelisted_cpp_classes : string list
val whitelisted_cpp_methods : string list
val wrappers_dir : string

Configuration values specified by command-line options

type iphoneos_target_sdk_version_path_regex = {
path : Str.regexp;
version : string;
}
val abs_struct : int
val abs_val : int
val allow_leak : bool
val annotation_reachability_cxx : Yojson.Basic.t
val annotation_reachability_cxx_sources : Yojson.Basic.t
val annotation_reachability_custom_pairs : Yojson.Basic.t
val anon_args : string list
val array_level : int
val biabduction_models_mode : bool
val bo_debug : int
val bo_field_depth_limit : int option
val bootclasspath : string option
val buck : bool
val buck_blacklist : string list
val buck_build_args : string list
val buck_build_args_no_inline : string list
val buck_cache_mode : bool
val buck_merge_all_deps : bool
val buck_mode : BuckMode.t option
val buck_out_gen : string
val buck_targets_blacklist : string list
val call_graph_schedule : bool
val capture : bool
val capture_blacklist : string option
val censor_report : ((bool * Str.regexp) * (bool * Str.regexp) * string) list
val changed_files_index : string option
val check_version : string option
val clang_biniou_file : string option
val clang_compound_literal_init_limit : int
val clang_extra_flags : string list
val clang_blacklisted_flags : string list
val clang_blacklisted_flags_with_arg : string list
val clang_ignore_regex : string option
val clang_isystem_to_override_regex : Str.regexp option
val clang_idirafter_to_override_regex : Str.regexp option
val clang_libcxx_include_to_override_regex : string option
val command : ATDGenerated.InferCommand.t
val compute_analytics : bool
val continue_analysis : bool
val continue_capture : bool
val costs_current : string option
val cost_issues_tests : string option
val costs_previous : string option
val cxx : bool
val cxx_scope_guards : Yojson.Basic.t
val deduplicate : bool
val debug_exceptions : bool
val debug_level_analysis : int
val debug_level_capture : int
val debug_level_linters : int
val debug_level_test_determinator : int
val debug_mode : bool
val default_linters : bool
val dependency_mode : bool
val developer_mode : bool
val differential_filter_files : string option
val differential_filter_set : [ `Introduced | `Fixed | `Preexisting ] list
val dotty_cfg_libs : bool
val dump_duplicate_symbols : bool
val eradicate_condition_redundant : bool
val eradicate_field_over_annotated : bool
val eradicate_return_over_annotated : bool
val eradicate_verbose : bool
val fail_on_bug : bool
val fcp_apple_clang : string option
val fcp_syntax_only : bool
val file_renamings : string option
val filter_paths : bool
val filtering : bool
val force_delete_results_dir : bool
val force_integration : build_system option
val from_json_report : string
val from_json_costs_report : string
val frontend_stats : bool
val frontend_tests : bool
val function_pointer_specialization : bool
val generated_classes : string option
val genrule_mode : bool
val get_linter_doc_url : linter_id:string -> string option
val help_checker : Checker.t list
val help_issue_type : IssueType.t list
val hoisting_report_only_expensive : bool
val html : bool
val icfg_dotty_outfile : string option
val infer_is_clang : bool
val infer_is_javac : bool
val implicit_sdk_root : string option
val inclusive_cost : bool
val inferconfig_file : string option
val inferconfig_dir : string option
val iphoneos_target_sdk_version : string option
val iphoneos_target_sdk_version_path_regex : iphoneos_target_sdk_version_path_regex list
val is_checker_enabled : Checker.t -> bool
val issues_tests : string option
val issues_tests_fields : IssuesTestField.t list
val iterations : int
val java_debug_source_file_info : string option
val java_jar_compiler : string option
val java_version : int option
val javac_classes_out : string
val job_id : string option
val jobs : int
val join_cond : int
val keep_going : bool
val linter : string option
val linters_def_file : string list
val linters_def_folder : string list
val linters_developer_mode : bool
val linters_ignore_clang_failures : bool
val linters_validate_syntax_only : bool
val list_checkers : bool
val list_issue_types : bool
val liveness_dangerous_classes : Yojson.Basic.t
val max_nesting : int option
val merge : bool
val method_decls_info : string option
val ml_buckets : [ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ] list
val modified_lines : string option
val monitor_prop_size : bool
val nelseg : bool
val no_translate_libs : bool
val nullable_annotation : string option
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_params_in_non_strict : bool
val nullsafe_third_party_signatures : string option
val nullsafe_third_party_location_for_messaging_only : string option
val nullsafe_strict_containers : bool
val oom_threshold : int option
val only_cheap_debug : bool
val only_footprint : bool
val pmd_xml : bool
val print_active_checkers : bool
val print_builtins : bool
val print_logs : bool
val print_types : bool
val print_using_diff : bool
val procedures : bool
val procedures_attributes : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val process_clang_ast : bool
val clang_frontend_action_string : string
val profiler_samples : string option
val progress_bar : [ `MultiLine | `Plain | `Quiet ]
val project_root : string
val pudge : bool
val pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_recency_limit : int
val pulse_intraprocedural_only : bool
val pulse_max_disjuncts : int
val pulse_model_abort : string list
val pulse_model_alloc_pattern : Str.regexp option
val pulse_model_release_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_widen_threshold : int
val pure_by_default : bool
val quandary_endpoints : Yojson.Basic.t
val quandary_sanitizers : Yojson.Basic.t
val quandary_sinks : Yojson.Basic.t
val quandary_sources : Yojson.Basic.t
val quiet : bool
val racerd_guardedby : bool
val reactive_mode : bool
val reanalyze : bool
val report_blacklist_files_containing : string list
val report_console_limit : int option
val report_current : string option
val report_formatter : [ `No_formatter | `Phabricator_formatter ]
val report_path_regex_blacklist : string list
val report_path_regex_whitelist : string list
val report_previous : string option
val report_suppress_errors : string list
val reports_include_ml_loc : bool
val rest : string list
val results_dir : string
val scheduler : scheduler
val scuba_logging : bool
val scuba_normals : string IStdlib.IStd.String.Map.t
val scuba_tags : string list IStdlib.IStd.String.Map.t
val seconds_per_iteration : float option
val select : int option
val show_buckets : bool
val siof_check_iostreams : bool
val siof_safe_methods : string list
val skip_analysis_in_path : string list
val skip_analysis_in_path_skips_compilation : bool
val skip_duplicated_types : bool
val skip_translation_headers : string list
val sledge_timers : bool
val source_files : bool
val source_files_cfg : bool
val source_files_filter : string option
val source_files_freshly_captured : bool
val source_files_procedure_names : bool
val source_files_type_environment : bool
val source_preview : bool
val sqlite_cache_size : int
val sqlite_page_size : int
val sqlite_lock_timeout : int
val sqlite_vfs : string option
val sqlite_write_daemon : bool
val starvation_skip_analysis : Yojson.Basic.t
val starvation_strict_mode : bool
val starvation_whole_program : bool
val subtype_multirange : bool
val summaries_caches_max_size : int
val symops_per_iteration : int option
val test_determinator : bool
val export_changed_functions : bool
val test_filtering : bool
val testing_mode : bool
val threadsafe_aliases : Yojson.Basic.t
val topl_properties : string list
val trace_error : bool
val trace_events : bool
val trace_join : bool
val trace_ondemand : bool
val trace_rearrange : bool
val trace_topl : bool
val tv_commit : string option
val tv_limit : int
val tv_limit_filtered : int
val type_size : bool
val uninit_interproc : bool
val unsafe_malloc : bool
val worklist_mode : int
val write_dotty : bool
val write_html : bool
val write_html_whitelist_regex : string list
val write_website : string option
val xcode_developer_dir : string option
val xcpretty : bool

Configuration values derived from command-line options

val dynamic_dispatch : bool
val toplevel_results_dir : string

In some integrations, eg Buck, infer subprocesses started by the build system (started by the toplevel infer process) will have their own results directory; this points to the results directory of the toplevel infer process, which can be useful for, eg, storing debug info. In other cases this is equal to results_dir.

val is_in_custom_symbols : string -> string -> bool

Does named symbol match any prefix in the named custom symbol list?

val java_package_is_external : string -> bool

Check if a Java package is external to the repository

val execution_id : IStdlib.IStd.Int64.t

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list IStdlib.IStd.ref

Command Line Interface Documentation

val print_usage_exit : unit -> 'a
\ No newline at end of file +Config (infer.IBase.Config)

Module IBase.Config

type os_type =
| Unix
| Win32
| Cygwin
type build_system =
| BAnt
| BBuck
| BClang
| BGradle
| BJava
| BJavac
| BMake
| BMvn
| BNdk
| BXcode
type scheduler =
| File
| Restart
| SyntacticCallGraph
val equal_scheduler : scheduler -> scheduler -> bool
val build_system_of_exe_name : string -> build_system
val string_of_build_system : build_system -> string
val env_inside_maven : IStdlib.IStd.Unix.env

Constant configuration values

val anonymous_block_num_sep : string
val anonymous_block_prefix : string
val append_buck_flavors : string list
val assign : string
val biabduction_models_dir : string
val biabduction_models_jar : string
val biabduction_models_src_dir : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val clang_exe_aliases : string list
val clang_initializer_prefix : string
val clang_inner_destructor_prefix : string
val clang_plugin_path : string
val classpath : string option
val default_failure_name : string
val dotty_frontend_output : string
val etc_dir : string
val fail_on_issue_exit_code : int
val fcp_dir : string
val idempotent_getters : bool
val initial_analysis_time : float
val ivar_attributes : string
val java_lambda_marker_infix : string

marker to recognize methods generated by javalib to eliminate lambdas

val lib_dir : string
val load_average : float option
val max_narrows : int
val max_widens : int
val meet_level : int
val nsnotification_center_checker_backend : bool
val os_type : os_type
val passthroughs : bool
val patterns_modeled_expensive : string * Yojson.Basic.t
val patterns_never_returning_null : string * Yojson.Basic.t
val patterns_skip_implementation : string * Yojson.Basic.t
val patterns_skip_translation : string * Yojson.Basic.t
val pp_version : Stdlib.Format.formatter -> unit -> unit
val property_attributes : string
val relative_path_backtrack : int
val report : bool
val report_custom_error : bool
val report_force_relative_path : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val sourcepath : string option
val sources : string list
val specs_files_suffix : string
val trace_absarray : bool
val unsafe_unret : string
val incremental_analysis : bool
val weak : string
val whitelisted_cpp_classes : string list
val whitelisted_cpp_methods : string list
val wrappers_dir : string

Configuration values specified by command-line options

val abs_struct : int
val abs_val : int
val allow_leak : bool
val annotation_reachability_cxx : Yojson.Basic.t
val annotation_reachability_cxx_sources : Yojson.Basic.t
val annotation_reachability_custom_pairs : Yojson.Basic.t
val anon_args : string list
val array_level : int
val biabduction_models_mode : bool
val bo_debug : int
val bo_field_depth_limit : int option
val bootclasspath : string option
val buck : bool
val buck_blacklist : string list
val buck_build_args : string list
val buck_build_args_no_inline : string list
val buck_cache_mode : bool
val buck_merge_all_deps : bool
val buck_mode : BuckMode.t option
val buck_out_gen : string
val buck_targets_blacklist : string list
val call_graph_schedule : bool
val capture : bool
val capture_blacklist : string option
val censor_report : ((bool * Str.regexp) * (bool * Str.regexp) * string) list
val changed_files_index : string option
val check_version : string option
val clang_biniou_file : string option
val clang_compound_literal_init_limit : int
val clang_extra_flags : string list
val clang_blacklisted_flags : string list
val clang_blacklisted_flags_with_arg : string list
val clang_ignore_regex : string option
val clang_isystem_to_override_regex : Str.regexp option
val clang_idirafter_to_override_regex : Str.regexp option
val clang_libcxx_include_to_override_regex : string option
val command : ATDGenerated.InferCommand.t
val continue_analysis : bool
val continue_capture : bool
val costs_current : string option
val cost_issues_tests : string option
val costs_previous : string option
val cxx : bool
val cxx_scope_guards : Yojson.Basic.t
val deduplicate : bool
val debug_exceptions : bool
val debug_level_analysis : int
val debug_level_capture : int
val debug_level_linters : int
val debug_level_test_determinator : int
val debug_mode : bool
val default_linters : bool
val dependency_mode : bool
val developer_mode : bool
val differential_filter_files : string option
val differential_filter_set : [ `Introduced | `Fixed | `Preexisting ] list
val dotty_cfg_libs : bool
val dump_duplicate_symbols : bool
val eradicate_condition_redundant : bool
val eradicate_field_over_annotated : bool
val eradicate_return_over_annotated : bool
val eradicate_verbose : bool
val fail_on_bug : bool
val fcp_apple_clang : string option
val fcp_syntax_only : bool
val file_renamings : string option
val filter_paths : bool
val filtering : bool
val force_delete_results_dir : bool
val force_integration : build_system option
val from_json_report : string
val from_json_costs_report : string
val frontend_stats : bool
val frontend_tests : bool
val function_pointer_specialization : bool
val generated_classes : string option
val genrule_mode : bool
val get_linter_doc_url : linter_id:string -> string option
val help_checker : Checker.t list
val help_issue_type : IssueType.t list
val hoisting_report_only_expensive : bool
val html : bool
val icfg_dotty_outfile : string option
val infer_is_clang : bool
val infer_is_javac : bool
val implicit_sdk_root : string option
val inclusive_cost : bool
val inferconfig_file : string option
val inferconfig_dir : string option
val is_checker_enabled : Checker.t -> bool
val issues_tests : string option
val issues_tests_fields : IssuesTestField.t list
val iterations : int
val java_debug_source_file_info : string option
val java_jar_compiler : string option
val java_version : int option
val javac_classes_out : string
val job_id : string option
val jobs : int
val join_cond : int
val keep_going : bool
val linter : string option
val linters_def_file : string list
val linters_def_folder : string list
val linters_developer_mode : bool
val linters_ignore_clang_failures : bool
val linters_validate_syntax_only : bool
val list_checkers : bool
val list_issue_types : bool
val liveness_dangerous_classes : Yojson.Basic.t
val max_nesting : int option
val merge : bool
val method_decls_info : string option
val ml_buckets : [ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ] list
val modified_lines : string option
val monitor_prop_size : bool
val nelseg : bool
val no_translate_libs : bool
val nullable_annotation : string option
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_params_in_non_strict : bool
val nullsafe_third_party_signatures : string option
val nullsafe_third_party_location_for_messaging_only : string option
val nullsafe_strict_containers : bool
val oom_threshold : int option
val only_cheap_debug : bool
val only_footprint : bool
val pmd_xml : bool
val print_active_checkers : bool
val print_builtins : bool
val print_jbir : bool
val print_logs : bool
val print_types : bool
val print_using_diff : bool
val procedures : bool
val procedures_attributes : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val process_clang_ast : bool
val clang_frontend_action_string : string
val profiler_samples : string option
val progress_bar : [ `MultiLine | `Plain | `Quiet ]
val project_root : string
val pudge : bool
val pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_recency_limit : int
val pulse_intraprocedural_only : bool
val pulse_max_disjuncts : int
val pulse_model_abort : string list
val pulse_model_alloc_pattern : Str.regexp option
val pulse_model_release_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_widen_threshold : int
val pure_by_default : bool
val quandary_endpoints : Yojson.Basic.t
val quandary_sanitizers : Yojson.Basic.t
val quandary_sinks : Yojson.Basic.t
val quandary_sources : Yojson.Basic.t
val quiet : bool
val racerd_guardedby : bool
val reactive_mode : bool
val reanalyze : bool
val report_blacklist_files_containing : string list
val report_console_limit : int option
val report_current : string option
val report_formatter : [ `No_formatter | `Phabricator_formatter ]
val report_path_regex_blacklist : string list
val report_path_regex_whitelist : string list
val report_previous : string option
val report_suppress_errors : string list
val reports_include_ml_loc : bool
val rest : string list
val results_dir : string
val scheduler : scheduler
val scuba_logging : bool
val scuba_normals : string IStdlib.IStd.String.Map.t
val scuba_tags : string list IStdlib.IStd.String.Map.t
val seconds_per_iteration : float option
val select : int option
val show_buckets : bool
val siof_check_iostreams : bool
val siof_safe_methods : string list
val skip_analysis_in_path : string list
val skip_analysis_in_path_skips_compilation : bool
val skip_duplicated_types : bool
val skip_translation_headers : string list
val sledge_timers : bool
val source_files : bool
val source_files_cfg : bool
val source_files_filter : string option
val source_files_freshly_captured : bool
val source_files_procedure_names : bool
val source_files_type_environment : bool
val source_preview : bool
val sqlite_cache_size : int
val sqlite_page_size : int
val sqlite_lock_timeout : int
val sqlite_vfs : string option
val sqlite_write_daemon : bool
val starvation_skip_analysis : Yojson.Basic.t
val starvation_strict_mode : bool
val starvation_whole_program : bool
val subtype_multirange : bool
val summaries_caches_max_size : int
val symops_per_iteration : int option
val test_determinator : bool
val export_changed_functions : bool
val test_filtering : bool
val testing_mode : bool
val threadsafe_aliases : Yojson.Basic.t
val topl_properties : string list
val trace_error : bool
val trace_events : bool
val trace_join : bool
val trace_ondemand : bool
val trace_rearrange : bool
val trace_topl : bool
val tv_commit : string option
val tv_limit : int
val tv_limit_filtered : int
val type_size : bool
val uninit_interproc : bool
val unsafe_malloc : bool
val worklist_mode : int
val write_dotty : bool
val write_html : bool
val write_html_whitelist_regex : string list
val write_website : string option
val xcode_developer_dir : string option
val xcpretty : bool

Configuration values derived from command-line options

val dynamic_dispatch : bool
val toplevel_results_dir : string

In some integrations, eg Buck, infer subprocesses started by the build system (started by the toplevel infer process) will have their own results directory; this points to the results directory of the toplevel infer process, which can be useful for, eg, storing debug info. In other cases this is equal to results_dir.

val is_in_custom_symbols : string -> string -> bool

Does named symbol match any prefix in the named custom symbol list?

val java_package_is_external : string -> bool

Check if a Java package is external to the repository

val execution_id : IStdlib.IStd.Int64.t

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list IStdlib.IStd.ref

Command Line Interface Documentation

val print_usage_exit : unit -> 'a
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase/IssueType/index.html b/website/static/odoc/next/infer/IBase/IssueType/index.html index ca9a31a9c..c8eb3c6e2 100644 --- a/website/static/odoc/next/infer/IBase/IssueType/index.html +++ b/website/static/odoc/next/infer/IBase/IssueType/index.html @@ -1,2 +1,2 @@ -IssueType (infer.IBase.IssueType)

Module IBase.IssueType

type visibility =
| User

always add to error log

| Developer

only add to error log in some debug modes

| Silent

never add to error log

visibility of the issue type

val compare_visibility : visibility -> visibility -> int
val equal_visibility : visibility -> visibility -> bool
val string_of_visibility : visibility -> string
type severity =
| Like
| Info
| Advice
| Warning
| Error

severity of the report

val compare_severity : severity -> severity -> int
val equal_severity : severity -> severity -> bool
val all_of_severity : severity list
val string_of_severity : severity -> string
type t = private {
unique_id : string;
checker : Checker.t;
visibility : visibility;
user_documentation : string option;
mutable default_severity : severity;

used for documentation but can be overriden at report time

mutable enabled : bool;
mutable hum : string;
mutable doc_url : string option;
mutable linters_def_file : string option;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val all_issues : unit -> t list

all the issues declared so far

val pp : Stdlib.Format.formatter -> t -> unit

pretty print a localised string

val find_from_string : id:string -> t option

return the issue type if it was previously registered

val register_dynamic : ?⁠enabled:bool -> ?⁠hum:string -> ?⁠doc_url:string -> linters_def_file:string option -> id:string -> ?⁠user_documentation:string -> severity -> Checker.t -> t

Create a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum`, `doc_url`, and `linters_def_file`, but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic AL issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type, eg in AL.

val checker_can_report : Checker.t -> t -> bool

Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.

val set_enabled : t -> bool -> unit
val abduction_case_not_implemented : t
val array_of_pointsto : t
val array_out_of_bounds_l1 : t
val array_out_of_bounds_l2 : t
val array_out_of_bounds_l3 : t
val assert_failure : t
val bad_footprint : t
val biabduction_analysis_stops : t
val buffer_overrun_l1 : t
val buffer_overrun_l2 : t
val buffer_overrun_l3 : t
val buffer_overrun_l4 : t
val buffer_overrun_l5 : t
val buffer_overrun_s2 : t
val buffer_overrun_u5 : t
val cannot_star : t
val captured_strong_self : t
val checkers_allocates_memory : t

Warning name when a performance critical method directly or indirectly calls a method allocating memory

val checkers_annotation_reachability_error : t
val checkers_calls_expensive_method : t

Warning name when a performance critical method directly or indirectly calls a method annotatd as expensive

val checkers_expensive_overrides_unexpensive : t

Warning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive

val checkers_fragment_retain_view : t
val checkers_immutable_cast : t
val checkers_printf_args : t
val class_cast_exception : t
val complexity_increase : kind:CostKind.t -> is_on_ui_thread:bool -> t
val component_factory_function : t
val component_file_cyclomatic_complexity : t
val component_file_line_count : t
val component_initializer_with_side_effects : t
val component_with_multiple_factory_methods : t
val component_with_unconventional_superclass : t
val condition_always_false : t
val condition_always_true : t
val config_checks_between_markers : t
val constant_address_dereference : t
val create_intent_from_uri : t
val cross_site_scripting : t
val dangling_pointer_dereference : t
val dangling_pointer_dereference_maybe : t
val dead_store : t
val deadlock : t
val divide_by_zero : t
val do_not_report : t

an issue type that should never be reported

val empty_vector_access : t
val eradicate_condition_redundant : t
val eradicate_field_not_initialized : t
val eradicate_field_not_nullable : t
val eradicate_field_over_annotated : t
val eradicate_inconsistent_subclass_parameter_annotation : t
val eradicate_inconsistent_subclass_return_annotation : t
val eradicate_redundant_nested_class_annotation : t
val eradicate_bad_nested_class_annotation : t
val eradicate_nullable_dereference : t
val eradicate_parameter_not_nullable : t
val eradicate_return_not_nullable : t
val eradicate_return_over_annotated : t
val eradicate_unvetted_third_party_in_nullsafe : t
val eradicate_unchecked_usage_in_nullsafe : t
val eradicate_meta_class_can_be_nullsafe : t
val eradicate_meta_class_needs_improvement : t
val eradicate_meta_class_is_nullsafe : t
val exposed_insecure_intent_handling : t
val failure_exe : t
val field_not_null_checked : t
val guardedby_violation_racerd : t
val impure_function : t
val inefficient_keyset_iterator : t
val inferbo_alloc_is_big : t
val inferbo_alloc_is_negative : t
val inferbo_alloc_is_zero : t
val inferbo_alloc_may_be_big : t
val inferbo_alloc_may_be_negative : t
val infinite_cost_call : kind:CostKind.t -> t
val inherently_dangerous_function : t
val insecure_intent_handling : t
val integer_overflow_l1 : t
val integer_overflow_l2 : t
val integer_overflow_l5 : t
val integer_overflow_u5 : t
val interface_not_thread_safe : t
val internal_error : t
val invariant_call : t
val javascript_injection : t
val lab_resource_leak : t
val leak_after_array_abstraction : t
val leak_in_footprint : t
val leak_unknown_origin : t
val lockless_violation : t
val lock_consistency_violation : t
val logging_private_data : t
val expensive_loop_invariant_call : t
val memory_leak : t
val missing_fld : t
val missing_required_prop : t
val mixed_self_weakself : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val parameter_not_null_checked : t
val pointer_size_mismatch : t
val precondition_not_found : t
val precondition_not_met : t
val premature_nil_termination : t
val pulse_memory_leak : t
val pure_function : t
val quandary_taint_error : t
val resource_leak : t
val retain_cycle : t
val skip_function : t
val skip_pointer_dereference : t
val shell_injection : t
val shell_injection_risk : t
val sql_injection : t
val sql_injection_risk : t
val stack_variable_address_escape : t
val starvation : t
val static_initialization_order_fiasco : t
val strict_mode_violation : t
val strong_self_not_checked : t
val symexec_memory_error : t
val thread_safety_violation : t
val topl_error : t
val unary_minus_applied_to_unsigned_expression : t
val uninitialized_value : t
val unreachable_code_after : t
val use_after_delete : t
val use_after_free : t
val use_after_lifetime : t
val untrusted_buffer_access : t
val untrusted_deserialization : t
val untrusted_deserialization_risk : t
val untrusted_file : t
val untrusted_file_risk : t
val untrusted_heap_allocation : t
val untrusted_intent_creation : t
val untrusted_url_risk : t
val untrusted_environment_change_risk : t
val untrusted_variable_length_array : t
val user_controlled_sql_risk : t
val vector_invalidation : t
val weak_self_in_noescape_block : t
val wrong_argument_number : t
val unreachable_cost_call : kind:CostKind.t -> t
\ No newline at end of file +IssueType (infer.IBase.IssueType)

Module IBase.IssueType

type visibility =
| User

always add to error log

| Developer

only add to error log in some debug modes

| Silent

never add to error log

visibility of the issue type

val compare_visibility : visibility -> visibility -> int
val equal_visibility : visibility -> visibility -> bool
val string_of_visibility : visibility -> string
type severity =
| Like
| Info
| Advice
| Warning
| Error

severity of the report

val compare_severity : severity -> severity -> int
val equal_severity : severity -> severity -> bool
val all_of_severity : severity list
val string_of_severity : severity -> string
type t = private {
unique_id : string;
checker : Checker.t;
visibility : visibility;
user_documentation : string option;
mutable default_severity : severity;

used for documentation but can be overriden at report time

mutable enabled : bool;
mutable hum : string;
mutable doc_url : string option;
mutable linters_def_file : string option;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val all_issues : unit -> t list

all the issues declared so far

val pp : Stdlib.Format.formatter -> t -> unit

pretty print a localised string

val find_from_string : id:string -> t option

return the issue type if it was previously registered

val register_dynamic : ?⁠enabled:bool -> ?⁠hum:string -> ?⁠doc_url:string -> linters_def_file:string option -> id:string -> ?⁠user_documentation:string -> severity -> Checker.t -> t

Create a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum`, `doc_url`, and `linters_def_file`, but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic AL issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type, eg in AL.

val checker_can_report : Checker.t -> t -> bool

Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.

val set_enabled : t -> bool -> unit
val abduction_case_not_implemented : t
val array_of_pointsto : t
val array_out_of_bounds_l1 : t
val array_out_of_bounds_l2 : t
val array_out_of_bounds_l3 : t
val assert_failure : t
val bad_footprint : t
val biabduction_analysis_stops : t
val buffer_overrun_l1 : t
val buffer_overrun_l2 : t
val buffer_overrun_l3 : t
val buffer_overrun_l4 : t
val buffer_overrun_l5 : t
val buffer_overrun_s2 : t
val buffer_overrun_u5 : t
val cannot_star : t
val captured_strong_self : t
val checkers_allocates_memory : t

Warning name when a performance critical method directly or indirectly calls a method allocating memory

val checkers_annotation_reachability_error : t
val checkers_calls_expensive_method : t

Warning name when a performance critical method directly or indirectly calls a method annotatd as expensive

val checkers_expensive_overrides_unexpensive : t

Warning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive

val checkers_fragment_retain_view : t
val checkers_immutable_cast : t
val checkers_printf_args : t
val class_cast_exception : t
val complexity_increase : kind:CostKind.t -> is_on_ui_thread:bool -> t
val component_with_multiple_factory_methods : t
val condition_always_false : t
val condition_always_true : t
val config_checks_between_markers : t
val constant_address_dereference : t
val create_intent_from_uri : t
val cross_site_scripting : t
val dangling_pointer_dereference : t
val dangling_pointer_dereference_maybe : t
val dead_store : t
val deadlock : t
val divide_by_zero : t
val do_not_report : t

an issue type that should never be reported

val empty_vector_access : t
val eradicate_condition_redundant : t
val eradicate_field_not_initialized : t
val eradicate_field_not_nullable : t
val eradicate_field_over_annotated : t
val eradicate_inconsistent_subclass_parameter_annotation : t
val eradicate_inconsistent_subclass_return_annotation : t
val eradicate_redundant_nested_class_annotation : t
val eradicate_bad_nested_class_annotation : t
val eradicate_nullable_dereference : t
val eradicate_parameter_not_nullable : t
val eradicate_return_not_nullable : t
val eradicate_return_over_annotated : t
val eradicate_unvetted_third_party_in_nullsafe : t
val eradicate_unchecked_usage_in_nullsafe : t
val eradicate_meta_class_can_be_nullsafe : t
val eradicate_meta_class_needs_improvement : t
val eradicate_meta_class_is_nullsafe : t
val exposed_insecure_intent_handling : t
val failure_exe : t
val field_not_null_checked : t
val guardedby_violation_racerd : t
val impure_function : t
val inefficient_keyset_iterator : t
val inferbo_alloc_is_big : t
val inferbo_alloc_is_negative : t
val inferbo_alloc_is_zero : t
val inferbo_alloc_may_be_big : t
val inferbo_alloc_may_be_negative : t
val infinite_cost_call : kind:CostKind.t -> t
val inherently_dangerous_function : t
val insecure_intent_handling : t
val integer_overflow_l1 : t
val integer_overflow_l2 : t
val integer_overflow_l5 : t
val integer_overflow_u5 : t
val interface_not_thread_safe : t
val internal_error : t
val invariant_call : t
val javascript_injection : t
val lab_resource_leak : t
val leak_after_array_abstraction : t
val leak_in_footprint : t
val leak_unknown_origin : t
val lockless_violation : t
val lock_consistency_violation : t
val logging_private_data : t
val expensive_loop_invariant_call : t
val memory_leak : t
val missing_fld : t
val missing_required_prop : t
val mixed_self_weakself : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val parameter_not_null_checked : t
val precondition_not_found : t
val precondition_not_met : t
val premature_nil_termination : t
val pulse_memory_leak : t
val pure_function : t
val quandary_taint_error : t
val resource_leak : t
val retain_cycle : t
val skip_function : t
val shell_injection : t
val shell_injection_risk : t
val sql_injection : t
val sql_injection_risk : t
val stack_variable_address_escape : t
val starvation : t
val static_initialization_order_fiasco : t
val strict_mode_violation : t
val strong_self_not_checked : t
val symexec_memory_error : t
val thread_safety_violation : t
val topl_error : t
val uninitialized_value : t
val unreachable_code_after : t
val use_after_delete : t
val use_after_free : t
val use_after_lifetime : t
val untrusted_buffer_access : t
val untrusted_deserialization : t
val untrusted_deserialization_risk : t
val untrusted_file : t
val untrusted_file_risk : t
val untrusted_heap_allocation : t
val untrusted_intent_creation : t
val untrusted_url_risk : t
val untrusted_environment_change_risk : t
val untrusted_variable_length_array : t
val user_controlled_sql_risk : t
val vector_invalidation : t
val weak_self_in_noescape_block : t
val wrong_argument_number : t
val unreachable_cost_call : kind:CostKind.t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase/SourceFile/index.html b/website/static/odoc/next/infer/IBase/SourceFile/index.html index 82e05d714..6a115ae58 100644 --- a/website/static/odoc/next/infer/IBase/SourceFile/index.html +++ b/website/static/odoc/next/infer/IBase/SourceFile/index.html @@ -1,2 +1,2 @@ -SourceFile (infer.IBase.SourceFile)

Module IBase.SourceFile

type t
val compare : t -> t -> int
module Map : IStdlib.IStd.Caml.Map.S with type Map.key = t

Maps from source_file

module Set : IStdlib.IStd.Caml.Set.S with type Set.elt = t

Set of source files

module Hash : IStdlib.IStd.Caml.Hashtbl.S with type Hash.key = t
val is_invalid : t -> bool

Is the source file the invalid source file?

val changed_sources_from_changed_files : string list -> Set.t

Set of files read from --changed-files-index file, None if option not specified NOTE: it may include extra source_files if --changed-files-index contains paths to header files

val invalid : string -> t

Invalid source file

val equal : t -> t -> bool

equality of source files

val from_abs_path : ?⁠warn_on_error:bool -> string -> t

create source file from absolute path. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val create : ?⁠warn_on_error:bool -> string -> t

Create a SourceFile from a given path. If relative, it assumes it is w.r.t. project root. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val is_biabduction_model : t -> bool
val is_under_project_root : t -> bool

Returns true if the file is in project root

val line_count : t -> int

compute line count of a source file

val of_header : ?⁠warn_on_error:bool -> t -> t option

Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given SourceFile (e.g. if it does not exist).

val pp : Stdlib.Format.formatter -> t -> unit

pretty print t

val to_abs_path : t -> string

get the full path of a source file

val to_rel_path : t -> string

get the relative path of a source file

val to_string : ?⁠force_relative:bool -> t -> string

convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames

module SQLite : SqliteUtils.Data with type t = t
\ No newline at end of file +SourceFile (infer.IBase.SourceFile)

Module IBase.SourceFile

type t
val compare : t -> t -> int
module Map : IStdlib.IStd.Caml.Map.S with type Map.key = t

Maps from source_file

module Set : IStdlib.IStd.Caml.Set.S with type Set.elt = t

Set of source files

module Hash : IStdlib.IStd.Caml.Hashtbl.S with type Hash.key = t
val is_invalid : t -> bool

Is the source file the invalid source file?

val changed_sources_from_changed_files : string list -> Set.t

Set of files read from --changed-files-index file, None if option not specified NOTE: it may include extra source_files if --changed-files-index contains paths to header files

val invalid : string -> t

Invalid source file

val equal : t -> t -> bool

equality of source files

val from_abs_path : ?⁠warn_on_error:bool -> string -> t

create source file from absolute path. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val create : ?⁠warn_on_error:bool -> string -> t

Create a SourceFile from a given path. If relative, it assumes it is w.r.t. project root. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val is_biabduction_model : t -> bool
val is_under_project_root : t -> bool

Returns true if the file is in project root

val of_header : ?⁠warn_on_error:bool -> t -> t option

Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given SourceFile (e.g. if it does not exist).

val pp : Stdlib.Format.formatter -> t -> unit

pretty print t

val to_abs_path : t -> string

get the full path of a source file

val to_rel_path : t -> string

get the relative path of a source file

val to_string : ?⁠force_relative:bool -> t -> string

convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames

module SQLite : SqliteUtils.Data with type t = t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase/Utils/index.html b/website/static/odoc/next/infer/IBase/Utils/index.html index d82b54212..d7bdb1b60 100644 --- a/website/static/odoc/next/infer/IBase/Utils/index.html +++ b/website/static/odoc/next/infer/IBase/Utils/index.html @@ -1,2 +1,2 @@ -Utils (infer.IBase.Utils)

Module IBase.Utils

val find_files : path:string -> extension:string -> string list

recursively traverse a path for files ending with a given extension

val fold_folders : init:'acc -> f:('acc -> string -> 'acc) -> path:string -> 'acc

recursively traverse a path for folders, returning resuls by a given fold function

val string_crc_hex32 : string -> string

Compute a 32-character hexadecimal crc using the Digest module

val read_file : string -> (string list, string) IStdlib.IStd.Result.t

read a source file and return a list of lines

val filename_to_absolute : root:string -> string -> string

Convert a filename to an absolute one if it is relative, and normalize "." and ".."

val filename_to_relative : ?⁠force_full_backtrack:bool -> ?⁠backtrack:int -> root:string -> string -> string option

Convert an absolute filename to one relative to a root directory. Returns None if filename is not under root. The backtrack level sets the maximum level of steps in the parent directories to search for a common prefix

type outfile = {
fname : string;

name of the file

out_c : IStdlib.IStd.Out_channel.t;

output channel

fmt : Stdlib.Format.formatter;

formatter for printing

}

type for files used for printing

val create_outfile : string -> outfile option

create an outfile for the command line, the boolean indicates whether to do demangling when closing the file

val close_outf : outfile -> unit

close an outfile

val directory_fold : ('a -> string -> 'a) -> 'a -> string -> 'a

Functional fold function over all the file of a directory

val directory_iter : (string -> unit) -> string -> unit

Functional iter function over all the file of a directory

val directory_is_empty : string -> bool

Returns true if a given directory is empty. The directory is assumed to exist.

val read_json_file : string -> (Yojson.Basic.t, string) IStdlib.IStd.Result.t
val with_file_in : string -> f:(IStdlib.IStd.In_channel.t -> 'a) -> 'a
val with_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a
type file_lock = {
file : string;
oc : Stdlib.out_channel;
fd : Core.Unix.File_descr.t;
lock : unit -> unit;
unlock : unit -> unit;
}
val create_file_lock : unit -> file_lock
val with_file_lock : file_lock:file_lock -> f:(unit -> 'a) -> 'a
val with_intermediate_temp_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a

like with_file_out but uses a fresh intermediate temporary file and rename to avoid write-write races

val write_json_to_file : string -> Yojson.Basic.t -> unit
val consume_in : IStdlib.IStd.In_channel.t -> unit

consume and ignore all the lines from the channel until End_of_file is reached

val echo_in : IStdlib.IStd.In_channel.t -> unit

echo the lines we get to stdout until End_of_file is reached

val with_channel_in : f:(string -> unit) -> IStdlib.IStd.In_channel.t -> unit
val with_process_in : string -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a * IStdlib.IStd.Unix.Exit_or_signal.t
val create_dir : string -> unit

recursively create a directory if it does not exist already

val out_channel_create_with_dir : IStdlib.IStd.Filename.t -> IStdlib.IStd.Out_channel.t

create an out channel with creating missing directories

val realpath : ?⁠warn_on_error:bool -> string -> string

realpath warn_on_error path returns path with all symbolic links resolved. It caches results of previous calls to avoid expensive system calls. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val suppress_stderr2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

wraps a function expecting 2 arguments in another that temporarily redirects stderr to /dev/null for the duration of the function call

val compare_versions : string -> string -> int

compare_versions v1 v2 returns 1 if v1 is newer than v2, -1 if v1 is older than v2 and 0 if they are the same version. The versions are strings of the shape "n.m.t", the order is lexicographic.

val rmtree : string -> unit

rmtree path removes path and, if path is a directory, recursively removes its contents

val try_finally_swallow_timeout : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a

Calls f then finally even if f raised an exception. The original exception is reraised afterwards. Where possible use SymOp.try_finally to avoid swallowing timeouts.

val better_hash : 'a -> IStdlib.IStd.Caml.Digest.t

Hashtbl.hash only hashes the first 10 meaningful values, better_hash uses everything.

delete temporary file on exit

val strip_balanced_once : drop:(char -> bool) -> string -> string

drop at most one layer of well-balanced first and last characters satisfying drop from the string; for instance, strip_balanced ~drop:(function | 'a' | 'x' -> true | _ -> false) "xaabax" returns "aaba"

val assoc_of_yojson : Yojson.Basic.t -> src:string -> (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t

Verify we have a json object (or empty list) and return the corresponding assoc list. Otherwise die with a message including src.

val string_of_yojson : Yojson.Basic.t -> src:string -> string

Verify we have a json string and return the corresponding ocaml string. Otherwise die with a message including src.

val string_list_of_yojson : Yojson.Basic.t -> src:string -> string list

Verify we have a json list of strings and return the corresponding ocaml string list. Otherwise die with a message including src.

val yojson_lookup : (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t -> string -> src:string -> f:(Yojson.Basic.t -> src:string -> 'a) -> default:'a -> 'a

Lookup a json value on an assoc list. If not present, returns default. Otherwise returns (f json_value ~src) where src has element name appended. f is typically one of the above _of_yojson functions.

val timeit : f:(unit -> 'a) -> 'a * int

Returns the execution time of f in milliseconds together with its result

val do_in_dir : dir:string -> f:(unit -> 'a) -> 'a

executes f after cding into dir and then restores original cwd

val get_available_memory_MB : unit -> int option

On Linux systems, return Some x where MemAvailable x is in /proc/meminfo. Returns None in all other cases.

val iter_infer_deps : project_root:string -> f:(string -> unit) -> string -> unit

Parse each line of the given infer_deps.txt file (split on tabs, assume 3 elements per line) and run f on the third element. project_root is an argument to avoid dependency cycles.

val numcores : int
  • On Linux return the number of physical cores (sockets * cores per socket).
  • On Darwin and Windows returns half of the number of CPUs since most processors have 2 hardware threads per core.
val set_best_cpu_for : int -> unit

Pins processes to CPUs aiming to saturate physical cores evenly

val zip_fold_filenames : init:'a -> f:('a -> string -> 'a) -> zip_filename:string -> 'a

fold over each filename in the given zip_filename.

\ No newline at end of file +Utils (infer.IBase.Utils)

Module IBase.Utils

val find_files : path:string -> extension:string -> string list

recursively traverse a path for files ending with a given extension

val fold_folders : init:'acc -> f:('acc -> string -> 'acc) -> path:string -> 'acc

recursively traverse a path for folders, returning resuls by a given fold function

val string_crc_hex32 : string -> string

Compute a 32-character hexadecimal crc using the Digest module

val read_file : string -> (string list, string) IStdlib.IStd.Result.t

read a source file and return a list of lines

val filename_to_absolute : root:string -> string -> string

Convert a filename to an absolute one if it is relative, and normalize "." and ".."

val filename_to_relative : ?⁠force_full_backtrack:bool -> ?⁠backtrack:int -> root:string -> string -> string option

Convert an absolute filename to one relative to a root directory. Returns None if filename is not under root. The backtrack level sets the maximum level of steps in the parent directories to search for a common prefix

type outfile = {
fname : string;

name of the file

out_c : IStdlib.IStd.Out_channel.t;

output channel

fmt : Stdlib.Format.formatter;

formatter for printing

}

type for files used for printing

val create_outfile : string -> outfile option

create an outfile for the command line, the boolean indicates whether to do demangling when closing the file

val close_outf : outfile -> unit

close an outfile

val directory_fold : ('a -> string -> 'a) -> 'a -> string -> 'a

Functional fold function over all the file of a directory

val directory_iter : (string -> unit) -> string -> unit

Functional iter function over all the file of a directory

val directory_is_empty : string -> bool

Returns true if a given directory is empty. The directory is assumed to exist.

val read_json_file : string -> (Yojson.Basic.t, string) IStdlib.IStd.Result.t
val with_file_in : string -> f:(IStdlib.IStd.In_channel.t -> 'a) -> 'a
val with_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a
type file_lock = {
file : string;
oc : Stdlib.out_channel;
fd : Core.Unix.File_descr.t;
lock : unit -> unit;
unlock : unit -> unit;
}
val create_file_lock : unit -> file_lock
val with_file_lock : file_lock:file_lock -> f:(unit -> 'a) -> 'a
val with_intermediate_temp_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a

like with_file_out but uses a fresh intermediate temporary file and rename to avoid write-write races

val write_json_to_file : string -> Yojson.Basic.t -> unit
val consume_in : IStdlib.IStd.In_channel.t -> unit

consume and ignore all the lines from the channel until End_of_file is reached

val echo_in : IStdlib.IStd.In_channel.t -> unit

echo the lines we get to stdout until End_of_file is reached

val with_channel_in : f:(string -> unit) -> IStdlib.IStd.In_channel.t -> unit
val with_process_in : string -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a * IStdlib.IStd.Unix.Exit_or_signal.t
val create_dir : string -> unit

recursively create a directory if it does not exist already

val out_channel_create_with_dir : IStdlib.IStd.Filename.t -> IStdlib.IStd.Out_channel.t

create an out channel with creating missing directories

val realpath : ?⁠warn_on_error:bool -> string -> string

realpath warn_on_error path returns path with all symbolic links resolved. It caches results of previous calls to avoid expensive system calls. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val suppress_stderr2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

wraps a function expecting 2 arguments in another that temporarily redirects stderr to /dev/null for the duration of the function call

val rmtree : string -> unit

rmtree path removes path and, if path is a directory, recursively removes its contents

val try_finally_swallow_timeout : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a

Calls f then finally even if f raised an exception. The original exception is reraised afterwards. Where possible use SymOp.try_finally to avoid swallowing timeouts.

val better_hash : 'a -> IStdlib.IStd.Caml.Digest.t

Hashtbl.hash only hashes the first 10 meaningful values, better_hash uses everything.

delete temporary file on exit

val strip_balanced_once : drop:(char -> bool) -> string -> string

drop at most one layer of well-balanced first and last characters satisfying drop from the string; for instance, strip_balanced ~drop:(function | 'a' | 'x' -> true | _ -> false) "xaabax" returns "aaba"

val assoc_of_yojson : Yojson.Basic.t -> src:string -> (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t

Verify we have a json object (or empty list) and return the corresponding assoc list. Otherwise die with a message including src.

val string_of_yojson : Yojson.Basic.t -> src:string -> string

Verify we have a json string and return the corresponding ocaml string. Otherwise die with a message including src.

val string_list_of_yojson : Yojson.Basic.t -> src:string -> string list

Verify we have a json list of strings and return the corresponding ocaml string list. Otherwise die with a message including src.

val yojson_lookup : (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t -> string -> src:string -> f:(Yojson.Basic.t -> src:string -> 'a) -> default:'a -> 'a

Lookup a json value on an assoc list. If not present, returns default. Otherwise returns (f json_value ~src) where src has element name appended. f is typically one of the above _of_yojson functions.

val timeit : f:(unit -> 'a) -> 'a * int

Returns the execution time of f in milliseconds together with its result

val do_in_dir : dir:string -> f:(unit -> 'a) -> 'a

executes f after cding into dir and then restores original cwd

val get_available_memory_MB : unit -> int option

On Linux systems, return Some x where MemAvailable x is in /proc/meminfo. Returns None in all other cases.

val iter_infer_deps : project_root:string -> f:(string -> unit) -> string -> unit

Parse each line of the given infer_deps.txt file (split on tabs, assume 3 elements per line) and run f on the third element. project_root is an argument to avoid dependency cycles.

val numcores : int
  • On Linux return the number of physical cores (sockets * cores per socket).
  • On Darwin and Windows returns half of the number of CPUs since most processors have 2 hardware threads per core.
val set_best_cpu_for : int -> unit

Pins processes to CPUs aiming to saturate physical cores evenly

val zip_fold_filenames : init:'a -> f:('a -> string -> 'a) -> zip_filename:string -> 'a

fold over each filename in the given zip_filename.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase__Config/index.html b/website/static/odoc/next/infer/IBase__Config/index.html index 018641785..4382dd18f 100644 --- a/website/static/odoc/next/infer/IBase__Config/index.html +++ b/website/static/odoc/next/infer/IBase__Config/index.html @@ -1,2 +1,2 @@ -IBase__Config (infer.IBase__Config)

Module IBase__Config

type os_type =
| Unix
| Win32
| Cygwin
type build_system =
| BAnt
| BBuck
| BClang
| BGradle
| BJava
| BJavac
| BMake
| BMvn
| BNdk
| BXcode
type scheduler =
| File
| Restart
| SyntacticCallGraph
val equal_scheduler : scheduler -> scheduler -> bool
val build_system_of_exe_name : string -> build_system
val string_of_build_system : build_system -> string
val env_inside_maven : IStdlib.IStd.Unix.env

Constant configuration values

val anonymous_block_num_sep : string
val anonymous_block_prefix : string
val append_buck_flavors : string list
val assign : string
val biabduction_models_dir : string
val biabduction_models_jar : string
val biabduction_models_src_dir : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val clang_exe_aliases : string list
val clang_initializer_prefix : string
val clang_inner_destructor_prefix : string
val clang_plugin_path : string
val classpath : string option
val default_failure_name : string
val dotty_frontend_output : string
val etc_dir : string
val fail_on_issue_exit_code : int
val fcp_dir : string
val idempotent_getters : bool
val initial_analysis_time : float
val ivar_attributes : string
val java_lambda_marker_infix : string

marker to recognize methods generated by javalib to eliminate lambdas

val lib_dir : string
val load_average : float option
val max_narrows : int
val max_widens : int
val meet_level : int
val nsnotification_center_checker_backend : bool
val os_type : os_type
val passthroughs : bool
val patterns_modeled_expensive : string * Yojson.Basic.t
val patterns_never_returning_null : string * Yojson.Basic.t
val patterns_skip_implementation : string * Yojson.Basic.t
val patterns_skip_translation : string * Yojson.Basic.t
val pp_version : Stdlib.Format.formatter -> unit -> unit
val property_attributes : string
val relative_path_backtrack : int
val report : bool
val report_custom_error : bool
val report_force_relative_path : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val sourcepath : string option
val sources : string list
val specs_files_suffix : string
val trace_absarray : bool
val unsafe_unret : string
val incremental_analysis : bool
val weak : string
val whitelisted_cpp_classes : string list
val whitelisted_cpp_methods : string list
val wrappers_dir : string

Configuration values specified by command-line options

type iphoneos_target_sdk_version_path_regex = {
path : Str.regexp;
version : string;
}
val abs_struct : int
val abs_val : int
val allow_leak : bool
val annotation_reachability_cxx : Yojson.Basic.t
val annotation_reachability_cxx_sources : Yojson.Basic.t
val annotation_reachability_custom_pairs : Yojson.Basic.t
val anon_args : string list
val array_level : int
val biabduction_models_mode : bool
val bo_debug : int
val bo_field_depth_limit : int option
val bootclasspath : string option
val buck : bool
val buck_blacklist : string list
val buck_build_args : string list
val buck_build_args_no_inline : string list
val buck_cache_mode : bool
val buck_merge_all_deps : bool
val buck_mode : IBase.BuckMode.t option
val buck_out_gen : string
val buck_targets_blacklist : string list
val call_graph_schedule : bool
val capture : bool
val capture_blacklist : string option
val censor_report : ((bool * Str.regexp) * (bool * Str.regexp) * string) list
val changed_files_index : string option
val check_version : string option
val clang_biniou_file : string option
val clang_compound_literal_init_limit : int
val clang_extra_flags : string list
val clang_blacklisted_flags : string list
val clang_blacklisted_flags_with_arg : string list
val clang_ignore_regex : string option
val clang_isystem_to_override_regex : Str.regexp option
val clang_idirafter_to_override_regex : Str.regexp option
val clang_libcxx_include_to_override_regex : string option
val command : ATDGenerated.InferCommand.t
val compute_analytics : bool
val continue_analysis : bool
val continue_capture : bool
val costs_current : string option
val cost_issues_tests : string option
val costs_previous : string option
val cxx : bool
val cxx_scope_guards : Yojson.Basic.t
val deduplicate : bool
val debug_exceptions : bool
val debug_level_analysis : int
val debug_level_capture : int
val debug_level_linters : int
val debug_level_test_determinator : int
val debug_mode : bool
val default_linters : bool
val dependency_mode : bool
val developer_mode : bool
val differential_filter_files : string option
val differential_filter_set : [ `Introduced | `Fixed | `Preexisting ] list
val dotty_cfg_libs : bool
val dump_duplicate_symbols : bool
val eradicate_condition_redundant : bool
val eradicate_field_over_annotated : bool
val eradicate_return_over_annotated : bool
val eradicate_verbose : bool
val fail_on_bug : bool
val fcp_apple_clang : string option
val fcp_syntax_only : bool
val file_renamings : string option
val filter_paths : bool
val filtering : bool
val force_delete_results_dir : bool
val force_integration : build_system option
val from_json_report : string
val from_json_costs_report : string
val frontend_stats : bool
val frontend_tests : bool
val function_pointer_specialization : bool
val generated_classes : string option
val genrule_mode : bool
val get_linter_doc_url : linter_id:string -> string option
val help_checker : IBase.Checker.t list
val help_issue_type : IBase.IssueType.t list
val hoisting_report_only_expensive : bool
val html : bool
val icfg_dotty_outfile : string option
val infer_is_clang : bool
val infer_is_javac : bool
val implicit_sdk_root : string option
val inclusive_cost : bool
val inferconfig_file : string option
val inferconfig_dir : string option
val iphoneos_target_sdk_version : string option
val iphoneos_target_sdk_version_path_regex : iphoneos_target_sdk_version_path_regex list
val is_checker_enabled : IBase.Checker.t -> bool
val issues_tests : string option
val issues_tests_fields : IBase.IssuesTestField.t list
val iterations : int
val java_debug_source_file_info : string option
val java_jar_compiler : string option
val java_version : int option
val javac_classes_out : string
val job_id : string option
val jobs : int
val join_cond : int
val keep_going : bool
val linter : string option
val linters_def_file : string list
val linters_def_folder : string list
val linters_developer_mode : bool
val linters_ignore_clang_failures : bool
val linters_validate_syntax_only : bool
val list_checkers : bool
val list_issue_types : bool
val liveness_dangerous_classes : Yojson.Basic.t
val max_nesting : int option
val merge : bool
val method_decls_info : string option
val ml_buckets : [ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ] list
val modified_lines : string option
val monitor_prop_size : bool
val nelseg : bool
val no_translate_libs : bool
val nullable_annotation : string option
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_params_in_non_strict : bool
val nullsafe_third_party_signatures : string option
val nullsafe_third_party_location_for_messaging_only : string option
val nullsafe_strict_containers : bool
val oom_threshold : int option
val only_cheap_debug : bool
val only_footprint : bool
val pmd_xml : bool
val print_active_checkers : bool
val print_builtins : bool
val print_logs : bool
val print_types : bool
val print_using_diff : bool
val procedures : bool
val procedures_attributes : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val process_clang_ast : bool
val clang_frontend_action_string : string
val profiler_samples : string option
val progress_bar : [ `MultiLine | `Plain | `Quiet ]
val project_root : string
val pudge : bool
val pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_recency_limit : int
val pulse_intraprocedural_only : bool
val pulse_max_disjuncts : int
val pulse_model_abort : string list
val pulse_model_alloc_pattern : Str.regexp option
val pulse_model_release_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_widen_threshold : int
val pure_by_default : bool
val quandary_endpoints : Yojson.Basic.t
val quandary_sanitizers : Yojson.Basic.t
val quandary_sinks : Yojson.Basic.t
val quandary_sources : Yojson.Basic.t
val quiet : bool
val racerd_guardedby : bool
val reactive_mode : bool
val reanalyze : bool
val report_blacklist_files_containing : string list
val report_console_limit : int option
val report_current : string option
val report_formatter : [ `No_formatter | `Phabricator_formatter ]
val report_path_regex_blacklist : string list
val report_path_regex_whitelist : string list
val report_previous : string option
val report_suppress_errors : string list
val reports_include_ml_loc : bool
val rest : string list
val results_dir : string
val scheduler : scheduler
val scuba_logging : bool
val scuba_normals : string IStdlib.IStd.String.Map.t
val scuba_tags : string list IStdlib.IStd.String.Map.t
val seconds_per_iteration : float option
val select : int option
val show_buckets : bool
val siof_check_iostreams : bool
val siof_safe_methods : string list
val skip_analysis_in_path : string list
val skip_analysis_in_path_skips_compilation : bool
val skip_duplicated_types : bool
val skip_translation_headers : string list
val sledge_timers : bool
val source_files : bool
val source_files_cfg : bool
val source_files_filter : string option
val source_files_freshly_captured : bool
val source_files_procedure_names : bool
val source_files_type_environment : bool
val source_preview : bool
val sqlite_cache_size : int
val sqlite_page_size : int
val sqlite_lock_timeout : int
val sqlite_vfs : string option
val sqlite_write_daemon : bool
val starvation_skip_analysis : Yojson.Basic.t
val starvation_strict_mode : bool
val starvation_whole_program : bool
val subtype_multirange : bool
val summaries_caches_max_size : int
val symops_per_iteration : int option
val test_determinator : bool
val export_changed_functions : bool
val test_filtering : bool
val testing_mode : bool
val threadsafe_aliases : Yojson.Basic.t
val topl_properties : string list
val trace_error : bool
val trace_events : bool
val trace_join : bool
val trace_ondemand : bool
val trace_rearrange : bool
val trace_topl : bool
val tv_commit : string option
val tv_limit : int
val tv_limit_filtered : int
val type_size : bool
val uninit_interproc : bool
val unsafe_malloc : bool
val worklist_mode : int
val write_dotty : bool
val write_html : bool
val write_html_whitelist_regex : string list
val write_website : string option
val xcode_developer_dir : string option
val xcpretty : bool

Configuration values derived from command-line options

val dynamic_dispatch : bool
val toplevel_results_dir : string

In some integrations, eg Buck, infer subprocesses started by the build system (started by the toplevel infer process) will have their own results directory; this points to the results directory of the toplevel infer process, which can be useful for, eg, storing debug info. In other cases this is equal to results_dir.

val is_in_custom_symbols : string -> string -> bool

Does named symbol match any prefix in the named custom symbol list?

val java_package_is_external : string -> bool

Check if a Java package is external to the repository

val execution_id : IStdlib.IStd.Int64.t

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list IStdlib.IStd.ref

Command Line Interface Documentation

val print_usage_exit : unit -> 'a
\ No newline at end of file +IBase__Config (infer.IBase__Config)

Module IBase__Config

type os_type =
| Unix
| Win32
| Cygwin
type build_system =
| BAnt
| BBuck
| BClang
| BGradle
| BJava
| BJavac
| BMake
| BMvn
| BNdk
| BXcode
type scheduler =
| File
| Restart
| SyntacticCallGraph
val equal_scheduler : scheduler -> scheduler -> bool
val build_system_of_exe_name : string -> build_system
val string_of_build_system : build_system -> string
val env_inside_maven : IStdlib.IStd.Unix.env

Constant configuration values

val anonymous_block_num_sep : string
val anonymous_block_prefix : string
val append_buck_flavors : string list
val assign : string
val biabduction_models_dir : string
val biabduction_models_jar : string
val biabduction_models_src_dir : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val clang_exe_aliases : string list
val clang_initializer_prefix : string
val clang_inner_destructor_prefix : string
val clang_plugin_path : string
val classpath : string option
val default_failure_name : string
val dotty_frontend_output : string
val etc_dir : string
val fail_on_issue_exit_code : int
val fcp_dir : string
val idempotent_getters : bool
val initial_analysis_time : float
val ivar_attributes : string
val java_lambda_marker_infix : string

marker to recognize methods generated by javalib to eliminate lambdas

val lib_dir : string
val load_average : float option
val max_narrows : int
val max_widens : int
val meet_level : int
val nsnotification_center_checker_backend : bool
val os_type : os_type
val passthroughs : bool
val patterns_modeled_expensive : string * Yojson.Basic.t
val patterns_never_returning_null : string * Yojson.Basic.t
val patterns_skip_implementation : string * Yojson.Basic.t
val patterns_skip_translation : string * Yojson.Basic.t
val pp_version : Stdlib.Format.formatter -> unit -> unit
val property_attributes : string
val relative_path_backtrack : int
val report : bool
val report_custom_error : bool
val report_force_relative_path : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val sourcepath : string option
val sources : string list
val specs_files_suffix : string
val trace_absarray : bool
val unsafe_unret : string
val incremental_analysis : bool
val weak : string
val whitelisted_cpp_classes : string list
val whitelisted_cpp_methods : string list
val wrappers_dir : string

Configuration values specified by command-line options

val abs_struct : int
val abs_val : int
val allow_leak : bool
val annotation_reachability_cxx : Yojson.Basic.t
val annotation_reachability_cxx_sources : Yojson.Basic.t
val annotation_reachability_custom_pairs : Yojson.Basic.t
val anon_args : string list
val array_level : int
val biabduction_models_mode : bool
val bo_debug : int
val bo_field_depth_limit : int option
val bootclasspath : string option
val buck : bool
val buck_blacklist : string list
val buck_build_args : string list
val buck_build_args_no_inline : string list
val buck_cache_mode : bool
val buck_merge_all_deps : bool
val buck_mode : IBase.BuckMode.t option
val buck_out_gen : string
val buck_targets_blacklist : string list
val call_graph_schedule : bool
val capture : bool
val capture_blacklist : string option
val censor_report : ((bool * Str.regexp) * (bool * Str.regexp) * string) list
val changed_files_index : string option
val check_version : string option
val clang_biniou_file : string option
val clang_compound_literal_init_limit : int
val clang_extra_flags : string list
val clang_blacklisted_flags : string list
val clang_blacklisted_flags_with_arg : string list
val clang_ignore_regex : string option
val clang_isystem_to_override_regex : Str.regexp option
val clang_idirafter_to_override_regex : Str.regexp option
val clang_libcxx_include_to_override_regex : string option
val command : ATDGenerated.InferCommand.t
val continue_analysis : bool
val continue_capture : bool
val costs_current : string option
val cost_issues_tests : string option
val costs_previous : string option
val cxx : bool
val cxx_scope_guards : Yojson.Basic.t
val deduplicate : bool
val debug_exceptions : bool
val debug_level_analysis : int
val debug_level_capture : int
val debug_level_linters : int
val debug_level_test_determinator : int
val debug_mode : bool
val default_linters : bool
val dependency_mode : bool
val developer_mode : bool
val differential_filter_files : string option
val differential_filter_set : [ `Introduced | `Fixed | `Preexisting ] list
val dotty_cfg_libs : bool
val dump_duplicate_symbols : bool
val eradicate_condition_redundant : bool
val eradicate_field_over_annotated : bool
val eradicate_return_over_annotated : bool
val eradicate_verbose : bool
val fail_on_bug : bool
val fcp_apple_clang : string option
val fcp_syntax_only : bool
val file_renamings : string option
val filter_paths : bool
val filtering : bool
val force_delete_results_dir : bool
val force_integration : build_system option
val from_json_report : string
val from_json_costs_report : string
val frontend_stats : bool
val frontend_tests : bool
val function_pointer_specialization : bool
val generated_classes : string option
val genrule_mode : bool
val get_linter_doc_url : linter_id:string -> string option
val help_checker : IBase.Checker.t list
val help_issue_type : IBase.IssueType.t list
val hoisting_report_only_expensive : bool
val html : bool
val icfg_dotty_outfile : string option
val infer_is_clang : bool
val infer_is_javac : bool
val implicit_sdk_root : string option
val inclusive_cost : bool
val inferconfig_file : string option
val inferconfig_dir : string option
val is_checker_enabled : IBase.Checker.t -> bool
val issues_tests : string option
val issues_tests_fields : IBase.IssuesTestField.t list
val iterations : int
val java_debug_source_file_info : string option
val java_jar_compiler : string option
val java_version : int option
val javac_classes_out : string
val job_id : string option
val jobs : int
val join_cond : int
val keep_going : bool
val linter : string option
val linters_def_file : string list
val linters_def_folder : string list
val linters_developer_mode : bool
val linters_ignore_clang_failures : bool
val linters_validate_syntax_only : bool
val list_checkers : bool
val list_issue_types : bool
val liveness_dangerous_classes : Yojson.Basic.t
val max_nesting : int option
val merge : bool
val method_decls_info : string option
val ml_buckets : [ `MLeak_all | `MLeak_arc | `MLeak_cf | `MLeak_cpp | `MLeak_no_arc | `MLeak_unknown ] list
val modified_lines : string option
val monitor_prop_size : bool
val nelseg : bool
val no_translate_libs : bool
val nullable_annotation : string option
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_params_in_non_strict : bool
val nullsafe_third_party_signatures : string option
val nullsafe_third_party_location_for_messaging_only : string option
val nullsafe_strict_containers : bool
val oom_threshold : int option
val only_cheap_debug : bool
val only_footprint : bool
val pmd_xml : bool
val print_active_checkers : bool
val print_builtins : bool
val print_jbir : bool
val print_logs : bool
val print_types : bool
val print_using_diff : bool
val procedures : bool
val procedures_attributes : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val process_clang_ast : bool
val clang_frontend_action_string : string
val profiler_samples : string option
val progress_bar : [ `MultiLine | `Plain | `Quiet ]
val project_root : string
val pudge : bool
val pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_recency_limit : int
val pulse_intraprocedural_only : bool
val pulse_max_disjuncts : int
val pulse_model_abort : string list
val pulse_model_alloc_pattern : Str.regexp option
val pulse_model_release_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_widen_threshold : int
val pure_by_default : bool
val quandary_endpoints : Yojson.Basic.t
val quandary_sanitizers : Yojson.Basic.t
val quandary_sinks : Yojson.Basic.t
val quandary_sources : Yojson.Basic.t
val quiet : bool
val racerd_guardedby : bool
val reactive_mode : bool
val reanalyze : bool
val report_blacklist_files_containing : string list
val report_console_limit : int option
val report_current : string option
val report_formatter : [ `No_formatter | `Phabricator_formatter ]
val report_path_regex_blacklist : string list
val report_path_regex_whitelist : string list
val report_previous : string option
val report_suppress_errors : string list
val reports_include_ml_loc : bool
val rest : string list
val results_dir : string
val scheduler : scheduler
val scuba_logging : bool
val scuba_normals : string IStdlib.IStd.String.Map.t
val scuba_tags : string list IStdlib.IStd.String.Map.t
val seconds_per_iteration : float option
val select : int option
val show_buckets : bool
val siof_check_iostreams : bool
val siof_safe_methods : string list
val skip_analysis_in_path : string list
val skip_analysis_in_path_skips_compilation : bool
val skip_duplicated_types : bool
val skip_translation_headers : string list
val sledge_timers : bool
val source_files : bool
val source_files_cfg : bool
val source_files_filter : string option
val source_files_freshly_captured : bool
val source_files_procedure_names : bool
val source_files_type_environment : bool
val source_preview : bool
val sqlite_cache_size : int
val sqlite_page_size : int
val sqlite_lock_timeout : int
val sqlite_vfs : string option
val sqlite_write_daemon : bool
val starvation_skip_analysis : Yojson.Basic.t
val starvation_strict_mode : bool
val starvation_whole_program : bool
val subtype_multirange : bool
val summaries_caches_max_size : int
val symops_per_iteration : int option
val test_determinator : bool
val export_changed_functions : bool
val test_filtering : bool
val testing_mode : bool
val threadsafe_aliases : Yojson.Basic.t
val topl_properties : string list
val trace_error : bool
val trace_events : bool
val trace_join : bool
val trace_ondemand : bool
val trace_rearrange : bool
val trace_topl : bool
val tv_commit : string option
val tv_limit : int
val tv_limit_filtered : int
val type_size : bool
val uninit_interproc : bool
val unsafe_malloc : bool
val worklist_mode : int
val write_dotty : bool
val write_html : bool
val write_html_whitelist_regex : string list
val write_website : string option
val xcode_developer_dir : string option
val xcpretty : bool

Configuration values derived from command-line options

val dynamic_dispatch : bool
val toplevel_results_dir : string

In some integrations, eg Buck, infer subprocesses started by the build system (started by the toplevel infer process) will have their own results directory; this points to the results directory of the toplevel infer process, which can be useful for, eg, storing debug info. In other cases this is equal to results_dir.

val is_in_custom_symbols : string -> string -> bool

Does named symbol match any prefix in the named custom symbol list?

val java_package_is_external : string -> bool

Check if a Java package is external to the repository

val execution_id : IStdlib.IStd.Int64.t

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list IStdlib.IStd.ref

Command Line Interface Documentation

val print_usage_exit : unit -> 'a
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase__IssueType/index.html b/website/static/odoc/next/infer/IBase__IssueType/index.html index 9aa115f79..2f8d053ae 100644 --- a/website/static/odoc/next/infer/IBase__IssueType/index.html +++ b/website/static/odoc/next/infer/IBase__IssueType/index.html @@ -1,2 +1,2 @@ -IBase__IssueType (infer.IBase__IssueType)

Module IBase__IssueType

type visibility =
| User

always add to error log

| Developer

only add to error log in some debug modes

| Silent

never add to error log

visibility of the issue type

val compare_visibility : visibility -> visibility -> int
val equal_visibility : visibility -> visibility -> bool
val string_of_visibility : visibility -> string
type severity =
| Like
| Info
| Advice
| Warning
| Error

severity of the report

val compare_severity : severity -> severity -> int
val equal_severity : severity -> severity -> bool
val all_of_severity : severity list
val string_of_severity : severity -> string
type t = private {
unique_id : string;
checker : IBase.Checker.t;
visibility : visibility;
user_documentation : string option;
mutable default_severity : severity;

used for documentation but can be overriden at report time

mutable enabled : bool;
mutable hum : string;
mutable doc_url : string option;
mutable linters_def_file : string option;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val all_issues : unit -> t list

all the issues declared so far

val pp : Stdlib.Format.formatter -> t -> unit

pretty print a localised string

val find_from_string : id:string -> t option

return the issue type if it was previously registered

val register_dynamic : ?⁠enabled:bool -> ?⁠hum:string -> ?⁠doc_url:string -> linters_def_file:string option -> id:string -> ?⁠user_documentation:string -> severity -> IBase.Checker.t -> t

Create a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum`, `doc_url`, and `linters_def_file`, but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic AL issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type, eg in AL.

val checker_can_report : IBase.Checker.t -> t -> bool

Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.

val set_enabled : t -> bool -> unit
val abduction_case_not_implemented : t
val array_of_pointsto : t
val array_out_of_bounds_l1 : t
val array_out_of_bounds_l2 : t
val array_out_of_bounds_l3 : t
val assert_failure : t
val bad_footprint : t
val biabduction_analysis_stops : t
val buffer_overrun_l1 : t
val buffer_overrun_l2 : t
val buffer_overrun_l3 : t
val buffer_overrun_l4 : t
val buffer_overrun_l5 : t
val buffer_overrun_s2 : t
val buffer_overrun_u5 : t
val cannot_star : t
val captured_strong_self : t
val checkers_allocates_memory : t

Warning name when a performance critical method directly or indirectly calls a method allocating memory

val checkers_annotation_reachability_error : t
val checkers_calls_expensive_method : t

Warning name when a performance critical method directly or indirectly calls a method annotatd as expensive

val checkers_expensive_overrides_unexpensive : t

Warning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive

val checkers_fragment_retain_view : t
val checkers_immutable_cast : t
val checkers_printf_args : t
val class_cast_exception : t
val complexity_increase : kind:IBase.CostKind.t -> is_on_ui_thread:bool -> t
val component_factory_function : t
val component_file_cyclomatic_complexity : t
val component_file_line_count : t
val component_initializer_with_side_effects : t
val component_with_multiple_factory_methods : t
val component_with_unconventional_superclass : t
val condition_always_false : t
val condition_always_true : t
val config_checks_between_markers : t
val constant_address_dereference : t
val create_intent_from_uri : t
val cross_site_scripting : t
val dangling_pointer_dereference : t
val dangling_pointer_dereference_maybe : t
val dead_store : t
val deadlock : t
val divide_by_zero : t
val do_not_report : t

an issue type that should never be reported

val empty_vector_access : t
val eradicate_condition_redundant : t
val eradicate_field_not_initialized : t
val eradicate_field_not_nullable : t
val eradicate_field_over_annotated : t
val eradicate_inconsistent_subclass_parameter_annotation : t
val eradicate_inconsistent_subclass_return_annotation : t
val eradicate_redundant_nested_class_annotation : t
val eradicate_bad_nested_class_annotation : t
val eradicate_nullable_dereference : t
val eradicate_parameter_not_nullable : t
val eradicate_return_not_nullable : t
val eradicate_return_over_annotated : t
val eradicate_unvetted_third_party_in_nullsafe : t
val eradicate_unchecked_usage_in_nullsafe : t
val eradicate_meta_class_can_be_nullsafe : t
val eradicate_meta_class_needs_improvement : t
val eradicate_meta_class_is_nullsafe : t
val exposed_insecure_intent_handling : t
val failure_exe : t
val field_not_null_checked : t
val guardedby_violation_racerd : t
val impure_function : t
val inefficient_keyset_iterator : t
val inferbo_alloc_is_big : t
val inferbo_alloc_is_negative : t
val inferbo_alloc_is_zero : t
val inferbo_alloc_may_be_big : t
val inferbo_alloc_may_be_negative : t
val infinite_cost_call : kind:IBase.CostKind.t -> t
val inherently_dangerous_function : t
val insecure_intent_handling : t
val integer_overflow_l1 : t
val integer_overflow_l2 : t
val integer_overflow_l5 : t
val integer_overflow_u5 : t
val interface_not_thread_safe : t
val internal_error : t
val invariant_call : t
val javascript_injection : t
val lab_resource_leak : t
val leak_after_array_abstraction : t
val leak_in_footprint : t
val leak_unknown_origin : t
val lockless_violation : t
val lock_consistency_violation : t
val logging_private_data : t
val expensive_loop_invariant_call : t
val memory_leak : t
val missing_fld : t
val missing_required_prop : t
val mixed_self_weakself : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val parameter_not_null_checked : t
val pointer_size_mismatch : t
val precondition_not_found : t
val precondition_not_met : t
val premature_nil_termination : t
val pulse_memory_leak : t
val pure_function : t
val quandary_taint_error : t
val resource_leak : t
val retain_cycle : t
val skip_function : t
val skip_pointer_dereference : t
val shell_injection : t
val shell_injection_risk : t
val sql_injection : t
val sql_injection_risk : t
val stack_variable_address_escape : t
val starvation : t
val static_initialization_order_fiasco : t
val strict_mode_violation : t
val strong_self_not_checked : t
val symexec_memory_error : t
val thread_safety_violation : t
val topl_error : t
val unary_minus_applied_to_unsigned_expression : t
val uninitialized_value : t
val unreachable_code_after : t
val use_after_delete : t
val use_after_free : t
val use_after_lifetime : t
val untrusted_buffer_access : t
val untrusted_deserialization : t
val untrusted_deserialization_risk : t
val untrusted_file : t
val untrusted_file_risk : t
val untrusted_heap_allocation : t
val untrusted_intent_creation : t
val untrusted_url_risk : t
val untrusted_environment_change_risk : t
val untrusted_variable_length_array : t
val user_controlled_sql_risk : t
val vector_invalidation : t
val weak_self_in_noescape_block : t
val wrong_argument_number : t
val unreachable_cost_call : kind:IBase.CostKind.t -> t
\ No newline at end of file +IBase__IssueType (infer.IBase__IssueType)

Module IBase__IssueType

type visibility =
| User

always add to error log

| Developer

only add to error log in some debug modes

| Silent

never add to error log

visibility of the issue type

val compare_visibility : visibility -> visibility -> int
val equal_visibility : visibility -> visibility -> bool
val string_of_visibility : visibility -> string
type severity =
| Like
| Info
| Advice
| Warning
| Error

severity of the report

val compare_severity : severity -> severity -> int
val equal_severity : severity -> severity -> bool
val all_of_severity : severity list
val string_of_severity : severity -> string
type t = private {
unique_id : string;
checker : IBase.Checker.t;
visibility : visibility;
user_documentation : string option;
mutable default_severity : severity;

used for documentation but can be overriden at report time

mutable enabled : bool;
mutable hum : string;
mutable doc_url : string option;
mutable linters_def_file : string option;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val all_issues : unit -> t list

all the issues declared so far

val pp : Stdlib.Format.formatter -> t -> unit

pretty print a localised string

val find_from_string : id:string -> t option

return the issue type if it was previously registered

val register_dynamic : ?⁠enabled:bool -> ?⁠hum:string -> ?⁠doc_url:string -> linters_def_file:string option -> id:string -> ?⁠user_documentation:string -> severity -> IBase.Checker.t -> t

Create a new issue and register it in the list of all issues. NOTE: if the issue with the same string id is already registered, overrides `hum`, `doc_url`, and `linters_def_file`, but DOES NOT override `enabled`. This trick allows to deal with disabling/enabling dynamic AL issues from the config, when we don't know all params yet. Thus, the human-readable description can be updated when we encounter the definition of the issue type, eg in AL.

val checker_can_report : IBase.Checker.t -> t -> bool

Whether the issue was registered as coming from the given checker. Important to call this before reporting to keep documentation accurate.

val set_enabled : t -> bool -> unit
val abduction_case_not_implemented : t
val array_of_pointsto : t
val array_out_of_bounds_l1 : t
val array_out_of_bounds_l2 : t
val array_out_of_bounds_l3 : t
val assert_failure : t
val bad_footprint : t
val biabduction_analysis_stops : t
val buffer_overrun_l1 : t
val buffer_overrun_l2 : t
val buffer_overrun_l3 : t
val buffer_overrun_l4 : t
val buffer_overrun_l5 : t
val buffer_overrun_s2 : t
val buffer_overrun_u5 : t
val cannot_star : t
val captured_strong_self : t
val checkers_allocates_memory : t

Warning name when a performance critical method directly or indirectly calls a method allocating memory

val checkers_annotation_reachability_error : t
val checkers_calls_expensive_method : t

Warning name when a performance critical method directly or indirectly calls a method annotatd as expensive

val checkers_expensive_overrides_unexpensive : t

Warning name for the subtyping rule: method not annotated as expensive cannot be overridden by a method annotated as expensive

val checkers_fragment_retain_view : t
val checkers_immutable_cast : t
val checkers_printf_args : t
val class_cast_exception : t
val complexity_increase : kind:IBase.CostKind.t -> is_on_ui_thread:bool -> t
val component_with_multiple_factory_methods : t
val condition_always_false : t
val condition_always_true : t
val config_checks_between_markers : t
val constant_address_dereference : t
val create_intent_from_uri : t
val cross_site_scripting : t
val dangling_pointer_dereference : t
val dangling_pointer_dereference_maybe : t
val dead_store : t
val deadlock : t
val divide_by_zero : t
val do_not_report : t

an issue type that should never be reported

val empty_vector_access : t
val eradicate_condition_redundant : t
val eradicate_field_not_initialized : t
val eradicate_field_not_nullable : t
val eradicate_field_over_annotated : t
val eradicate_inconsistent_subclass_parameter_annotation : t
val eradicate_inconsistent_subclass_return_annotation : t
val eradicate_redundant_nested_class_annotation : t
val eradicate_bad_nested_class_annotation : t
val eradicate_nullable_dereference : t
val eradicate_parameter_not_nullable : t
val eradicate_return_not_nullable : t
val eradicate_return_over_annotated : t
val eradicate_unvetted_third_party_in_nullsafe : t
val eradicate_unchecked_usage_in_nullsafe : t
val eradicate_meta_class_can_be_nullsafe : t
val eradicate_meta_class_needs_improvement : t
val eradicate_meta_class_is_nullsafe : t
val exposed_insecure_intent_handling : t
val failure_exe : t
val field_not_null_checked : t
val guardedby_violation_racerd : t
val impure_function : t
val inefficient_keyset_iterator : t
val inferbo_alloc_is_big : t
val inferbo_alloc_is_negative : t
val inferbo_alloc_is_zero : t
val inferbo_alloc_may_be_big : t
val inferbo_alloc_may_be_negative : t
val infinite_cost_call : kind:IBase.CostKind.t -> t
val inherently_dangerous_function : t
val insecure_intent_handling : t
val integer_overflow_l1 : t
val integer_overflow_l2 : t
val integer_overflow_l5 : t
val integer_overflow_u5 : t
val interface_not_thread_safe : t
val internal_error : t
val invariant_call : t
val javascript_injection : t
val lab_resource_leak : t
val leak_after_array_abstraction : t
val leak_in_footprint : t
val leak_unknown_origin : t
val lockless_violation : t
val lock_consistency_violation : t
val logging_private_data : t
val expensive_loop_invariant_call : t
val memory_leak : t
val missing_fld : t
val missing_required_prop : t
val mixed_self_weakself : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val parameter_not_null_checked : t
val precondition_not_found : t
val precondition_not_met : t
val premature_nil_termination : t
val pulse_memory_leak : t
val pure_function : t
val quandary_taint_error : t
val resource_leak : t
val retain_cycle : t
val skip_function : t
val shell_injection : t
val shell_injection_risk : t
val sql_injection : t
val sql_injection_risk : t
val stack_variable_address_escape : t
val starvation : t
val static_initialization_order_fiasco : t
val strict_mode_violation : t
val strong_self_not_checked : t
val symexec_memory_error : t
val thread_safety_violation : t
val topl_error : t
val uninitialized_value : t
val unreachable_code_after : t
val use_after_delete : t
val use_after_free : t
val use_after_lifetime : t
val untrusted_buffer_access : t
val untrusted_deserialization : t
val untrusted_deserialization_risk : t
val untrusted_file : t
val untrusted_file_risk : t
val untrusted_heap_allocation : t
val untrusted_intent_creation : t
val untrusted_url_risk : t
val untrusted_environment_change_risk : t
val untrusted_variable_length_array : t
val user_controlled_sql_risk : t
val vector_invalidation : t
val weak_self_in_noescape_block : t
val wrong_argument_number : t
val unreachable_cost_call : kind:IBase.CostKind.t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase__SourceFile/index.html b/website/static/odoc/next/infer/IBase__SourceFile/index.html index 0291800a9..8ff219381 100644 --- a/website/static/odoc/next/infer/IBase__SourceFile/index.html +++ b/website/static/odoc/next/infer/IBase__SourceFile/index.html @@ -1,2 +1,2 @@ -IBase__SourceFile (infer.IBase__SourceFile)

Module IBase__SourceFile

type t
val compare : t -> t -> int
module Map : IStdlib.IStd.Caml.Map.S with type Map.key = t

Maps from source_file

module Set : IStdlib.IStd.Caml.Set.S with type Set.elt = t

Set of source files

module Hash : IStdlib.IStd.Caml.Hashtbl.S with type Hash.key = t
val is_invalid : t -> bool

Is the source file the invalid source file?

val changed_sources_from_changed_files : string list -> Set.t

Set of files read from --changed-files-index file, None if option not specified NOTE: it may include extra source_files if --changed-files-index contains paths to header files

val invalid : string -> t

Invalid source file

val equal : t -> t -> bool

equality of source files

val from_abs_path : ?⁠warn_on_error:bool -> string -> t

create source file from absolute path. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val create : ?⁠warn_on_error:bool -> string -> t

Create a SourceFile from a given path. If relative, it assumes it is w.r.t. project root. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val is_biabduction_model : t -> bool
val is_under_project_root : t -> bool

Returns true if the file is in project root

val line_count : t -> int

compute line count of a source file

val of_header : ?⁠warn_on_error:bool -> t -> t option

Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given SourceFile (e.g. if it does not exist).

val pp : Stdlib.Format.formatter -> t -> unit

pretty print t

val to_abs_path : t -> string

get the full path of a source file

val to_rel_path : t -> string

get the relative path of a source file

val to_string : ?⁠force_relative:bool -> t -> string

convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames

module SQLite : IBase.SqliteUtils.Data with type t = t
\ No newline at end of file +IBase__SourceFile (infer.IBase__SourceFile)

Module IBase__SourceFile

type t
val compare : t -> t -> int
module Map : IStdlib.IStd.Caml.Map.S with type Map.key = t

Maps from source_file

module Set : IStdlib.IStd.Caml.Set.S with type Set.elt = t

Set of source files

module Hash : IStdlib.IStd.Caml.Hashtbl.S with type Hash.key = t
val is_invalid : t -> bool

Is the source file the invalid source file?

val changed_sources_from_changed_files : string list -> Set.t

Set of files read from --changed-files-index file, None if option not specified NOTE: it may include extra source_files if --changed-files-index contains paths to header files

val invalid : string -> t

Invalid source file

val equal : t -> t -> bool

equality of source files

val from_abs_path : ?⁠warn_on_error:bool -> string -> t

create source file from absolute path. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val create : ?⁠warn_on_error:bool -> string -> t

Create a SourceFile from a given path. If relative, it assumes it is w.r.t. project root. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val is_biabduction_model : t -> bool
val is_under_project_root : t -> bool

Returns true if the file is in project root

val of_header : ?⁠warn_on_error:bool -> t -> t option

Return approximate source file corresponding to the parameter if it's header file and file exists. returns None otherwise. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given SourceFile (e.g. if it does not exist).

val pp : Stdlib.Format.formatter -> t -> unit

pretty print t

val to_abs_path : t -> string

get the full path of a source file

val to_rel_path : t -> string

get the relative path of a source file

val to_string : ?⁠force_relative:bool -> t -> string

convert a source file to a string WARNING: result may not be valid file path, do not use this function to perform operations on filenames

module SQLite : IBase.SqliteUtils.Data with type t = t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase__Utils/index.html b/website/static/odoc/next/infer/IBase__Utils/index.html index 67eefd429..346252c75 100644 --- a/website/static/odoc/next/infer/IBase__Utils/index.html +++ b/website/static/odoc/next/infer/IBase__Utils/index.html @@ -1,2 +1,2 @@ -IBase__Utils (infer.IBase__Utils)

Module IBase__Utils

val find_files : path:string -> extension:string -> string list

recursively traverse a path for files ending with a given extension

val fold_folders : init:'acc -> f:('acc -> string -> 'acc) -> path:string -> 'acc

recursively traverse a path for folders, returning resuls by a given fold function

val string_crc_hex32 : string -> string

Compute a 32-character hexadecimal crc using the Digest module

val read_file : string -> (string list, string) IStdlib.IStd.Result.t

read a source file and return a list of lines

val filename_to_absolute : root:string -> string -> string

Convert a filename to an absolute one if it is relative, and normalize "." and ".."

val filename_to_relative : ?⁠force_full_backtrack:bool -> ?⁠backtrack:int -> root:string -> string -> string option

Convert an absolute filename to one relative to a root directory. Returns None if filename is not under root. The backtrack level sets the maximum level of steps in the parent directories to search for a common prefix

type outfile = {
fname : string;

name of the file

out_c : IStdlib.IStd.Out_channel.t;

output channel

fmt : Stdlib.Format.formatter;

formatter for printing

}

type for files used for printing

val create_outfile : string -> outfile option

create an outfile for the command line, the boolean indicates whether to do demangling when closing the file

val close_outf : outfile -> unit

close an outfile

val directory_fold : ('a -> string -> 'a) -> 'a -> string -> 'a

Functional fold function over all the file of a directory

val directory_iter : (string -> unit) -> string -> unit

Functional iter function over all the file of a directory

val directory_is_empty : string -> bool

Returns true if a given directory is empty. The directory is assumed to exist.

val read_json_file : string -> (Yojson.Basic.t, string) IStdlib.IStd.Result.t
val with_file_in : string -> f:(IStdlib.IStd.In_channel.t -> 'a) -> 'a
val with_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a
type file_lock = {
file : string;
oc : Stdlib.out_channel;
fd : Core.Unix.File_descr.t;
lock : unit -> unit;
unlock : unit -> unit;
}
val create_file_lock : unit -> file_lock
val with_file_lock : file_lock:file_lock -> f:(unit -> 'a) -> 'a
val with_intermediate_temp_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a

like with_file_out but uses a fresh intermediate temporary file and rename to avoid write-write races

val write_json_to_file : string -> Yojson.Basic.t -> unit
val consume_in : IStdlib.IStd.In_channel.t -> unit

consume and ignore all the lines from the channel until End_of_file is reached

val echo_in : IStdlib.IStd.In_channel.t -> unit

echo the lines we get to stdout until End_of_file is reached

val with_channel_in : f:(string -> unit) -> IStdlib.IStd.In_channel.t -> unit
val with_process_in : string -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a * IStdlib.IStd.Unix.Exit_or_signal.t
val create_dir : string -> unit

recursively create a directory if it does not exist already

val out_channel_create_with_dir : IStdlib.IStd.Filename.t -> IStdlib.IStd.Out_channel.t

create an out channel with creating missing directories

val realpath : ?⁠warn_on_error:bool -> string -> string

realpath warn_on_error path returns path with all symbolic links resolved. It caches results of previous calls to avoid expensive system calls. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val suppress_stderr2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

wraps a function expecting 2 arguments in another that temporarily redirects stderr to /dev/null for the duration of the function call

val compare_versions : string -> string -> int

compare_versions v1 v2 returns 1 if v1 is newer than v2, -1 if v1 is older than v2 and 0 if they are the same version. The versions are strings of the shape "n.m.t", the order is lexicographic.

val rmtree : string -> unit

rmtree path removes path and, if path is a directory, recursively removes its contents

val try_finally_swallow_timeout : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a

Calls f then finally even if f raised an exception. The original exception is reraised afterwards. Where possible use SymOp.try_finally to avoid swallowing timeouts.

val better_hash : 'a -> IStdlib.IStd.Caml.Digest.t

Hashtbl.hash only hashes the first 10 meaningful values, better_hash uses everything.

delete temporary file on exit

val strip_balanced_once : drop:(char -> bool) -> string -> string

drop at most one layer of well-balanced first and last characters satisfying drop from the string; for instance, strip_balanced ~drop:(function | 'a' | 'x' -> true | _ -> false) "xaabax" returns "aaba"

val assoc_of_yojson : Yojson.Basic.t -> src:string -> (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t

Verify we have a json object (or empty list) and return the corresponding assoc list. Otherwise die with a message including src.

val string_of_yojson : Yojson.Basic.t -> src:string -> string

Verify we have a json string and return the corresponding ocaml string. Otherwise die with a message including src.

val string_list_of_yojson : Yojson.Basic.t -> src:string -> string list

Verify we have a json list of strings and return the corresponding ocaml string list. Otherwise die with a message including src.

val yojson_lookup : (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t -> string -> src:string -> f:(Yojson.Basic.t -> src:string -> 'a) -> default:'a -> 'a

Lookup a json value on an assoc list. If not present, returns default. Otherwise returns (f json_value ~src) where src has element name appended. f is typically one of the above _of_yojson functions.

val timeit : f:(unit -> 'a) -> 'a * int

Returns the execution time of f in milliseconds together with its result

val do_in_dir : dir:string -> f:(unit -> 'a) -> 'a

executes f after cding into dir and then restores original cwd

val get_available_memory_MB : unit -> int option

On Linux systems, return Some x where MemAvailable x is in /proc/meminfo. Returns None in all other cases.

val iter_infer_deps : project_root:string -> f:(string -> unit) -> string -> unit

Parse each line of the given infer_deps.txt file (split on tabs, assume 3 elements per line) and run f on the third element. project_root is an argument to avoid dependency cycles.

val numcores : int
  • On Linux return the number of physical cores (sockets * cores per socket).
  • On Darwin and Windows returns half of the number of CPUs since most processors have 2 hardware threads per core.
val set_best_cpu_for : int -> unit

Pins processes to CPUs aiming to saturate physical cores evenly

val zip_fold_filenames : init:'a -> f:('a -> string -> 'a) -> zip_filename:string -> 'a

fold over each filename in the given zip_filename.

\ No newline at end of file +IBase__Utils (infer.IBase__Utils)

Module IBase__Utils

val find_files : path:string -> extension:string -> string list

recursively traverse a path for files ending with a given extension

val fold_folders : init:'acc -> f:('acc -> string -> 'acc) -> path:string -> 'acc

recursively traverse a path for folders, returning resuls by a given fold function

val string_crc_hex32 : string -> string

Compute a 32-character hexadecimal crc using the Digest module

val read_file : string -> (string list, string) IStdlib.IStd.Result.t

read a source file and return a list of lines

val filename_to_absolute : root:string -> string -> string

Convert a filename to an absolute one if it is relative, and normalize "." and ".."

val filename_to_relative : ?⁠force_full_backtrack:bool -> ?⁠backtrack:int -> root:string -> string -> string option

Convert an absolute filename to one relative to a root directory. Returns None if filename is not under root. The backtrack level sets the maximum level of steps in the parent directories to search for a common prefix

type outfile = {
fname : string;

name of the file

out_c : IStdlib.IStd.Out_channel.t;

output channel

fmt : Stdlib.Format.formatter;

formatter for printing

}

type for files used for printing

val create_outfile : string -> outfile option

create an outfile for the command line, the boolean indicates whether to do demangling when closing the file

val close_outf : outfile -> unit

close an outfile

val directory_fold : ('a -> string -> 'a) -> 'a -> string -> 'a

Functional fold function over all the file of a directory

val directory_iter : (string -> unit) -> string -> unit

Functional iter function over all the file of a directory

val directory_is_empty : string -> bool

Returns true if a given directory is empty. The directory is assumed to exist.

val read_json_file : string -> (Yojson.Basic.t, string) IStdlib.IStd.Result.t
val with_file_in : string -> f:(IStdlib.IStd.In_channel.t -> 'a) -> 'a
val with_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a
type file_lock = {
file : string;
oc : Stdlib.out_channel;
fd : Core.Unix.File_descr.t;
lock : unit -> unit;
unlock : unit -> unit;
}
val create_file_lock : unit -> file_lock
val with_file_lock : file_lock:file_lock -> f:(unit -> 'a) -> 'a
val with_intermediate_temp_file_out : string -> f:(IStdlib.IStd.Out_channel.t -> 'a) -> 'a

like with_file_out but uses a fresh intermediate temporary file and rename to avoid write-write races

val write_json_to_file : string -> Yojson.Basic.t -> unit
val consume_in : IStdlib.IStd.In_channel.t -> unit

consume and ignore all the lines from the channel until End_of_file is reached

val echo_in : IStdlib.IStd.In_channel.t -> unit

echo the lines we get to stdout until End_of_file is reached

val with_channel_in : f:(string -> unit) -> IStdlib.IStd.In_channel.t -> unit
val with_process_in : string -> (IStdlib.IStd.In_channel.t -> 'a) -> 'a * IStdlib.IStd.Unix.Exit_or_signal.t
val create_dir : string -> unit

recursively create a directory if it does not exist already

val out_channel_create_with_dir : IStdlib.IStd.Filename.t -> IStdlib.IStd.Out_channel.t

create an out channel with creating missing directories

val realpath : ?⁠warn_on_error:bool -> string -> string

realpath warn_on_error path returns path with all symbolic links resolved. It caches results of previous calls to avoid expensive system calls. WARNING: If warn_on_error is false, no warning will be shown whenever an error occurs for the given path (e.g. if it does not exist).

val suppress_stderr2 : ('a -> 'b -> 'c) -> 'a -> 'b -> 'c

wraps a function expecting 2 arguments in another that temporarily redirects stderr to /dev/null for the duration of the function call

val rmtree : string -> unit

rmtree path removes path and, if path is a directory, recursively removes its contents

val try_finally_swallow_timeout : f:(unit -> 'a) -> finally:(unit -> unit) -> 'a

Calls f then finally even if f raised an exception. The original exception is reraised afterwards. Where possible use SymOp.try_finally to avoid swallowing timeouts.

val better_hash : 'a -> IStdlib.IStd.Caml.Digest.t

Hashtbl.hash only hashes the first 10 meaningful values, better_hash uses everything.

delete temporary file on exit

val strip_balanced_once : drop:(char -> bool) -> string -> string

drop at most one layer of well-balanced first and last characters satisfying drop from the string; for instance, strip_balanced ~drop:(function | 'a' | 'x' -> true | _ -> false) "xaabax" returns "aaba"

val assoc_of_yojson : Yojson.Basic.t -> src:string -> (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t

Verify we have a json object (or empty list) and return the corresponding assoc list. Otherwise die with a message including src.

val string_of_yojson : Yojson.Basic.t -> src:string -> string

Verify we have a json string and return the corresponding ocaml string. Otherwise die with a message including src.

val string_list_of_yojson : Yojson.Basic.t -> src:string -> string list

Verify we have a json list of strings and return the corresponding ocaml string list. Otherwise die with a message including src.

val yojson_lookup : (string, Yojson.Basic.t) IStdlib.IStd.List.Assoc.t -> string -> src:string -> f:(Yojson.Basic.t -> src:string -> 'a) -> default:'a -> 'a

Lookup a json value on an assoc list. If not present, returns default. Otherwise returns (f json_value ~src) where src has element name appended. f is typically one of the above _of_yojson functions.

val timeit : f:(unit -> 'a) -> 'a * int

Returns the execution time of f in milliseconds together with its result

val do_in_dir : dir:string -> f:(unit -> 'a) -> 'a

executes f after cding into dir and then restores original cwd

val get_available_memory_MB : unit -> int option

On Linux systems, return Some x where MemAvailable x is in /proc/meminfo. Returns None in all other cases.

val iter_infer_deps : project_root:string -> f:(string -> unit) -> string -> unit

Parse each line of the given infer_deps.txt file (split on tabs, assume 3 elements per line) and run f on the third element. project_root is an argument to avoid dependency cycles.

val numcores : int
  • On Linux return the number of physical cores (sockets * cores per socket).
  • On Darwin and Windows returns half of the number of CPUs since most processors have 2 hardware threads per core.
val set_best_cpu_for : int -> unit

Pins processes to CPUs aiming to saturate physical cores evenly

val zip_fold_filenames : init:'a -> f:('a -> string -> 'a) -> zip_filename:string -> 'a

fold over each filename in the given zip_filename.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html b/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html index 0e1646ed5..afe3cb2a9 100644 --- a/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html +++ b/website/static/odoc/next/infer/IR/BUILTINS/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IR.BUILTINS.S)

Module type BUILTINS.S

List of all builtins that are interpreted specially by the backend

type t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __free_cf : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
\ No newline at end of file +S (infer.IR.BUILTINS.S)

Module type BUILTINS.S

List of all builtins that are interpreted specially by the backend

type t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR/BuiltinDecl/index.html b/website/static/odoc/next/infer/IR/BuiltinDecl/index.html index 9ddd89d07..43e2d2f93 100644 --- a/website/static/odoc/next/infer/IR/BuiltinDecl/index.html +++ b/website/static/odoc/next/infer/IR/BuiltinDecl/index.html @@ -1,2 +1,2 @@ -BuiltinDecl (infer.IR.BuiltinDecl)

Module IR.BuiltinDecl

include BUILTINS.S with type t = Procname.t
type t = Procname.t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __free_cf : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val is_declared : Procname.t -> bool
val __infer_initializer_list : Procname.t
val __infer_skip_function : Procname.t
val __infer_skip_gcc_asm_stmt : Procname.t
val __infer_generic_selection_expr : Procname.t
\ No newline at end of file +BuiltinDecl (infer.IR.BuiltinDecl)

Module IR.BuiltinDecl

include BUILTINS.S with type t = Procname.t
type t = Procname.t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val is_declared : Procname.t -> bool
val __infer_initializer_list : Procname.t
val __infer_skip_function : Procname.t
val __infer_skip_gcc_asm_stmt : Procname.t
val __infer_generic_selection_expr : Procname.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR/ProcAttributes/index.html b/website/static/odoc/next/infer/IR/ProcAttributes/index.html index 9824122a7..ab06142ba 100644 --- a/website/static/odoc/next/infer/IR/ProcAttributes/index.html +++ b/website/static/odoc/next/infer/IR/ProcAttributes/index.html @@ -1,2 +1,2 @@ -ProcAttributes (infer.IR.ProcAttributes)

Module IR.ProcAttributes

type objc_accessor_type =
| Objc_getter of Struct.field
| Objc_setter of Struct.field
val kind_of_objc_accessor_type : objc_accessor_type -> string
type var_data = {
name : Mangled.t;
typ : Typ.t;
modify_in_block : bool;

__block attribute of Objective-C variables, means that it will be modified inside a block

is_constexpr : bool;
}
type t = {
access : PredSymb.access;

visibility access

captured : (Mangled.t * Typ.t) list;

name and type of variables captured in blocks

exceptions : string list;

exceptions thrown by the procedure

formals : (Mangled.t * Typ.t) list;

name and type of formal parameters

const_formals : int list;

list of indices of formals that are const-qualified

is_abstract : bool;

the procedure is abstract

is_biabduction_model : bool;

the procedure is a model for the biabduction analysis

is_bridge_method : bool;

the procedure is a bridge method

is_defined : bool;

true if the procedure is defined, and not just declared

is_java_synchronized_method : bool;

the procedure is a Java synchronized method

passed_as_noescape_block_to : Procname.t option;

Present if the procedure is an Objective-C block that has been passed to the given method in a position annotated with the NS_NOESCAPE attribute.

is_no_return : bool;

the procedure is known not to return

is_specialized : bool;

the procedure is a clone specialized for dynamic dispatch handling

is_synthetic_method : bool;

the procedure is a synthetic method

is_variadic : bool;

the procedure is variadic, only supported for Clang procedures

sentinel_attr : (int * int) option;

__attribute__((sentinel(int, int)))

clang_method_kind : ClangMethodKind.t;

the kind of method the procedure is

loc : IBase.Location.t;

location of this procedure in the source code

translation_unit : IBase.SourceFile.t;

source file where the procedure was captured

mutable locals : var_data list;

name, type and attributes of local variables

method_annotation : Annot.Method.t;

annotations for all methods

objc_accessor : objc_accessor_type option;

type of ObjC accessor, if any

proc_name : Procname.t;

name of the procedure

ret_type : Typ.t;

return type

has_added_return_param : bool;

whether or not a return param was added

}
val default : IBase.SourceFile.t -> Procname.t -> t

Create a proc_attributes with default values.

val pp : Stdlib.Format.formatter -> t -> unit
val get_annotated_formals : t -> ((Mangled.t * Typ.t) * Annot.Item.t) list
module SQLite : IBase.SqliteUtils.Data with type t = t
\ No newline at end of file +ProcAttributes (infer.IR.ProcAttributes)

Module IR.ProcAttributes

type objc_accessor_type =
| Objc_getter of Struct.field
| Objc_setter of Struct.field
type var_data = {
name : Mangled.t;
typ : Typ.t;
modify_in_block : bool;

__block attribute of Objective-C variables, means that it will be modified inside a block

is_constexpr : bool;
}
type t = {
access : PredSymb.access;

visibility access

captured : (Mangled.t * Typ.t) list;

name and type of variables captured in blocks

exceptions : string list;

exceptions thrown by the procedure

formals : (Mangled.t * Typ.t) list;

name and type of formal parameters

const_formals : int list;

list of indices of formals that are const-qualified

is_abstract : bool;

the procedure is abstract

is_biabduction_model : bool;

the procedure is a model for the biabduction analysis

is_bridge_method : bool;

the procedure is a bridge method

is_defined : bool;

true if the procedure is defined, and not just declared

is_java_synchronized_method : bool;

the procedure is a Java synchronized method

passed_as_noescape_block_to : Procname.t option;

Present if the procedure is an Objective-C block that has been passed to the given method in a position annotated with the NS_NOESCAPE attribute.

is_no_return : bool;

the procedure is known not to return

is_specialized : bool;

the procedure is a clone specialized for dynamic dispatch handling

is_synthetic_method : bool;

the procedure is a synthetic method

is_variadic : bool;

the procedure is variadic, only supported for Clang procedures

sentinel_attr : (int * int) option;

__attribute__((sentinel(int, int)))

clang_method_kind : ClangMethodKind.t;

the kind of method the procedure is

loc : IBase.Location.t;

location of this procedure in the source code

translation_unit : IBase.SourceFile.t;

source file where the procedure was captured

mutable locals : var_data list;

name, type and attributes of local variables

method_annotation : Annot.Method.t;

annotations for all methods

objc_accessor : objc_accessor_type option;

type of ObjC accessor, if any

proc_name : Procname.t;

name of the procedure

ret_type : Typ.t;

return type

has_added_return_param : bool;

whether or not a return param was added

}
val default : IBase.SourceFile.t -> Procname.t -> t

Create a proc_attributes with default values.

val pp : Stdlib.Format.formatter -> t -> unit
val get_annotated_formals : t -> ((Mangled.t * Typ.t) * Annot.Item.t) list
module SQLite : IBase.SqliteUtils.Data with type t = t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR__BUILTINS/module-type-S/index.html b/website/static/odoc/next/infer/IR__BUILTINS/module-type-S/index.html index 0ca21613a..43550c422 100644 --- a/website/static/odoc/next/infer/IR__BUILTINS/module-type-S/index.html +++ b/website/static/odoc/next/infer/IR__BUILTINS/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IR__BUILTINS.S)

Module type IR__BUILTINS.S

List of all builtins that are interpreted specially by the backend

type t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __free_cf : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
\ No newline at end of file +S (infer.IR__BUILTINS.S)

Module type IR__BUILTINS.S

List of all builtins that are interpreted specially by the backend

type t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR__BuiltinDecl/index.html b/website/static/odoc/next/infer/IR__BuiltinDecl/index.html index 11626d1a6..63e435f44 100644 --- a/website/static/odoc/next/infer/IR__BuiltinDecl/index.html +++ b/website/static/odoc/next/infer/IR__BuiltinDecl/index.html @@ -1,2 +1,2 @@ -IR__BuiltinDecl (infer.IR__BuiltinDecl)

Module IR__BuiltinDecl

include IR.BUILTINS.S with type t = IR.Procname.t
type t = IR.Procname.t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __free_cf : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val is_declared : IR.Procname.t -> bool
val __infer_initializer_list : IR.Procname.t
val __infer_skip_function : IR.Procname.t
val __infer_skip_gcc_asm_stmt : IR.Procname.t
val __infer_generic_selection_expr : IR.Procname.t
\ No newline at end of file +IR__BuiltinDecl (infer.IR__BuiltinDecl)

Module IR__BuiltinDecl

include IR.BUILTINS.S with type t = IR.Procname.t
type t = IR.Procname.t
val __array_access : t
val __assert_fail : t
val __builtin_va_arg : t
val __builtin_va_copy : t
val __builtin_va_end : t
val __builtin_va_start : t
val __builtin_offsetof : t
val __cast : t

__cast(val,typ) implements java's typ(val)

val __cxx_typeid : t
val __delete : t
val __delete_array : t
val __delete_locked_attribute : t
val __exit : t
val __objc_bridge_transfer : t
val __get_array_length : t
val __get_type_of : t
val __global_access : t
val __infer_assume : t
val __infer_fail : t
val __infer_skip : t

used to represent behavior that is not modeled in infer

val __instanceof : t

__instanceof(val,typ) implements java's val instanceof typ

val __method_set_ignore_attribute : t
val __new : t
val __new_array : t
val __objc_alloc_no_fail : t
val __objc_dictionary_literal : t
val __placement_delete : t
val __placement_new : t
val __print_value : t
val __require_allocated_array : t
val __set_array_length : t
val __set_file_attribute : t
val __set_locked_attribute : t
val __set_mem_attribute : t
val __set_observer_attribute : t
val __set_unsubscribed_observer_attribute : t
val __set_wont_leak_attribute : t
val __split_get_nth : t
val __throw : t
val __unwrap_exception : t
val abort : t
val exit : t
val free : t
val fscanf : t
val fwscanf : t
val malloc : t
val malloc_no_fail : t
val nsArray_arrayWithObjects : t
val nsArray_arrayWithObjectsCount : t
val objc_cpp_throw : t
val pthread_create : t
val scanf : t
val sscanf : t
val swscanf : t
val vfscanf : t
val vfwscanf : t
val vscanf : t
val vsscanf : t
val vswscanf : t
val vwscanf : t
val wscanf : t
val zero_initialization : t
val is_declared : IR.Procname.t -> bool
val __infer_initializer_list : IR.Procname.t
val __infer_skip_function : IR.Procname.t
val __infer_skip_gcc_asm_stmt : IR.Procname.t
val __infer_generic_selection_expr : IR.Procname.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR__ProcAttributes/index.html b/website/static/odoc/next/infer/IR__ProcAttributes/index.html index 8e9a84df0..d7fcb306a 100644 --- a/website/static/odoc/next/infer/IR__ProcAttributes/index.html +++ b/website/static/odoc/next/infer/IR__ProcAttributes/index.html @@ -1,2 +1,2 @@ -IR__ProcAttributes (infer.IR__ProcAttributes)

Module IR__ProcAttributes

type objc_accessor_type =
| Objc_getter of IR.Struct.field
| Objc_setter of IR.Struct.field
val kind_of_objc_accessor_type : objc_accessor_type -> string
type var_data = {
name : IR.Mangled.t;
typ : IR.Typ.t;
modify_in_block : bool;

__block attribute of Objective-C variables, means that it will be modified inside a block

is_constexpr : bool;
}
type t = {
access : IR.PredSymb.access;

visibility access

captured : (IR.Mangled.t * IR.Typ.t) list;

name and type of variables captured in blocks

exceptions : string list;

exceptions thrown by the procedure

formals : (IR.Mangled.t * IR.Typ.t) list;

name and type of formal parameters

const_formals : int list;

list of indices of formals that are const-qualified

is_abstract : bool;

the procedure is abstract

is_biabduction_model : bool;

the procedure is a model for the biabduction analysis

is_bridge_method : bool;

the procedure is a bridge method

is_defined : bool;

true if the procedure is defined, and not just declared

is_java_synchronized_method : bool;

the procedure is a Java synchronized method

passed_as_noescape_block_to : IR.Procname.t option;

Present if the procedure is an Objective-C block that has been passed to the given method in a position annotated with the NS_NOESCAPE attribute.

is_no_return : bool;

the procedure is known not to return

is_specialized : bool;

the procedure is a clone specialized for dynamic dispatch handling

is_synthetic_method : bool;

the procedure is a synthetic method

is_variadic : bool;

the procedure is variadic, only supported for Clang procedures

sentinel_attr : (int * int) option;

__attribute__((sentinel(int, int)))

clang_method_kind : IR.ClangMethodKind.t;

the kind of method the procedure is

loc : IBase.Location.t;

location of this procedure in the source code

translation_unit : IBase.SourceFile.t;

source file where the procedure was captured

mutable locals : var_data list;

name, type and attributes of local variables

method_annotation : IR.Annot.Method.t;

annotations for all methods

objc_accessor : objc_accessor_type option;

type of ObjC accessor, if any

proc_name : IR.Procname.t;

name of the procedure

ret_type : IR.Typ.t;

return type

has_added_return_param : bool;

whether or not a return param was added

}
val default : IBase.SourceFile.t -> IR.Procname.t -> t

Create a proc_attributes with default values.

val pp : Stdlib.Format.formatter -> t -> unit
val get_annotated_formals : t -> ((IR.Mangled.t * IR.Typ.t) * IR.Annot.Item.t) list
module SQLite : IBase.SqliteUtils.Data with type t = t
\ No newline at end of file +IR__ProcAttributes (infer.IR__ProcAttributes)

Module IR__ProcAttributes

type objc_accessor_type =
| Objc_getter of IR.Struct.field
| Objc_setter of IR.Struct.field
type var_data = {
name : IR.Mangled.t;
typ : IR.Typ.t;
modify_in_block : bool;

__block attribute of Objective-C variables, means that it will be modified inside a block

is_constexpr : bool;
}
type t = {
access : IR.PredSymb.access;

visibility access

captured : (IR.Mangled.t * IR.Typ.t) list;

name and type of variables captured in blocks

exceptions : string list;

exceptions thrown by the procedure

formals : (IR.Mangled.t * IR.Typ.t) list;

name and type of formal parameters

const_formals : int list;

list of indices of formals that are const-qualified

is_abstract : bool;

the procedure is abstract

is_biabduction_model : bool;

the procedure is a model for the biabduction analysis

is_bridge_method : bool;

the procedure is a bridge method

is_defined : bool;

true if the procedure is defined, and not just declared

is_java_synchronized_method : bool;

the procedure is a Java synchronized method

passed_as_noescape_block_to : IR.Procname.t option;

Present if the procedure is an Objective-C block that has been passed to the given method in a position annotated with the NS_NOESCAPE attribute.

is_no_return : bool;

the procedure is known not to return

is_specialized : bool;

the procedure is a clone specialized for dynamic dispatch handling

is_synthetic_method : bool;

the procedure is a synthetic method

is_variadic : bool;

the procedure is variadic, only supported for Clang procedures

sentinel_attr : (int * int) option;

__attribute__((sentinel(int, int)))

clang_method_kind : IR.ClangMethodKind.t;

the kind of method the procedure is

loc : IBase.Location.t;

location of this procedure in the source code

translation_unit : IBase.SourceFile.t;

source file where the procedure was captured

mutable locals : var_data list;

name, type and attributes of local variables

method_annotation : IR.Annot.Method.t;

annotations for all methods

objc_accessor : objc_accessor_type option;

type of ObjC accessor, if any

proc_name : IR.Procname.t;

name of the procedure

ret_type : IR.Typ.t;

return type

has_added_return_param : bool;

whether or not a return param was added

}
val default : IBase.SourceFile.t -> IR.Procname.t -> t

Create a proc_attributes with default values.

val pp : Stdlib.Format.formatter -> t -> unit
val get_annotated_formals : t -> ((IR.Mangled.t * IR.Typ.t) * IR.Annot.Item.t) list
module SQLite : IBase.SqliteUtils.Data with type t = t
\ No newline at end of file