From fc19c55b0ae0f9469d52e18d7d3caa3d56f8acc2 Mon Sep 17 00:00:00 2001 From: Sungkeun Cho Date: Tue, 2 Mar 2021 08:09:46 -0800 Subject: [PATCH] [infer] Update website (next version) Reviewed By: jvillard Differential Revision: D26751260 fbshipit-source-id: dae846ed8 --- website/checkers.json | 10 +- website/docs/all-issue-types.md | 126 +++++++++++++++++- .../checker-config-checks-between-markers.md | 2 +- website/docs/checker-cost.md | 8 +- website/docs/checker-racerd.md | 2 + website/static/man/next/infer-analyze.1.html | 15 +++ website/static/man/next/infer-capture.1.html | 7 + website/static/man/next/infer-report.1.html | 10 ++ website/static/man/next/infer.1.html | 35 +++++ .../infer/ASTLanguage/CPredicates/index.html | 2 +- .../infer/ASTLanguage__CPredicates/index.html | 2 +- .../infer/ATDGenerated/Jsonbug_j/index.html | 2 +- .../infer/ATDGenerated/Jsonbug_t/index.html | 2 +- .../odoc/next/infer/ATDGenerated/index.html | 2 +- .../infer/ATDGenerated__Jsonbug_j/index.html | 2 +- .../infer/ATDGenerated__Jsonbug_t/index.html | 2 +- .../next/infer/Absint/Annotations/index.html | 2 +- .../odoc/next/infer/Absint/Exe_env/index.html | 2 +- .../next/infer/Absint__Annotations/index.html | 2 +- .../next/infer/Absint__Exe_env/index.html | 2 +- .../Backend/Payloads/Fields/Direct/index.html | 2 +- .../infer/Backend/Payloads/Fields/index.html | 2 +- .../next/infer/Backend/Payloads/index.html | 2 +- .../infer/Backend/Summary/OnDisk/index.html | 2 +- .../Fields/Direct/index.html | 2 +- .../infer/Backend__Payloads/Fields/index.html | 2 +- .../next/infer/Backend__Payloads/index.html | 2 +- .../infer/Backend__Summary/OnDisk/index.html | 2 +- .../odoc/next/infer/Checkers/index.html | 2 +- .../StarvationDomain/Event/index.html | 2 +- .../Concurrency/StarvationDomain/index.html | 2 +- .../Concurrency/StarvationModels/index.html | 2 +- .../Event/index.html | 2 +- .../Concurrency__StarvationDomain/index.html | 2 +- .../Concurrency__StarvationModels/index.html | 2 +- .../odoc/next/infer/IBase/Checker/index.html | 2 +- .../odoc/next/infer/IBase/Config/index.html | 2 +- .../next/infer/IBase/IssueType/index.html | 2 +- .../IBase/ResultsDirEntryName/index.html | 2 +- .../odoc/next/infer/IBase__Checker/index.html | 2 +- .../odoc/next/infer/IBase__Config/index.html | 2 +- .../next/infer/IBase__IssueType/index.html | 2 +- .../IBase__ResultsDirEntryName/index.html | 2 +- .../static/odoc/next/infer/IR/Pvar/index.html | 2 +- .../static/odoc/next/infer/IR/Typ/index.html | 2 +- .../odoc/next/infer/IR__Pvar/index.html | 2 +- .../static/odoc/next/infer/IR__Typ/index.html | 2 +- .../infer/IStdlib/RecencyMap/Make/index.html | 2 +- .../RecencyMap/module-type-S/index.html | 2 +- .../next/infer/IStdlib/RevList/index.html | 2 +- .../infer/IStdlib__RecencyMap/Make/index.html | 2 +- .../module-type-S/index.html | 2 +- .../next/infer/IStdlib__RevList/index.html | 2 +- .../infer/Integration/JsonReports/index.html | 2 +- .../infer/Integration__JsonReports/index.html | 2 +- .../PostDomain/index.html | 2 +- .../PulseAbductiveDomain/PreDomain/index.html | 2 +- .../Pulselib/PulseAbductiveDomain/index.html | 2 +- .../module-type-BaseDomainSig/index.html | 2 +- .../infer/Pulselib/PulseArithmetic/index.html | 2 +- .../PulseBaseAddressAttributes/index.html | 2 +- .../infer/Pulselib/PulseBaseDomain/index.html | 2 +- .../Pulselib/PulseBaseMemory/Edges/index.html | 2 +- .../infer/Pulselib/PulseBaseMemory/index.html | 2 +- .../infer/Pulselib/PulseBaseStack/index.html | 2 +- .../infer/Pulselib/PulseReport/index.html | 2 +- .../next/infer/Pulselib/PulseTrace/index.html | 2 +- .../Pulselib/PulseValueHistory/index.html | 2 +- .../odoc/next/infer/Pulselib/index.html | 2 +- .../PostDomain/index.html | 2 +- .../PreDomain/index.html | 2 +- .../Pulselib__PulseAbductiveDomain/index.html | 2 +- .../module-type-BaseDomainSig/index.html | 2 +- .../Pulselib__PulseArithmetic/index.html | 2 +- .../index.html | 2 +- .../Pulselib__PulseBaseDomain/index.html | 2 +- .../Edges/index.html | 2 +- .../Pulselib__PulseBaseMemory/index.html | 2 +- .../infer/Pulselib__PulseBaseStack/index.html | 2 +- .../infer/Pulselib__PulseReport/index.html | 2 +- .../infer/Pulselib__PulseTrace/index.html | 2 +- .../Pulselib__PulseValueHistory/index.html | 2 +- 82 files changed, 276 insertions(+), 85 deletions(-) diff --git a/website/checkers.json b/website/checkers.json index 73952ce33..f28546728 100644 --- a/website/checkers.json +++ b/website/checkers.json @@ -4,11 +4,11 @@ "doc_entries": [ "all-issue-types", "checker-annotation-reachability", "checker-biabduction", "checker-bufferoverrun", - "checker-config-checks-between-markers", "checker-cost", - "checker-eradicate", "checker-fragment-retains-view", - "checker-immutable-cast", "checker-impurity", - "checker-inefficient-keyset-iterator", "checker-linters", - "checker-litho-required-props", "checker-liveness", + "checker-config-checks-between-markers", + "checker-config-impact-analysis", "checker-cost", "checker-eradicate", + "checker-fragment-retains-view", "checker-immutable-cast", + "checker-impurity", "checker-inefficient-keyset-iterator", + "checker-linters", "checker-litho-required-props", "checker-liveness", "checker-loop-hoisting", "checker-printf-args", "checker-pulse", "checker-purity", "checker-quandary", "checker-racerd", "checker-resource-leak-lab", "checker-dotnet-resource-leak", diff --git a/website/docs/all-issue-types.md b/website/docs/all-issue-types.md index 651dca4c6..d34586962 100644 --- a/website/docs/all-issue-types.md +++ b/website/docs/all-issue-types.md @@ -297,6 +297,11 @@ A condition expression is **always** evaluated to true. Reported as "Config Checks Between Markers" by [config-checks-between-markers](/docs/next/checker-config-checks-between-markers). A config checking is done between a marker's start and end +## CONFIG_IMPACT + +Reported as "Config Impact" by [config-impact-analysis](/docs/next/checker-config-impact-analysis). + +A function is called without a config check ## CONSTANT_ADDRESS_DEREFERENCE Reported as "Constant Address Dereference" by [pulse](/docs/next/checker-pulse). @@ -936,6 +941,27 @@ class C { Action: Protect the offending access by acquiring the lock indicated by the `@GuardedBy(...)`. +## GUARDEDBY_VIOLATION_NULLSAFE + +Reported as "GuardedBy Violation in `@Nullsafe` Class" by [racerd](/docs/next/checker-racerd). + +A field annotated with `@GuardedBy` is being accessed by a call-chain that starts at a non-private method without synchronization. + +Example: + +```java +class C { + @GuardedBy("this") + String f; + + void foo(String s) { + f = s; // unprotected access here + } +} +``` + +Action: Protect the offending access by acquiring the lock indicated by the `@GuardedBy(...)`. + ## IMPURE_FUNCTION Reported as "Impure Function" by [impurity](/docs/next/checker-impurity). @@ -1494,9 +1520,9 @@ created, and not an array `@[@"aaa", str, @"bbb"]` of size 3 as expected. ## PULSE_UNINITIALIZED_VALUE -Reported as "Unitialized Value" by [pulse](/docs/next/checker-pulse). +Reported as "Uninitialized Value" by [pulse](/docs/next/checker-pulse). -See [UNITIALIZED_VALUE](#uninitialized_value). Re-implemented using Pulse. +See [UNINITIALIZED_VALUE](#uninitialized_value). Re-implemented using Pulse. ## PURE_FUNCTION Reported as "Pure Function" by [purity](/docs/next/checker-purity). @@ -2069,6 +2095,102 @@ NB RacerD currently **does not recognize `@WorkerThread`, `@BinderThread` or These annotations can be found at `com.facebook.infer.annotation.*`. +- `@Functional` This is a method annotation indicating the method always returns + the same value. When a method `foo` is annotated `@Functional`, RacerD will + ignore any writes of the return value of `foo`. For example, in + `this.x = foo()`, the write to `this.x` is ignored. The reasoning is that if + the method returns the same value whenever it's called, any data race on + `this.x` is benign, if that is the only write. + +- `@ThreadConfined` This is a class/method/field annotation which takes a single + parameter which can be `UI`, `ANY` or a user chosen string. It indicates to + RacerD a thread identifier for the class/method/field. Thus, + `@ThreadConfined(UI)` is equivalent to `@UiThread`, and `@ThreadConfined(ANY)` + is equivalent to not having the annotation at all, for classes and methods. + When this annotation is applied to a field it instructs Infer to assume + (without checking) that all accesses to that field are made on the same thread + (and can, therefore, not race by definition). The intention is that RacerD + uses that to detect exclusion between accesses occurring on the same thread. + However, only the UI thread is supported at this time, and any user provided + value is considered equal to `UI`. + +- `@VisibleForTesting` A method annotation making Infer consider the method as + effectively `private`. This means it will not be checked for races against + other non-private methods of the class, but only if called by one. + +- `@ReturnsOwnership` A method annotation indicating that the method returns a + freshly owned object. Accesses to the returned value will not be considered + for data races, as the object is in-effect unique and not accessible yet from + other threads. The main utility of this annotation is in interfaces, where + Infer cannot look up the implementation and decide for itself. + +## THREAD_SAFETY_VIOLATION_NULLSAFE + +Reported as "Thread Safety Violation in `@Nullsafe` Class" by [racerd](/docs/next/checker-racerd). + +This warning indicates a potential data race in Java. The analyser is called +RacerD and this section gives brief but a mostly complete description of its +features. See the [RacerD page](/docs/next/checker-racerd) for more in-depth information and +examples. + +### Thread-safety: What is a data race + +Here a data race is a pair of accesses to the same member field such that: + +- at least one is a write, and, +- at least one occurs without any lock synchronization, and, +- the two accesses occur on threads (if known) which can run in parallel. + +### Thread-safety: Potential fixes + +- Synchronizing the accesses (using the `synchronized` keyword, thread-exclusion + such as atomic objects, `volatile` etc). +- Making an offending method private -- this will exclude it from being checked + at the top level, though it will be checked if called by a public method which + may itself, e.g., hold a lock when calling it. +- Putting the two accesses on the same thread, e.g., by using `@MainThread` or + `@ThreadConfined`. + +### Thread-safety: Conditions checked before reporting + +The class and method are not marked `@ThreadSafe(enableChecks = false)`, and, + +- The method is declared `synchronized`, or employs (non-transitively) locking, + or, +- The class is not marked `@NotThreadSafe`, and, + - The class/method is marked `@ThreadSafe,` or one of the configured synonyms + in `.inferconfig`, or, + - A parent class, or an override method are marked with the above annotations. + +NB currently RacerD **does not take into account `@GuardedBy`**. + +### Thread-safety: Thread annotations recognized by RacerD + +These class and method annotations imply the method is on the main thread: +`@MainThread`, `@UiThread` + +These method annotations imply the method is on the main thread: `@OnBind`, +`@OnEvent`, `@OnMount`, `@OnUnbind`, `@OnUnmount` + +Both classes of annotations work through the inheritance tree (i.e. if a parent +class or method is marked with one of these annotations, so is the child class / +method override). + +In addition to these, RacerD recognizes many lifecycle methods as necessarily +running on the main thread, eg `Fragment.onCreate` etc. + +Finally, the thread status of being on the main thread propagates backwards +through the call graph (ie if `foo` calls `bar` and `bar` is marked `@UiThtread` +then `foo` is automatically considered on the main thread too). Calling +`assertMainThread`, `assertOnUiThread`, `checkOnMainThread` has the same effect. + +NB RacerD currently **does not recognize `@WorkerThread`, `@BinderThread` or +`@AnyThread`**. + +### Thread-safety: Other annotations and what they do + +These annotations can be found at `com.facebook.infer.annotation.*`. + - `@Functional` This is a method annotation indicating the method always returns the same value. When a method `foo` is annotated `@Functional`, RacerD will ignore any writes of the return value of `foo`. For example, in diff --git a/website/docs/checker-config-checks-between-markers.md b/website/docs/checker-config-checks-between-markers.md index c82c32999..be98147d8 100644 --- a/website/docs/checker-config-checks-between-markers.md +++ b/website/docs/checker-config-checks-between-markers.md @@ -12,7 +12,7 @@ Supported languages: - Java: Experimental - C#/.Net: Experimental -This checker is currently only useful for certain Facebook code. +This checker collects config checkings in some program regions determined by pairs of marker-starts and marker-ends. The set of config checking functions, marker-start functions, and marker-end functions is hardcoded and empty by default for now, so to use this checker, please modify the code directly in [FbGKInteraction.ml](https://github.com/facebook/infer/tree/master/infer/src/opensource). ## List of Issue Types diff --git a/website/docs/checker-cost.md b/website/docs/checker-cost.md index a42b24648..0a37bb3ef 100644 --- a/website/docs/checker-cost.md +++ b/website/docs/checker-cost.md @@ -70,10 +70,10 @@ where `foo` has a linear cost in its parameter, then Infer automatically detects Unlike other Infer analyses (which report found issues/bugs when running infer once), cost analysis only reports an issue for differential analysis (i.e. when comparing the analysis results on the original and the modified files). Instead, infer writes the execution cost of the program into `infer-out/costs-report.json` file. For each procedure, `costs-report.json` includes the actual polynomial (for the exection cost) along with the degree of the polynomial, the procedure name, line number etc. Differential cost analysis in action: -- first run infer's cost analysis on `File.java` and rename `costs-report.json` (which is in `/infer-out`) to `previous-costs-report.json` -- modify the function as shown above -- re-run infer on `File.java` and rename `costs-report.json` to `current-costs-report.json` -- run `infer reportdiff --costs-current current-costs-report.json --costs-previous current-costs-report`. +- first run infer's cost analysis on `File.java` and copy `inter-out/costs-report.json` to `previous-costs-report.json` (Note that the file should be copied outside the result directory because the directory will be removed in the second infer run.) +- modify `File.java` as shown above +- re-run infer on `File.java` and copy `infer-out/costs-report.json` to `current-costs-report.json` +- run `infer reportdiff --costs-current current-costs-report.json --costs-previous previous-costs-report.json`. - Inspect `infer-out/differential/introduced.json` to see the newly found complexity increase issue(s). diff --git a/website/docs/checker-racerd.md b/website/docs/checker-racerd.md index 514e83e74..c0835ab21 100644 --- a/website/docs/checker-racerd.md +++ b/website/docs/checker-racerd.md @@ -500,6 +500,8 @@ resource. The following issue types are reported by this checker: - [GUARDEDBY_VIOLATION](/docs/next/all-issue-types#guardedby_violation) +- [GUARDEDBY_VIOLATION_NULLSAFE](/docs/next/all-issue-types#guardedby_violation_nullsafe) - [INTERFACE_NOT_THREAD_SAFE](/docs/next/all-issue-types#interface_not_thread_safe) - [LOCK_CONSISTENCY_VIOLATION](/docs/next/all-issue-types#lock_consistency_violation) - [THREAD_SAFETY_VIOLATION](/docs/next/all-issue-types#thread_safety_violation) +- [THREAD_SAFETY_VIOLATION_NULLSAFE](/docs/next/all-issue-types#thread_safety_violation_nullsafe) diff --git a/website/static/man/next/infer-analyze.1.html b/website/static/man/next/infer-analyze.1.html index 11cef6490..bd6abafad 100644 --- a/website/static/man/next/infer-analyze.1.html +++ b/website/static/man/next/infer-analyze.1.html @@ -133,6 +133,21 @@ config-checks-between-markers and disable all other checkers (Conversely: --no-config-checks-between-markers-only)

+ +

--config-impact-analysis

+ +

Activates: checker +config-impact-analysis: [EXPERIMENTAL] Collects function +that are called without config checks. (Conversely: +--no-config-impact-analysis)

+ + +

--config-impact-analysis-only

+ +

Activates: Enable +config-impact-analysis and disable all other checkers +(Conversely: --no-config-impact-analysis-only)

+

--continue-analysis

Activates: Continue the diff --git a/website/static/man/next/infer-capture.1.html b/website/static/man/next/infer-capture.1.html index bcbad8c67..be5be53eb 100644 --- a/website/static/man/next/infer-capture.1.html +++ b/website/static/man/next/infer-capture.1.html @@ -508,6 +508,13 @@ frontend tests (also sets --print-types) (Conversely: header files (Conversely: --no-headers)

+

--skip-non-capture-clang-commands

+ +

Activates: Skip clang commands +that Infer doesn't use to capture data (Conversely: +--no-skip-non-capture-clang-commands)

+ +

--skip-translation-headers +path_prefix

diff --git a/website/static/man/next/infer-report.1.html b/website/static/man/next/infer-report.1.html index 2cddf6a00..c05aecd2e 100644 --- a/website/static/man/next/infer-report.1.html +++ b/website/static/man/next/infer-report.1.html @@ -87,6 +87,13 @@ are tested by the regex are relative to the ‘<reason_string>‘ is a non-empty string used to explain why the issue was filtered.

+ +

--config-impact-data-file +file

+ +

[ConfigImpact] Specify the file +containing the config data

+

--cost-issues-tests file

@@ -213,6 +220,7 @@ default),
CONDITION_ALWAYS_FALSE (disabled by default),
CONDITION_ALWAYS_TRUE (disabled by default),
CONFIG_CHECKS_BETWEEN_MARKERS (disabled by default),
+CONFIG_IMPACT (disabled by default),
CONSTANT_ADDRESS_DEREFERENCE (disabled by default),
CREATE_INTENT_FROM_URI (enabled by default),
CROSS_SITE_SCRIPTING (enabled by default),
@@ -275,6 +283,7 @@ GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL
(disabled by default),
GUARDEDBY_VIOLATION (enabled by default),
+GUARDEDBY_VIOLATION_NULLSAFE (enabled by default),
IMPURE_FUNCTION (enabled by default),
INEFFICIENT_KEYSET_ITERATOR (enabled by default),
INFERBO_ALLOC_IS_BIG (enabled by default),
@@ -338,6 +347,7 @@ STRONG_DELEGATE_WARNING (enabled by default),
STRONG_SELF_NOT_CHECKED (enabled by default),
Symexec_memory_error (enabled by default),
THREAD_SAFETY_VIOLATION (enabled by default),
+THREAD_SAFETY_VIOLATION_NULLSAFE (enabled by default),
TOPL_BIABD_ERROR (enabled by default),
TOPL_PULSE_ERROR (enabled by default),
UNINITIALIZED_VALUE (enabled by default),
diff --git a/website/static/man/next/infer.1.html b/website/static/man/next/infer.1.html index 8323f49d5..01bdc65f4 100644 --- a/website/static/man/next/infer.1.html +++ b/website/static/man/next/infer.1.html @@ -455,6 +455,30 @@ config-checks-between-markers and disable all other checkers

See also infer-analyze(1).
+--config-impact-analysis

+ +

Activates: checker +config-impact-analysis: [EXPERIMENTAL] Collects function +that are called without config checks. (Conversely: +--no-config-impact-analysis)

+ +

See also +infer-analyze(1).
+--config-impact-analysis-only

+ +

Activates: Enable +config-impact-analysis and disable all other checkers +(Conversely: --no-config-impact-analysis-only)

+ +

See also +infer-analyze(1).
+--config-impact-data-file
file

+ +

[ConfigImpact] Specify the file +containing the config data

+ +

See also +infer-report(1).
--continue

Activates: Continue the capture @@ -723,6 +747,7 @@ default),
CONDITION_ALWAYS_FALSE (disabled by default),
CONDITION_ALWAYS_TRUE (disabled by default),
CONFIG_CHECKS_BETWEEN_MARKERS (disabled by default),
+CONFIG_IMPACT (disabled by default),
CONSTANT_ADDRESS_DEREFERENCE (disabled by default),
CREATE_INTENT_FROM_URI (enabled by default),
CROSS_SITE_SCRIPTING (enabled by default),
@@ -785,6 +810,7 @@ GLOBAL_VARIABLE_INITIALIZED_WITH_FUNCTION_OR_METHOD_CALL
(disabled by default),
GUARDEDBY_VIOLATION (enabled by default),
+GUARDEDBY_VIOLATION_NULLSAFE (enabled by default),
IMPURE_FUNCTION (enabled by default),
INEFFICIENT_KEYSET_ITERATOR (enabled by default),
INFERBO_ALLOC_IS_BIG (enabled by default),
@@ -848,6 +874,7 @@ STRONG_DELEGATE_WARNING (enabled by default),
STRONG_SELF_NOT_CHECKED (enabled by default),
Symexec_memory_error (enabled by default),
THREAD_SAFETY_VIOLATION (enabled by default),
+THREAD_SAFETY_VIOLATION_NULLSAFE (enabled by default),
TOPL_BIABD_ERROR (enabled by default),
TOPL_PULSE_ERROR (enabled by default),
UNINITIALIZED_VALUE (enabled by default),
@@ -1952,6 +1979,14 @@ differential reports (Conversely:

See also infer-reportdiff(1).
+--skip-non-capture-clang-commands

+ +

Activates: Skip clang commands +that Infer doesn't use to capture data (Conversely: +--no-skip-non-capture-clang-commands)

+ +

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

Ignore headers whose path diff --git a/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html b/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html index f83288ed5..ac6dbe471 100644 --- a/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html +++ b/website/static/odoc/next/infer/ASTLanguage/CPredicates/index.html @@ -1,5 +1,5 @@ -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
+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 atomic objc ivar

val is_ivar_readonly : Ctl_parser_types.ast_node -> bool

is_ivar_readonly an is true iff an denotes a readonly 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 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__CPredicates/index.html b/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html index fc6fbb3e7..fd15b0390 100644 --- a/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html +++ b/website/static/odoc/next/infer/ASTLanguage__CPredicates/index.html @@ -1,5 +1,5 @@ -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
+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 atomic objc ivar

val is_ivar_readonly : ASTLanguage.Ctl_parser_types.ast_node -> bool

is_ivar_readonly an is true iff an denotes a readonly 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 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/ATDGenerated/Jsonbug_j/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html index 014e1019b..8cb193fcb 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_j/index.html @@ -1,2 +1,2 @@ -Jsonbug_j (infer.ATDGenerated.Jsonbug_j)

Module ATDGenerated.Jsonbug_j

type issue_method = Jsonbug_t.issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = Jsonbug_t.parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = Jsonbug_t.nullsafe_mode
type nullsafe_meta_issue_info = Jsonbug_t.nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = Jsonbug_t.method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = Jsonbug_t.field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = Jsonbug_t.access_level
type annotation_point_method = Jsonbug_t.annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = Jsonbug_t.annotation_point_kind
type annotation_point = Jsonbug_t.annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = Jsonbug_t.nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = Jsonbug_t.loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = Jsonbug_t.json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = Jsonbug_t.extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = Jsonbug_t.jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = Jsonbug_t.report
type hum_info = Jsonbug_t.hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = Jsonbug_t.cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = Jsonbug_t.cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = Jsonbug_t.costs_report
val write_issue_method : Bi_outbuf.t -> issue_method -> unit

Output a JSON value of type issue_method.

val string_of_issue_method : ?⁠len:int -> issue_method -> string

Serialize a value of type issue_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_issue_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> issue_method

Input JSON data of type issue_method.

val issue_method_of_string : string -> issue_method

Deserialize JSON data of type issue_method.

val write_parameter_not_nullable_info : Bi_outbuf.t -> parameter_not_nullable_info -> unit

Output a JSON value of type parameter_not_nullable_info.

val string_of_parameter_not_nullable_info : ?⁠len:int -> parameter_not_nullable_info -> string

Serialize a value of type parameter_not_nullable_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_parameter_not_nullable_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> parameter_not_nullable_info

Input JSON data of type parameter_not_nullable_info.

val parameter_not_nullable_info_of_string : string -> parameter_not_nullable_info

Deserialize JSON data of type parameter_not_nullable_info.

val write_nullsafe_mode : Bi_outbuf.t -> nullsafe_mode -> unit

Output a JSON value of type nullsafe_mode.

val string_of_nullsafe_mode : ?⁠len:int -> nullsafe_mode -> string

Serialize a value of type nullsafe_mode into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_mode : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_mode

Input JSON data of type nullsafe_mode.

val nullsafe_mode_of_string : string -> nullsafe_mode

Deserialize JSON data of type nullsafe_mode.

val write_nullsafe_meta_issue_info : Bi_outbuf.t -> nullsafe_meta_issue_info -> unit

Output a JSON value of type nullsafe_meta_issue_info.

val string_of_nullsafe_meta_issue_info : ?⁠len:int -> nullsafe_meta_issue_info -> string

Serialize a value of type nullsafe_meta_issue_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_meta_issue_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_meta_issue_info

Input JSON data of type nullsafe_meta_issue_info.

val nullsafe_meta_issue_info_of_string : string -> nullsafe_meta_issue_info

Deserialize JSON data of type nullsafe_meta_issue_info.

val write_method_info : Bi_outbuf.t -> method_info -> unit

Output a JSON value of type method_info.

val string_of_method_info : ?⁠len:int -> method_info -> string

Serialize a value of type method_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_method_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> method_info

Input JSON data of type method_info.

val method_info_of_string : string -> method_info

Deserialize JSON data of type method_info.

val write_field_name : Bi_outbuf.t -> field_name -> unit

Output a JSON value of type field_name.

val string_of_field_name : ?⁠len:int -> field_name -> string

Serialize a value of type field_name into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_field_name : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> field_name

Input JSON data of type field_name.

val field_name_of_string : string -> field_name

Deserialize JSON data of type field_name.

val write_access_level : Bi_outbuf.t -> access_level -> unit

Output a JSON value of type access_level.

val string_of_access_level : ?⁠len:int -> access_level -> string

Serialize a value of type access_level into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_access_level : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> access_level

Input JSON data of type access_level.

val access_level_of_string : string -> access_level

Deserialize JSON data of type access_level.

val write_annotation_point_method : Bi_outbuf.t -> annotation_point_method -> unit

Output a JSON value of type annotation_point_method.

val string_of_annotation_point_method : ?⁠len:int -> annotation_point_method -> string

Serialize a value of type annotation_point_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_method

Input JSON data of type annotation_point_method.

val annotation_point_method_of_string : string -> annotation_point_method

Deserialize JSON data of type annotation_point_method.

val write_annotation_point_kind : Bi_outbuf.t -> annotation_point_kind -> unit

Output a JSON value of type annotation_point_kind.

val string_of_annotation_point_kind : ?⁠len:int -> annotation_point_kind -> string

Serialize a value of type annotation_point_kind into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_kind

Input JSON data of type annotation_point_kind.

val annotation_point_kind_of_string : string -> annotation_point_kind

Deserialize JSON data of type annotation_point_kind.

val write_annotation_point : Bi_outbuf.t -> annotation_point -> unit

Output a JSON value of type annotation_point.

val string_of_annotation_point : ?⁠len:int -> annotation_point -> string

Serialize a value of type annotation_point into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point

Input JSON data of type annotation_point.

val annotation_point_of_string : string -> annotation_point

Deserialize JSON data of type annotation_point.

val write_nullsafe_extra : Bi_outbuf.t -> nullsafe_extra -> unit

Output a JSON value of type nullsafe_extra.

val string_of_nullsafe_extra : ?⁠len:int -> nullsafe_extra -> string

Serialize a value of type nullsafe_extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_extra

Input JSON data of type nullsafe_extra.

val nullsafe_extra_of_string : string -> nullsafe_extra

Deserialize JSON data of type nullsafe_extra.

val write_loc : Bi_outbuf.t -> loc -> unit

Output a JSON value of type loc.

val string_of_loc : ?⁠len:int -> loc -> string

Serialize a value of type loc into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

Input JSON data of type loc.

val loc_of_string : string -> loc

Deserialize JSON data of type loc.

val write_json_trace_item : Bi_outbuf.t -> json_trace_item -> unit

Output a JSON value of type json_trace_item.

val string_of_json_trace_item : ?⁠len:int -> json_trace_item -> string

Serialize a value of type json_trace_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_json_trace_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> json_trace_item

Input JSON data of type json_trace_item.

val json_trace_item_of_string : string -> json_trace_item

Deserialize JSON data of type json_trace_item.

val write_extra : Bi_outbuf.t -> extra -> unit

Output a JSON value of type extra.

val string_of_extra : ?⁠len:int -> extra -> string

Serialize a value of type extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> extra

Input JSON data of type extra.

val extra_of_string : string -> extra

Deserialize JSON data of type extra.

val write_jsonbug : Bi_outbuf.t -> jsonbug -> unit

Output a JSON value of type jsonbug.

val string_of_jsonbug : ?⁠len:int -> jsonbug -> string

Serialize a value of type jsonbug into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_jsonbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> jsonbug

Input JSON data of type jsonbug.

val jsonbug_of_string : string -> jsonbug

Deserialize JSON data of type jsonbug.

val write_report : Bi_outbuf.t -> report -> unit

Output a JSON value of type report.

val string_of_report : ?⁠len:int -> report -> string

Serialize a value of type report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

Input JSON data of type report.

val report_of_string : string -> report

Deserialize JSON data of type report.

val write_hum_info : Bi_outbuf.t -> hum_info -> unit

Output a JSON value of type hum_info.

val string_of_hum_info : ?⁠len:int -> hum_info -> string

Serialize a value of type hum_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_hum_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> hum_info

Input JSON data of type hum_info.

val hum_info_of_string : string -> hum_info

Deserialize JSON data of type hum_info.

val write_cost_info : Bi_outbuf.t -> cost_info -> unit

Output a JSON value of type cost_info.

val string_of_cost_info : ?⁠len:int -> cost_info -> string

Serialize a value of type cost_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_info

Input JSON data of type cost_info.

val cost_info_of_string : string -> cost_info

Deserialize JSON data of type cost_info.

val write_cost_item : Bi_outbuf.t -> cost_item -> unit

Output a JSON value of type cost_item.

val string_of_cost_item : ?⁠len:int -> cost_item -> string

Serialize a value of type cost_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_item

Input JSON data of type cost_item.

val cost_item_of_string : string -> cost_item

Deserialize JSON data of type cost_item.

val write_costs_report : Bi_outbuf.t -> costs_report -> unit

Output a JSON value of type costs_report.

val string_of_costs_report : ?⁠len:int -> costs_report -> string

Serialize a value of type costs_report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_costs_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> costs_report

Input JSON data of type costs_report.

val costs_report_of_string : string -> costs_report

Deserialize JSON data of type costs_report.

\ No newline at end of file +Jsonbug_j (infer.ATDGenerated.Jsonbug_j)

Module ATDGenerated.Jsonbug_j

type issue_method = Jsonbug_t.issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = Jsonbug_t.parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = Jsonbug_t.nullsafe_mode
type nullsafe_meta_issue_info = Jsonbug_t.nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = Jsonbug_t.method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = Jsonbug_t.field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = Jsonbug_t.access_level
type annotation_point_method = Jsonbug_t.annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = Jsonbug_t.annotation_point_kind
type annotation_point = Jsonbug_t.annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = Jsonbug_t.nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = Jsonbug_t.loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = Jsonbug_t.json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = Jsonbug_t.extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = Jsonbug_t.jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = Jsonbug_t.report
type hum_info = Jsonbug_t.hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = Jsonbug_t.cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = Jsonbug_t.cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = Jsonbug_t.costs_report
type config_impact_item = Jsonbug_t.config_impact_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
unchecked_callees : string;
}
type config_impact_report = Jsonbug_t.config_impact_report
val write_issue_method : Bi_outbuf.t -> issue_method -> unit

Output a JSON value of type issue_method.

val string_of_issue_method : ?⁠len:int -> issue_method -> string

Serialize a value of type issue_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_issue_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> issue_method

Input JSON data of type issue_method.

val issue_method_of_string : string -> issue_method

Deserialize JSON data of type issue_method.

val write_parameter_not_nullable_info : Bi_outbuf.t -> parameter_not_nullable_info -> unit

Output a JSON value of type parameter_not_nullable_info.

val string_of_parameter_not_nullable_info : ?⁠len:int -> parameter_not_nullable_info -> string

Serialize a value of type parameter_not_nullable_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_parameter_not_nullable_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> parameter_not_nullable_info

Input JSON data of type parameter_not_nullable_info.

val parameter_not_nullable_info_of_string : string -> parameter_not_nullable_info

Deserialize JSON data of type parameter_not_nullable_info.

val write_nullsafe_mode : Bi_outbuf.t -> nullsafe_mode -> unit

Output a JSON value of type nullsafe_mode.

val string_of_nullsafe_mode : ?⁠len:int -> nullsafe_mode -> string

Serialize a value of type nullsafe_mode into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_mode : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_mode

Input JSON data of type nullsafe_mode.

val nullsafe_mode_of_string : string -> nullsafe_mode

Deserialize JSON data of type nullsafe_mode.

val write_nullsafe_meta_issue_info : Bi_outbuf.t -> nullsafe_meta_issue_info -> unit

Output a JSON value of type nullsafe_meta_issue_info.

val string_of_nullsafe_meta_issue_info : ?⁠len:int -> nullsafe_meta_issue_info -> string

Serialize a value of type nullsafe_meta_issue_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_meta_issue_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_meta_issue_info

Input JSON data of type nullsafe_meta_issue_info.

val nullsafe_meta_issue_info_of_string : string -> nullsafe_meta_issue_info

Deserialize JSON data of type nullsafe_meta_issue_info.

val write_method_info : Bi_outbuf.t -> method_info -> unit

Output a JSON value of type method_info.

val string_of_method_info : ?⁠len:int -> method_info -> string

Serialize a value of type method_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_method_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> method_info

Input JSON data of type method_info.

val method_info_of_string : string -> method_info

Deserialize JSON data of type method_info.

val write_field_name : Bi_outbuf.t -> field_name -> unit

Output a JSON value of type field_name.

val string_of_field_name : ?⁠len:int -> field_name -> string

Serialize a value of type field_name into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_field_name : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> field_name

Input JSON data of type field_name.

val field_name_of_string : string -> field_name

Deserialize JSON data of type field_name.

val write_access_level : Bi_outbuf.t -> access_level -> unit

Output a JSON value of type access_level.

val string_of_access_level : ?⁠len:int -> access_level -> string

Serialize a value of type access_level into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_access_level : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> access_level

Input JSON data of type access_level.

val access_level_of_string : string -> access_level

Deserialize JSON data of type access_level.

val write_annotation_point_method : Bi_outbuf.t -> annotation_point_method -> unit

Output a JSON value of type annotation_point_method.

val string_of_annotation_point_method : ?⁠len:int -> annotation_point_method -> string

Serialize a value of type annotation_point_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_method

Input JSON data of type annotation_point_method.

val annotation_point_method_of_string : string -> annotation_point_method

Deserialize JSON data of type annotation_point_method.

val write_annotation_point_kind : Bi_outbuf.t -> annotation_point_kind -> unit

Output a JSON value of type annotation_point_kind.

val string_of_annotation_point_kind : ?⁠len:int -> annotation_point_kind -> string

Serialize a value of type annotation_point_kind into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_kind

Input JSON data of type annotation_point_kind.

val annotation_point_kind_of_string : string -> annotation_point_kind

Deserialize JSON data of type annotation_point_kind.

val write_annotation_point : Bi_outbuf.t -> annotation_point -> unit

Output a JSON value of type annotation_point.

val string_of_annotation_point : ?⁠len:int -> annotation_point -> string

Serialize a value of type annotation_point into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point

Input JSON data of type annotation_point.

val annotation_point_of_string : string -> annotation_point

Deserialize JSON data of type annotation_point.

val write_nullsafe_extra : Bi_outbuf.t -> nullsafe_extra -> unit

Output a JSON value of type nullsafe_extra.

val string_of_nullsafe_extra : ?⁠len:int -> nullsafe_extra -> string

Serialize a value of type nullsafe_extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_extra

Input JSON data of type nullsafe_extra.

val nullsafe_extra_of_string : string -> nullsafe_extra

Deserialize JSON data of type nullsafe_extra.

val write_loc : Bi_outbuf.t -> loc -> unit

Output a JSON value of type loc.

val string_of_loc : ?⁠len:int -> loc -> string

Serialize a value of type loc into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

Input JSON data of type loc.

val loc_of_string : string -> loc

Deserialize JSON data of type loc.

val write_json_trace_item : Bi_outbuf.t -> json_trace_item -> unit

Output a JSON value of type json_trace_item.

val string_of_json_trace_item : ?⁠len:int -> json_trace_item -> string

Serialize a value of type json_trace_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_json_trace_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> json_trace_item

Input JSON data of type json_trace_item.

val json_trace_item_of_string : string -> json_trace_item

Deserialize JSON data of type json_trace_item.

val write_extra : Bi_outbuf.t -> extra -> unit

Output a JSON value of type extra.

val string_of_extra : ?⁠len:int -> extra -> string

Serialize a value of type extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> extra

Input JSON data of type extra.

val extra_of_string : string -> extra

Deserialize JSON data of type extra.

val write_jsonbug : Bi_outbuf.t -> jsonbug -> unit

Output a JSON value of type jsonbug.

val string_of_jsonbug : ?⁠len:int -> jsonbug -> string

Serialize a value of type jsonbug into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_jsonbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> jsonbug

Input JSON data of type jsonbug.

val jsonbug_of_string : string -> jsonbug

Deserialize JSON data of type jsonbug.

val write_report : Bi_outbuf.t -> report -> unit

Output a JSON value of type report.

val string_of_report : ?⁠len:int -> report -> string

Serialize a value of type report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

Input JSON data of type report.

val report_of_string : string -> report

Deserialize JSON data of type report.

val write_hum_info : Bi_outbuf.t -> hum_info -> unit

Output a JSON value of type hum_info.

val string_of_hum_info : ?⁠len:int -> hum_info -> string

Serialize a value of type hum_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_hum_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> hum_info

Input JSON data of type hum_info.

val hum_info_of_string : string -> hum_info

Deserialize JSON data of type hum_info.

val write_cost_info : Bi_outbuf.t -> cost_info -> unit

Output a JSON value of type cost_info.

val string_of_cost_info : ?⁠len:int -> cost_info -> string

Serialize a value of type cost_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_info

Input JSON data of type cost_info.

val cost_info_of_string : string -> cost_info

Deserialize JSON data of type cost_info.

val write_cost_item : Bi_outbuf.t -> cost_item -> unit

Output a JSON value of type cost_item.

val string_of_cost_item : ?⁠len:int -> cost_item -> string

Serialize a value of type cost_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_item

Input JSON data of type cost_item.

val cost_item_of_string : string -> cost_item

Deserialize JSON data of type cost_item.

val write_costs_report : Bi_outbuf.t -> costs_report -> unit

Output a JSON value of type costs_report.

val string_of_costs_report : ?⁠len:int -> costs_report -> string

Serialize a value of type costs_report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_costs_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> costs_report

Input JSON data of type costs_report.

val costs_report_of_string : string -> costs_report

Deserialize JSON data of type costs_report.

val write_config_impact_item : Bi_outbuf.t -> config_impact_item -> unit

Output a JSON value of type config_impact_item.

val string_of_config_impact_item : ?⁠len:int -> config_impact_item -> string

Serialize a value of type config_impact_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_config_impact_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> config_impact_item

Input JSON data of type config_impact_item.

val config_impact_item_of_string : string -> config_impact_item

Deserialize JSON data of type config_impact_item.

val write_config_impact_report : Bi_outbuf.t -> config_impact_report -> unit

Output a JSON value of type config_impact_report.

val string_of_config_impact_report : ?⁠len:int -> config_impact_report -> string

Serialize a value of type config_impact_report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_config_impact_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> config_impact_report

Input JSON data of type config_impact_report.

val config_impact_report_of_string : string -> config_impact_report

Deserialize JSON data of type config_impact_report.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html index e3c2789c9..9fca0c32c 100644 --- a/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/Jsonbug_t/index.html @@ -1,2 +1,2 @@ -Jsonbug_t (infer.ATDGenerated.Jsonbug_t)

Module ATDGenerated.Jsonbug_t

type issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = [
| `Default
| `LocalTrustAll
| `LocalTrustSome
| `LocalTrustNone
| `Strict
]
type nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = [
| `Private
| `Protected
| `Public
| `Default
]
type annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = [
| `Method
| `Field
| `Param
]
type annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = jsonbug list
type hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = cost_item list
\ No newline at end of file +Jsonbug_t (infer.ATDGenerated.Jsonbug_t)

Module ATDGenerated.Jsonbug_t

type issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = [
| `Default
| `LocalTrustAll
| `LocalTrustSome
| `LocalTrustNone
| `Strict
]
type nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = [
| `Private
| `Protected
| `Public
| `Default
]
type annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = [
| `Method
| `Field
| `Param
]
type annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = jsonbug list
type hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = cost_item list
type config_impact_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
unchecked_callees : string;
}
type config_impact_report = config_impact_item list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ATDGenerated/index.html b/website/static/odoc/next/infer/ATDGenerated/index.html index 71a9cee5c..4adae6187 100644 --- a/website/static/odoc/next/infer/ATDGenerated/index.html +++ b/website/static/odoc/next/infer/ATDGenerated/index.html @@ -1,2 +1,2 @@ -ATDGenerated (infer.ATDGenerated)

Module ATDGenerated

module Clang_ast_b : sig ... end
module Clang_ast_j : sig ... end
module Clang_ast_proj : sig ... end
module Clang_ast_t : sig ... end
module Clang_ast_types : sig ... end
module Clang_ast_v : sig ... end
module Clang_ast_visit : sig ... end
module Clang_profiler_samples_j : sig ... end
module Clang_profiler_samples_t : sig ... end
module InferCommand : sig ... end
module Java_method_decl_j : sig ... end
module Java_method_decl_t : sig ... end
module Java_profiler_samples_j : sig ... end
module Java_profiler_samples_t : sig ... end
module Jsonbug_j : sig ... end
module Jsonbug_t : sig ... end
module Runstate_j : sig ... end
module Runstate_t : sig ... end
\ No newline at end of file +ATDGenerated (infer.ATDGenerated)

Module ATDGenerated

module Clang_ast_b : sig ... end
module Clang_ast_j : sig ... end
module Clang_ast_proj : sig ... end
module Clang_ast_t : sig ... end
module Clang_ast_types : sig ... end
module Clang_ast_v : sig ... end
module Clang_ast_visit : sig ... end
module Clang_profiler_samples_j : sig ... end
module Clang_profiler_samples_t : sig ... end
module Config_impact_data_j : sig ... end
module Config_impact_data_t : sig ... end
module InferCommand : sig ... end
module Java_method_decl_j : sig ... end
module Java_method_decl_t : sig ... end
module Java_profiler_samples_j : sig ... end
module Java_profiler_samples_t : sig ... end
module Jsonbug_j : sig ... end
module Jsonbug_t : sig ... end
module Runstate_j : sig ... end
module Runstate_t : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/ATDGenerated__Jsonbug_j/index.html b/website/static/odoc/next/infer/ATDGenerated__Jsonbug_j/index.html index 10b4dfdb8..814378912 100644 --- a/website/static/odoc/next/infer/ATDGenerated__Jsonbug_j/index.html +++ b/website/static/odoc/next/infer/ATDGenerated__Jsonbug_j/index.html @@ -1,2 +1,2 @@ -ATDGenerated__Jsonbug_j (infer.ATDGenerated__Jsonbug_j)

Module ATDGenerated__Jsonbug_j

type issue_method = ATDGenerated.Jsonbug_t.issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = ATDGenerated.Jsonbug_t.parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = ATDGenerated.Jsonbug_t.nullsafe_mode
type nullsafe_meta_issue_info = ATDGenerated.Jsonbug_t.nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = ATDGenerated.Jsonbug_t.method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = ATDGenerated.Jsonbug_t.field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = ATDGenerated.Jsonbug_t.access_level
type annotation_point_method = ATDGenerated.Jsonbug_t.annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = ATDGenerated.Jsonbug_t.annotation_point_kind
type annotation_point = ATDGenerated.Jsonbug_t.annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = ATDGenerated.Jsonbug_t.nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = ATDGenerated.Jsonbug_t.loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = ATDGenerated.Jsonbug_t.json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = ATDGenerated.Jsonbug_t.extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = ATDGenerated.Jsonbug_t.jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = ATDGenerated.Jsonbug_t.report
type hum_info = ATDGenerated.Jsonbug_t.hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = ATDGenerated.Jsonbug_t.cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = ATDGenerated.Jsonbug_t.cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = ATDGenerated.Jsonbug_t.costs_report
val write_issue_method : Bi_outbuf.t -> issue_method -> unit

Output a JSON value of type issue_method.

val string_of_issue_method : ?⁠len:int -> issue_method -> string

Serialize a value of type issue_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_issue_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> issue_method

Input JSON data of type issue_method.

val issue_method_of_string : string -> issue_method

Deserialize JSON data of type issue_method.

val write_parameter_not_nullable_info : Bi_outbuf.t -> parameter_not_nullable_info -> unit

Output a JSON value of type parameter_not_nullable_info.

val string_of_parameter_not_nullable_info : ?⁠len:int -> parameter_not_nullable_info -> string

Serialize a value of type parameter_not_nullable_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_parameter_not_nullable_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> parameter_not_nullable_info

Input JSON data of type parameter_not_nullable_info.

val parameter_not_nullable_info_of_string : string -> parameter_not_nullable_info

Deserialize JSON data of type parameter_not_nullable_info.

val write_nullsafe_mode : Bi_outbuf.t -> nullsafe_mode -> unit

Output a JSON value of type nullsafe_mode.

val string_of_nullsafe_mode : ?⁠len:int -> nullsafe_mode -> string

Serialize a value of type nullsafe_mode into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_mode : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_mode

Input JSON data of type nullsafe_mode.

val nullsafe_mode_of_string : string -> nullsafe_mode

Deserialize JSON data of type nullsafe_mode.

val write_nullsafe_meta_issue_info : Bi_outbuf.t -> nullsafe_meta_issue_info -> unit

Output a JSON value of type nullsafe_meta_issue_info.

val string_of_nullsafe_meta_issue_info : ?⁠len:int -> nullsafe_meta_issue_info -> string

Serialize a value of type nullsafe_meta_issue_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_meta_issue_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_meta_issue_info

Input JSON data of type nullsafe_meta_issue_info.

val nullsafe_meta_issue_info_of_string : string -> nullsafe_meta_issue_info

Deserialize JSON data of type nullsafe_meta_issue_info.

val write_method_info : Bi_outbuf.t -> method_info -> unit

Output a JSON value of type method_info.

val string_of_method_info : ?⁠len:int -> method_info -> string

Serialize a value of type method_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_method_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> method_info

Input JSON data of type method_info.

val method_info_of_string : string -> method_info

Deserialize JSON data of type method_info.

val write_field_name : Bi_outbuf.t -> field_name -> unit

Output a JSON value of type field_name.

val string_of_field_name : ?⁠len:int -> field_name -> string

Serialize a value of type field_name into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_field_name : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> field_name

Input JSON data of type field_name.

val field_name_of_string : string -> field_name

Deserialize JSON data of type field_name.

val write_access_level : Bi_outbuf.t -> access_level -> unit

Output a JSON value of type access_level.

val string_of_access_level : ?⁠len:int -> access_level -> string

Serialize a value of type access_level into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_access_level : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> access_level

Input JSON data of type access_level.

val access_level_of_string : string -> access_level

Deserialize JSON data of type access_level.

val write_annotation_point_method : Bi_outbuf.t -> annotation_point_method -> unit

Output a JSON value of type annotation_point_method.

val string_of_annotation_point_method : ?⁠len:int -> annotation_point_method -> string

Serialize a value of type annotation_point_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_method

Input JSON data of type annotation_point_method.

val annotation_point_method_of_string : string -> annotation_point_method

Deserialize JSON data of type annotation_point_method.

val write_annotation_point_kind : Bi_outbuf.t -> annotation_point_kind -> unit

Output a JSON value of type annotation_point_kind.

val string_of_annotation_point_kind : ?⁠len:int -> annotation_point_kind -> string

Serialize a value of type annotation_point_kind into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_kind

Input JSON data of type annotation_point_kind.

val annotation_point_kind_of_string : string -> annotation_point_kind

Deserialize JSON data of type annotation_point_kind.

val write_annotation_point : Bi_outbuf.t -> annotation_point -> unit

Output a JSON value of type annotation_point.

val string_of_annotation_point : ?⁠len:int -> annotation_point -> string

Serialize a value of type annotation_point into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point

Input JSON data of type annotation_point.

val annotation_point_of_string : string -> annotation_point

Deserialize JSON data of type annotation_point.

val write_nullsafe_extra : Bi_outbuf.t -> nullsafe_extra -> unit

Output a JSON value of type nullsafe_extra.

val string_of_nullsafe_extra : ?⁠len:int -> nullsafe_extra -> string

Serialize a value of type nullsafe_extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_extra

Input JSON data of type nullsafe_extra.

val nullsafe_extra_of_string : string -> nullsafe_extra

Deserialize JSON data of type nullsafe_extra.

val write_loc : Bi_outbuf.t -> loc -> unit

Output a JSON value of type loc.

val string_of_loc : ?⁠len:int -> loc -> string

Serialize a value of type loc into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

Input JSON data of type loc.

val loc_of_string : string -> loc

Deserialize JSON data of type loc.

val write_json_trace_item : Bi_outbuf.t -> json_trace_item -> unit

Output a JSON value of type json_trace_item.

val string_of_json_trace_item : ?⁠len:int -> json_trace_item -> string

Serialize a value of type json_trace_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_json_trace_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> json_trace_item

Input JSON data of type json_trace_item.

val json_trace_item_of_string : string -> json_trace_item

Deserialize JSON data of type json_trace_item.

val write_extra : Bi_outbuf.t -> extra -> unit

Output a JSON value of type extra.

val string_of_extra : ?⁠len:int -> extra -> string

Serialize a value of type extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> extra

Input JSON data of type extra.

val extra_of_string : string -> extra

Deserialize JSON data of type extra.

val write_jsonbug : Bi_outbuf.t -> jsonbug -> unit

Output a JSON value of type jsonbug.

val string_of_jsonbug : ?⁠len:int -> jsonbug -> string

Serialize a value of type jsonbug into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_jsonbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> jsonbug

Input JSON data of type jsonbug.

val jsonbug_of_string : string -> jsonbug

Deserialize JSON data of type jsonbug.

val write_report : Bi_outbuf.t -> report -> unit

Output a JSON value of type report.

val string_of_report : ?⁠len:int -> report -> string

Serialize a value of type report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

Input JSON data of type report.

val report_of_string : string -> report

Deserialize JSON data of type report.

val write_hum_info : Bi_outbuf.t -> hum_info -> unit

Output a JSON value of type hum_info.

val string_of_hum_info : ?⁠len:int -> hum_info -> string

Serialize a value of type hum_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_hum_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> hum_info

Input JSON data of type hum_info.

val hum_info_of_string : string -> hum_info

Deserialize JSON data of type hum_info.

val write_cost_info : Bi_outbuf.t -> cost_info -> unit

Output a JSON value of type cost_info.

val string_of_cost_info : ?⁠len:int -> cost_info -> string

Serialize a value of type cost_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_info

Input JSON data of type cost_info.

val cost_info_of_string : string -> cost_info

Deserialize JSON data of type cost_info.

val write_cost_item : Bi_outbuf.t -> cost_item -> unit

Output a JSON value of type cost_item.

val string_of_cost_item : ?⁠len:int -> cost_item -> string

Serialize a value of type cost_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_item

Input JSON data of type cost_item.

val cost_item_of_string : string -> cost_item

Deserialize JSON data of type cost_item.

val write_costs_report : Bi_outbuf.t -> costs_report -> unit

Output a JSON value of type costs_report.

val string_of_costs_report : ?⁠len:int -> costs_report -> string

Serialize a value of type costs_report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_costs_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> costs_report

Input JSON data of type costs_report.

val costs_report_of_string : string -> costs_report

Deserialize JSON data of type costs_report.

\ No newline at end of file +ATDGenerated__Jsonbug_j (infer.ATDGenerated__Jsonbug_j)

Module ATDGenerated__Jsonbug_j

type issue_method = ATDGenerated.Jsonbug_t.issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = ATDGenerated.Jsonbug_t.parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = ATDGenerated.Jsonbug_t.nullsafe_mode
type nullsafe_meta_issue_info = ATDGenerated.Jsonbug_t.nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = ATDGenerated.Jsonbug_t.method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = ATDGenerated.Jsonbug_t.field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = ATDGenerated.Jsonbug_t.access_level
type annotation_point_method = ATDGenerated.Jsonbug_t.annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = ATDGenerated.Jsonbug_t.annotation_point_kind
type annotation_point = ATDGenerated.Jsonbug_t.annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = ATDGenerated.Jsonbug_t.nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = ATDGenerated.Jsonbug_t.loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = ATDGenerated.Jsonbug_t.json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = ATDGenerated.Jsonbug_t.extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = ATDGenerated.Jsonbug_t.jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = ATDGenerated.Jsonbug_t.report
type hum_info = ATDGenerated.Jsonbug_t.hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = ATDGenerated.Jsonbug_t.cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = ATDGenerated.Jsonbug_t.cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = ATDGenerated.Jsonbug_t.costs_report
type config_impact_item = ATDGenerated.Jsonbug_t.config_impact_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
unchecked_callees : string;
}
type config_impact_report = ATDGenerated.Jsonbug_t.config_impact_report
val write_issue_method : Bi_outbuf.t -> issue_method -> unit

Output a JSON value of type issue_method.

val string_of_issue_method : ?⁠len:int -> issue_method -> string

Serialize a value of type issue_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_issue_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> issue_method

Input JSON data of type issue_method.

val issue_method_of_string : string -> issue_method

Deserialize JSON data of type issue_method.

val write_parameter_not_nullable_info : Bi_outbuf.t -> parameter_not_nullable_info -> unit

Output a JSON value of type parameter_not_nullable_info.

val string_of_parameter_not_nullable_info : ?⁠len:int -> parameter_not_nullable_info -> string

Serialize a value of type parameter_not_nullable_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_parameter_not_nullable_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> parameter_not_nullable_info

Input JSON data of type parameter_not_nullable_info.

val parameter_not_nullable_info_of_string : string -> parameter_not_nullable_info

Deserialize JSON data of type parameter_not_nullable_info.

val write_nullsafe_mode : Bi_outbuf.t -> nullsafe_mode -> unit

Output a JSON value of type nullsafe_mode.

val string_of_nullsafe_mode : ?⁠len:int -> nullsafe_mode -> string

Serialize a value of type nullsafe_mode into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_mode : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_mode

Input JSON data of type nullsafe_mode.

val nullsafe_mode_of_string : string -> nullsafe_mode

Deserialize JSON data of type nullsafe_mode.

val write_nullsafe_meta_issue_info : Bi_outbuf.t -> nullsafe_meta_issue_info -> unit

Output a JSON value of type nullsafe_meta_issue_info.

val string_of_nullsafe_meta_issue_info : ?⁠len:int -> nullsafe_meta_issue_info -> string

Serialize a value of type nullsafe_meta_issue_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_meta_issue_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_meta_issue_info

Input JSON data of type nullsafe_meta_issue_info.

val nullsafe_meta_issue_info_of_string : string -> nullsafe_meta_issue_info

Deserialize JSON data of type nullsafe_meta_issue_info.

val write_method_info : Bi_outbuf.t -> method_info -> unit

Output a JSON value of type method_info.

val string_of_method_info : ?⁠len:int -> method_info -> string

Serialize a value of type method_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_method_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> method_info

Input JSON data of type method_info.

val method_info_of_string : string -> method_info

Deserialize JSON data of type method_info.

val write_field_name : Bi_outbuf.t -> field_name -> unit

Output a JSON value of type field_name.

val string_of_field_name : ?⁠len:int -> field_name -> string

Serialize a value of type field_name into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_field_name : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> field_name

Input JSON data of type field_name.

val field_name_of_string : string -> field_name

Deserialize JSON data of type field_name.

val write_access_level : Bi_outbuf.t -> access_level -> unit

Output a JSON value of type access_level.

val string_of_access_level : ?⁠len:int -> access_level -> string

Serialize a value of type access_level into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_access_level : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> access_level

Input JSON data of type access_level.

val access_level_of_string : string -> access_level

Deserialize JSON data of type access_level.

val write_annotation_point_method : Bi_outbuf.t -> annotation_point_method -> unit

Output a JSON value of type annotation_point_method.

val string_of_annotation_point_method : ?⁠len:int -> annotation_point_method -> string

Serialize a value of type annotation_point_method into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_method : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_method

Input JSON data of type annotation_point_method.

val annotation_point_method_of_string : string -> annotation_point_method

Deserialize JSON data of type annotation_point_method.

val write_annotation_point_kind : Bi_outbuf.t -> annotation_point_kind -> unit

Output a JSON value of type annotation_point_kind.

val string_of_annotation_point_kind : ?⁠len:int -> annotation_point_kind -> string

Serialize a value of type annotation_point_kind into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point_kind : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point_kind

Input JSON data of type annotation_point_kind.

val annotation_point_kind_of_string : string -> annotation_point_kind

Deserialize JSON data of type annotation_point_kind.

val write_annotation_point : Bi_outbuf.t -> annotation_point -> unit

Output a JSON value of type annotation_point.

val string_of_annotation_point : ?⁠len:int -> annotation_point -> string

Serialize a value of type annotation_point into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_annotation_point : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> annotation_point

Input JSON data of type annotation_point.

val annotation_point_of_string : string -> annotation_point

Deserialize JSON data of type annotation_point.

val write_nullsafe_extra : Bi_outbuf.t -> nullsafe_extra -> unit

Output a JSON value of type nullsafe_extra.

val string_of_nullsafe_extra : ?⁠len:int -> nullsafe_extra -> string

Serialize a value of type nullsafe_extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_nullsafe_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> nullsafe_extra

Input JSON data of type nullsafe_extra.

val nullsafe_extra_of_string : string -> nullsafe_extra

Deserialize JSON data of type nullsafe_extra.

val write_loc : Bi_outbuf.t -> loc -> unit

Output a JSON value of type loc.

val string_of_loc : ?⁠len:int -> loc -> string

Serialize a value of type loc into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_loc : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> loc

Input JSON data of type loc.

val loc_of_string : string -> loc

Deserialize JSON data of type loc.

val write_json_trace_item : Bi_outbuf.t -> json_trace_item -> unit

Output a JSON value of type json_trace_item.

val string_of_json_trace_item : ?⁠len:int -> json_trace_item -> string

Serialize a value of type json_trace_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_json_trace_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> json_trace_item

Input JSON data of type json_trace_item.

val json_trace_item_of_string : string -> json_trace_item

Deserialize JSON data of type json_trace_item.

val write_extra : Bi_outbuf.t -> extra -> unit

Output a JSON value of type extra.

val string_of_extra : ?⁠len:int -> extra -> string

Serialize a value of type extra into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_extra : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> extra

Input JSON data of type extra.

val extra_of_string : string -> extra

Deserialize JSON data of type extra.

val write_jsonbug : Bi_outbuf.t -> jsonbug -> unit

Output a JSON value of type jsonbug.

val string_of_jsonbug : ?⁠len:int -> jsonbug -> string

Serialize a value of type jsonbug into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_jsonbug : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> jsonbug

Input JSON data of type jsonbug.

val jsonbug_of_string : string -> jsonbug

Deserialize JSON data of type jsonbug.

val write_report : Bi_outbuf.t -> report -> unit

Output a JSON value of type report.

val string_of_report : ?⁠len:int -> report -> string

Serialize a value of type report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> report

Input JSON data of type report.

val report_of_string : string -> report

Deserialize JSON data of type report.

val write_hum_info : Bi_outbuf.t -> hum_info -> unit

Output a JSON value of type hum_info.

val string_of_hum_info : ?⁠len:int -> hum_info -> string

Serialize a value of type hum_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_hum_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> hum_info

Input JSON data of type hum_info.

val hum_info_of_string : string -> hum_info

Deserialize JSON data of type hum_info.

val write_cost_info : Bi_outbuf.t -> cost_info -> unit

Output a JSON value of type cost_info.

val string_of_cost_info : ?⁠len:int -> cost_info -> string

Serialize a value of type cost_info into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_info : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_info

Input JSON data of type cost_info.

val cost_info_of_string : string -> cost_info

Deserialize JSON data of type cost_info.

val write_cost_item : Bi_outbuf.t -> cost_item -> unit

Output a JSON value of type cost_item.

val string_of_cost_item : ?⁠len:int -> cost_item -> string

Serialize a value of type cost_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_cost_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> cost_item

Input JSON data of type cost_item.

val cost_item_of_string : string -> cost_item

Deserialize JSON data of type cost_item.

val write_costs_report : Bi_outbuf.t -> costs_report -> unit

Output a JSON value of type costs_report.

val string_of_costs_report : ?⁠len:int -> costs_report -> string

Serialize a value of type costs_report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_costs_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> costs_report

Input JSON data of type costs_report.

val costs_report_of_string : string -> costs_report

Deserialize JSON data of type costs_report.

val write_config_impact_item : Bi_outbuf.t -> config_impact_item -> unit

Output a JSON value of type config_impact_item.

val string_of_config_impact_item : ?⁠len:int -> config_impact_item -> string

Serialize a value of type config_impact_item into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_config_impact_item : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> config_impact_item

Input JSON data of type config_impact_item.

val config_impact_item_of_string : string -> config_impact_item

Deserialize JSON data of type config_impact_item.

val write_config_impact_report : Bi_outbuf.t -> config_impact_report -> unit

Output a JSON value of type config_impact_report.

val string_of_config_impact_report : ?⁠len:int -> config_impact_report -> string

Serialize a value of type config_impact_report into a JSON string.

parameter len

specifies the initial length of the buffer used internally. Default: 1024.

val read_config_impact_report : Yojson.Safe.lexer_state -> Stdlib.Lexing.lexbuf -> config_impact_report

Input JSON data of type config_impact_report.

val config_impact_report_of_string : string -> config_impact_report

Deserialize JSON data of type config_impact_report.

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

Module ATDGenerated__Jsonbug_t

type issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = [
| `Default
| `LocalTrustAll
| `LocalTrustSome
| `LocalTrustNone
| `Strict
]
type nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = [
| `Private
| `Protected
| `Public
| `Default
]
type annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = [
| `Method
| `Field
| `Param
]
type annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = jsonbug list
type hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = cost_item list
\ No newline at end of file +ATDGenerated__Jsonbug_t (infer.ATDGenerated__Jsonbug_t)

Module ATDGenerated__Jsonbug_t

type issue_method = {
name : string;
params : string list;
}
type parameter_not_nullable_info = {
class_name : string;
package_name : string option;
method_info : issue_method;
param_index : int;
}
type nullsafe_mode = [
| `Default
| `LocalTrustAll
| `LocalTrustSome
| `LocalTrustNone
| `Strict
]
type nullsafe_meta_issue_info = {
num_issues : int;
curr_nullsafe_mode : nullsafe_mode;
can_be_promoted_to : nullsafe_mode option;
}
type method_info = {
class_name : string;
package : string;
method_name : string;
call_line : int;
}
type field_name = {
class_name : string;
package_name : string option;
field : string;
}
type access_level = [
| `Private
| `Protected
| `Public
| `Default
]
type annotation_point_method = {
method_name : string;
params : string list;
access_level : access_level;
}
type annotation_point_kind = [
| `Method
| `Field
| `Param
]
type annotation_point = {
id : string;
kind : annotation_point_kind;
method_info : annotation_point_method option;
field_name : string option;
param_num : int option;
num_violations : int;
dependent_point_ids : string list;
}
type nullsafe_extra = {
class_name : string;
package : string option;
method_info : issue_method option;
field : field_name option;
inconsistent_param_index : int option;
parameter_not_nullable_info : parameter_not_nullable_info option;
nullable_methods : method_info list option;
unvetted_3rd_party : string list option;
meta_issue_info : nullsafe_meta_issue_info option;
annotation_graph : annotation_point list option;
}
type loc = {
file : string;
lnum : int;
cnum : int;
enum : int;
}
type json_trace_item = {
level : int;
filename : string;
line_number : int;
column_number : int;
description : string;
}
type extra = {
cost_polynomial : string option;
cost_degree : int option;
nullsafe_extra : nullsafe_extra option;
}
type jsonbug = {
bug_type : string;
doc_url : string option;
qualifier : string;
severity : string;
line : int;
column : int;
procedure : string;
procedure_start_line : int;
file : string;
bug_trace : json_trace_item list;
key : string;
node_key : string option;
hash : string;
dotty : string option;
infer_source_loc : loc option;
bug_type_hum : string;
linters_def_file : string option;
traceview_id : int option;
censored_reason : string option;
access : string option;
extras : extra option;
}
type report = jsonbug list
type hum_info = {
hum_polynomial : string;
hum_degree : string;
big_o : string;
}
type cost_info = {
polynomial_version : int;
polynomial : string;
degree : int option;
hum : hum_info;
trace : json_trace_item list;
}
type cost_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
is_on_ui_thread : bool;
exec_cost : cost_info;
autoreleasepool_size : cost_info;
}
type costs_report = cost_item list
type config_impact_item = {
hash : string;
loc : loc;
procedure_name : string;
procedure_id : string;
unchecked_callees : string;
}
type config_impact_report = config_impact_item list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint/Annotations/index.html b/website/static/odoc/next/infer/Absint/Annotations/index.html index 1a99c6fc8..d5455e05a 100644 --- a/website/static/odoc/next/infer/Absint/Annotations/index.html +++ b/website/static/odoc/next/infer/Absint/Annotations/index.html @@ -1,2 +1,2 @@ -Annotations (infer.Absint.Annotations)

Module Absint.Annotations

val any_thread : string
val auto_cleanup : string
val expensive : string
val inject_prop : string
val immutable : string
val lockless : string
val no_allocation : string
val nullable : string
val nonnull : string
val performance_critical : string
val prop : string
val for_non_ui_thread : string
val for_ui_thread : string
val guarded_by : string
val suppress_lint : string
val thread_safe : string
val mainthread : string
val ui_thread : string
val worker_thread : string
val visibleForTesting : string
val annot_ends_with : IR.Annot.t -> string -> bool

annot_ends_with annot ann_name returns true if the class name of annot, without the package, is equal to ann_name

val ia_ends_with : IR.Annot.Item.t -> string -> bool

Check if there is an annotation in ia which ends with the given name

val ia_has_annotation_with : IR.Annot.Item.t -> (IR.Annot.t -> bool) -> bool
val ia_is_false_on_null : IR.Annot.Item.t -> bool
val ia_is_initializer : IR.Annot.Item.t -> bool
val ia_is_cleanup : IR.Annot.Item.t -> bool
val ia_is_field_injector_readonly : IR.Annot.Item.t -> bool

Annotations for readonly injectors. The injector framework initializes the field but does not write null into it.

val ia_is_field_injector_readwrite : IR.Annot.Item.t -> bool

Annotations for read-write injectors. The injector framework initializes the field and can write null into it.

val ia_is_nonnull : IR.Annot.Item.t -> bool
val ia_is_nullable : IR.Annot.Item.t -> bool
val ia_is_nullsafe_strict : IR.Annot.Item.t -> bool
val ia_find_nullsafe : IR.Annot.Item.t -> IR.Annot.t option
val ia_is_true_on_null : IR.Annot.Item.t -> bool
val ia_is_expensive : IR.Annot.Item.t -> bool
val ia_is_functional : IR.Annot.Item.t -> bool
val ia_is_propagates_nullable : IR.Annot.Item.t -> bool
val ia_is_ignore_allocations : IR.Annot.Item.t -> bool
val ia_is_inject : IR.Annot.Item.t -> bool
val ia_is_json_field : IR.Annot.Item.t -> bool
val ia_is_suppress_lint : IR.Annot.Item.t -> bool
val ia_is_not_thread_safe : IR.Annot.Item.t -> bool
val ia_is_nonblocking : IR.Annot.Item.t -> bool
val ia_is_returns_ownership : IR.Annot.Item.t -> bool
val ia_is_synchronized_collection : IR.Annot.Item.t -> bool
val ia_is_thread_safe : IR.Annot.Item.t -> bool
val ia_is_thread_confined : IR.Annot.Item.t -> bool
val ia_is_thrift_service : IR.Annot.Item.t -> bool
val ia_is_volatile : IR.Annot.Item.t -> bool
val ia_is_worker_thread : IR.Annot.Item.t -> bool
val ia_is_uithread_equivalent : IR.Annot.Item.t -> bool
val pdesc_has_return_annot : IR.Procdesc.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pdesc's return value

val pname_has_return_annot : IR.Procname.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pname's return value

val pdesc_return_annot_ends_with : IR.Procdesc.t -> string -> bool

return true if pdesc's return value is annotated with a value ending with the given string

val ma_has_annotation_with : IR.Annot.Method.t -> (IR.Annot.t -> bool) -> bool
val field_has_annot : IR.Fieldname.t -> IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool
val struct_typ_has_annot : IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on some annotation of struct_typ

\ No newline at end of file +Annotations (infer.Absint.Annotations)

Module Absint.Annotations

val any_thread : string
val auto_cleanup : string
val expensive : string
val inject_prop : string
val immutable : string
val lockless : string
val no_allocation : string
val nullable : string
val nullsafe : string
val nonnull : string
val performance_critical : string
val prop : string
val for_non_ui_thread : string
val for_ui_thread : string
val guarded_by : string
val suppress_lint : string
val thread_safe : string
val mainthread : string
val ui_thread : string
val worker_thread : string
val visibleForTesting : string
val annot_ends_with : IR.Annot.t -> string -> bool

annot_ends_with annot ann_name returns true if the class name of annot, without the package, is equal to ann_name

val ia_ends_with : IR.Annot.Item.t -> string -> bool

Check if there is an annotation in ia which ends with the given name

val ia_has_annotation_with : IR.Annot.Item.t -> (IR.Annot.t -> bool) -> bool
val ia_is_false_on_null : IR.Annot.Item.t -> bool
val ia_is_initializer : IR.Annot.Item.t -> bool
val ia_is_cleanup : IR.Annot.Item.t -> bool
val ia_is_field_injector_readonly : IR.Annot.Item.t -> bool

Annotations for readonly injectors. The injector framework initializes the field but does not write null into it.

val ia_is_field_injector_readwrite : IR.Annot.Item.t -> bool

Annotations for read-write injectors. The injector framework initializes the field and can write null into it.

val ia_is_nonnull : IR.Annot.Item.t -> bool
val ia_is_nullable : IR.Annot.Item.t -> bool
val ia_is_nullsafe_strict : IR.Annot.Item.t -> bool
val ia_find_nullsafe : IR.Annot.Item.t -> IR.Annot.t option
val ia_is_true_on_null : IR.Annot.Item.t -> bool
val ia_is_expensive : IR.Annot.Item.t -> bool
val ia_is_functional : IR.Annot.Item.t -> bool
val ia_is_propagates_nullable : IR.Annot.Item.t -> bool
val ia_is_ignore_allocations : IR.Annot.Item.t -> bool
val ia_is_inject : IR.Annot.Item.t -> bool
val ia_is_json_field : IR.Annot.Item.t -> bool
val ia_is_suppress_lint : IR.Annot.Item.t -> bool
val ia_is_not_thread_safe : IR.Annot.Item.t -> bool
val ia_is_nonblocking : IR.Annot.Item.t -> bool
val ia_is_returns_ownership : IR.Annot.Item.t -> bool
val ia_is_synchronized_collection : IR.Annot.Item.t -> bool
val ia_is_thread_safe : IR.Annot.Item.t -> bool
val ia_is_thread_confined : IR.Annot.Item.t -> bool
val ia_is_thrift_service : IR.Annot.Item.t -> bool
val ia_is_volatile : IR.Annot.Item.t -> bool
val ia_is_worker_thread : IR.Annot.Item.t -> bool
val ia_is_uithread_equivalent : IR.Annot.Item.t -> bool
val pdesc_has_return_annot : IR.Procdesc.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pdesc's return value

val pname_has_return_annot : IR.Procname.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pname's return value

val pdesc_return_annot_ends_with : IR.Procdesc.t -> string -> bool

return true if pdesc's return value is annotated with a value ending with the given string

val ma_has_annotation_with : IR.Annot.Method.t -> (IR.Annot.t -> bool) -> bool
val field_has_annot : IR.Fieldname.t -> IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool
val struct_typ_has_annot : IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on some annotation of struct_typ

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint/Exe_env/index.html b/website/static/odoc/next/infer/Absint/Exe_env/index.html index b5b637f76..192871899 100644 --- a/website/static/odoc/next/infer/Absint/Exe_env/index.html +++ b/website/static/odoc/next/infer/Absint/Exe_env/index.html @@ -1,2 +1,2 @@ -Exe_env (infer.Absint.Exe_env)

Module Absint.Exe_env

type t
val mk : unit -> t

Create a new cache

val get_tenv : t -> IR.Procname.t -> IR.Tenv.t

return the type environment associated with the procedure

val load_java_global_tenv : t -> IR.Tenv.t

Load Java type environment (if not done yet), and return it. Useful for accessing type info not related to any concrete function.

val get_integer_type_widths : t -> IR.Procname.t -> IR.Typ.IntegerWidths.t

return the integer type widths associated with the procedure

\ No newline at end of file +Exe_env (infer.Absint.Exe_env)

Module Absint.Exe_env

type t
val mk : unit -> t

Create a new cache

val get_proc_tenv : t -> IR.Procname.t -> IR.Tenv.t

return the type environment associated with the procedure

val get_sourcefile_tenv : t -> IBase.SourceFile.t -> IR.Tenv.t

return the type environment associated with the source file

val load_java_global_tenv : t -> IR.Tenv.t

Load Java type environment (if not done yet), and return it. Useful for accessing type info not related to any concrete function.

val get_integer_type_widths : t -> IR.Procname.t -> IR.Typ.IntegerWidths.t

return the integer type widths associated with the procedure

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint__Annotations/index.html b/website/static/odoc/next/infer/Absint__Annotations/index.html index 42df76dd8..2cb3b6feb 100644 --- a/website/static/odoc/next/infer/Absint__Annotations/index.html +++ b/website/static/odoc/next/infer/Absint__Annotations/index.html @@ -1,2 +1,2 @@ -Absint__Annotations (infer.Absint__Annotations)

Module Absint__Annotations

val any_thread : string
val auto_cleanup : string
val expensive : string
val inject_prop : string
val immutable : string
val lockless : string
val no_allocation : string
val nullable : string
val nonnull : string
val performance_critical : string
val prop : string
val for_non_ui_thread : string
val for_ui_thread : string
val guarded_by : string
val suppress_lint : string
val thread_safe : string
val mainthread : string
val ui_thread : string
val worker_thread : string
val visibleForTesting : string
val annot_ends_with : IR.Annot.t -> string -> bool

annot_ends_with annot ann_name returns true if the class name of annot, without the package, is equal to ann_name

val ia_ends_with : IR.Annot.Item.t -> string -> bool

Check if there is an annotation in ia which ends with the given name

val ia_has_annotation_with : IR.Annot.Item.t -> (IR.Annot.t -> bool) -> bool
val ia_is_false_on_null : IR.Annot.Item.t -> bool
val ia_is_initializer : IR.Annot.Item.t -> bool
val ia_is_cleanup : IR.Annot.Item.t -> bool
val ia_is_field_injector_readonly : IR.Annot.Item.t -> bool

Annotations for readonly injectors. The injector framework initializes the field but does not write null into it.

val ia_is_field_injector_readwrite : IR.Annot.Item.t -> bool

Annotations for read-write injectors. The injector framework initializes the field and can write null into it.

val ia_is_nonnull : IR.Annot.Item.t -> bool
val ia_is_nullable : IR.Annot.Item.t -> bool
val ia_is_nullsafe_strict : IR.Annot.Item.t -> bool
val ia_find_nullsafe : IR.Annot.Item.t -> IR.Annot.t option
val ia_is_true_on_null : IR.Annot.Item.t -> bool
val ia_is_expensive : IR.Annot.Item.t -> bool
val ia_is_functional : IR.Annot.Item.t -> bool
val ia_is_propagates_nullable : IR.Annot.Item.t -> bool
val ia_is_ignore_allocations : IR.Annot.Item.t -> bool
val ia_is_inject : IR.Annot.Item.t -> bool
val ia_is_json_field : IR.Annot.Item.t -> bool
val ia_is_suppress_lint : IR.Annot.Item.t -> bool
val ia_is_not_thread_safe : IR.Annot.Item.t -> bool
val ia_is_nonblocking : IR.Annot.Item.t -> bool
val ia_is_returns_ownership : IR.Annot.Item.t -> bool
val ia_is_synchronized_collection : IR.Annot.Item.t -> bool
val ia_is_thread_safe : IR.Annot.Item.t -> bool
val ia_is_thread_confined : IR.Annot.Item.t -> bool
val ia_is_thrift_service : IR.Annot.Item.t -> bool
val ia_is_volatile : IR.Annot.Item.t -> bool
val ia_is_worker_thread : IR.Annot.Item.t -> bool
val ia_is_uithread_equivalent : IR.Annot.Item.t -> bool
val pdesc_has_return_annot : IR.Procdesc.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pdesc's return value

val pname_has_return_annot : IR.Procname.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pname's return value

val pdesc_return_annot_ends_with : IR.Procdesc.t -> string -> bool

return true if pdesc's return value is annotated with a value ending with the given string

val ma_has_annotation_with : IR.Annot.Method.t -> (IR.Annot.t -> bool) -> bool
val field_has_annot : IR.Fieldname.t -> IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool
val struct_typ_has_annot : IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on some annotation of struct_typ

\ No newline at end of file +Absint__Annotations (infer.Absint__Annotations)

Module Absint__Annotations

val any_thread : string
val auto_cleanup : string
val expensive : string
val inject_prop : string
val immutable : string
val lockless : string
val no_allocation : string
val nullable : string
val nullsafe : string
val nonnull : string
val performance_critical : string
val prop : string
val for_non_ui_thread : string
val for_ui_thread : string
val guarded_by : string
val suppress_lint : string
val thread_safe : string
val mainthread : string
val ui_thread : string
val worker_thread : string
val visibleForTesting : string
val annot_ends_with : IR.Annot.t -> string -> bool

annot_ends_with annot ann_name returns true if the class name of annot, without the package, is equal to ann_name

val ia_ends_with : IR.Annot.Item.t -> string -> bool

Check if there is an annotation in ia which ends with the given name

val ia_has_annotation_with : IR.Annot.Item.t -> (IR.Annot.t -> bool) -> bool
val ia_is_false_on_null : IR.Annot.Item.t -> bool
val ia_is_initializer : IR.Annot.Item.t -> bool
val ia_is_cleanup : IR.Annot.Item.t -> bool
val ia_is_field_injector_readonly : IR.Annot.Item.t -> bool

Annotations for readonly injectors. The injector framework initializes the field but does not write null into it.

val ia_is_field_injector_readwrite : IR.Annot.Item.t -> bool

Annotations for read-write injectors. The injector framework initializes the field and can write null into it.

val ia_is_nonnull : IR.Annot.Item.t -> bool
val ia_is_nullable : IR.Annot.Item.t -> bool
val ia_is_nullsafe_strict : IR.Annot.Item.t -> bool
val ia_find_nullsafe : IR.Annot.Item.t -> IR.Annot.t option
val ia_is_true_on_null : IR.Annot.Item.t -> bool
val ia_is_expensive : IR.Annot.Item.t -> bool
val ia_is_functional : IR.Annot.Item.t -> bool
val ia_is_propagates_nullable : IR.Annot.Item.t -> bool
val ia_is_ignore_allocations : IR.Annot.Item.t -> bool
val ia_is_inject : IR.Annot.Item.t -> bool
val ia_is_json_field : IR.Annot.Item.t -> bool
val ia_is_suppress_lint : IR.Annot.Item.t -> bool
val ia_is_not_thread_safe : IR.Annot.Item.t -> bool
val ia_is_nonblocking : IR.Annot.Item.t -> bool
val ia_is_returns_ownership : IR.Annot.Item.t -> bool
val ia_is_synchronized_collection : IR.Annot.Item.t -> bool
val ia_is_thread_safe : IR.Annot.Item.t -> bool
val ia_is_thread_confined : IR.Annot.Item.t -> bool
val ia_is_thrift_service : IR.Annot.Item.t -> bool
val ia_is_volatile : IR.Annot.Item.t -> bool
val ia_is_worker_thread : IR.Annot.Item.t -> bool
val ia_is_uithread_equivalent : IR.Annot.Item.t -> bool
val pdesc_has_return_annot : IR.Procdesc.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pdesc's return value

val pname_has_return_annot : IR.Procname.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on the annotation of pname's return value

val pdesc_return_annot_ends_with : IR.Procdesc.t -> string -> bool

return true if pdesc's return value is annotated with a value ending with the given string

val ma_has_annotation_with : IR.Annot.Method.t -> (IR.Annot.t -> bool) -> bool
val field_has_annot : IR.Fieldname.t -> IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool
val struct_typ_has_annot : IR.Struct.t -> (IR.Annot.Item.t -> bool) -> bool

return true if the given predicate evaluates to true on some annotation of struct_typ

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Absint__Exe_env/index.html b/website/static/odoc/next/infer/Absint__Exe_env/index.html index 83bb33e61..f832f5399 100644 --- a/website/static/odoc/next/infer/Absint__Exe_env/index.html +++ b/website/static/odoc/next/infer/Absint__Exe_env/index.html @@ -1,2 +1,2 @@ -Absint__Exe_env (infer.Absint__Exe_env)

Module Absint__Exe_env

type t
val mk : unit -> t

Create a new cache

val get_tenv : t -> IR.Procname.t -> IR.Tenv.t

return the type environment associated with the procedure

val load_java_global_tenv : t -> IR.Tenv.t

Load Java type environment (if not done yet), and return it. Useful for accessing type info not related to any concrete function.

val get_integer_type_widths : t -> IR.Procname.t -> IR.Typ.IntegerWidths.t

return the integer type widths associated with the procedure

\ No newline at end of file +Absint__Exe_env (infer.Absint__Exe_env)

Module Absint__Exe_env

type t
val mk : unit -> t

Create a new cache

val get_proc_tenv : t -> IR.Procname.t -> IR.Tenv.t

return the type environment associated with the procedure

val get_sourcefile_tenv : t -> IBase.SourceFile.t -> IR.Tenv.t

return the type environment associated with the source file

val load_java_global_tenv : t -> IR.Tenv.t

Load Java type environment (if not done yet), and return it. Useful for accessing type info not related to any concrete function.

val get_integer_type_widths : t -> IR.Procname.t -> IR.Typ.IntegerWidths.t

return the integer type widths associated with the procedure

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html b/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html index e98023ac5..dc1c68ed9 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/Fields/Direct/index.html @@ -1,2 +1,2 @@ -Direct (infer.Backend.Payloads.Fields.Direct)

Module Fields.Direct

val iter : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> unit) -> unit
val fold : t -> init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'acc__5) -> cost:('acc__5 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'acc__6) -> lab_resource_leaks:('acc__6 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'acc__7) -> dotnet_resource_leaks:('acc__7 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'acc__8) -> litho_required_props:('acc__8 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'acc__9) -> pulse:('acc__9 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'acc__10) -> purity:('acc__10 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'acc__11) -> quandary:('acc__11 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'acc__12) -> racerd:('acc__12 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'acc__13) -> siof:('acc__13 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'acc__14) -> starvation:('acc__14 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'acc__15) -> nullsafe:('acc__15 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'acc__16) -> uninit:('acc__16 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'acc__17) -> 'acc__17
val for_all : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val exists : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val to_list : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'elem__) -> 'elem__ list
val map : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> Checkers.UninitDomain.Summary.t option) -> t
val set_all_mutable_fields : t -> unit
\ No newline at end of file +Direct (infer.Backend.Payloads.Fields.Direct)

Module Fields.Direct

val iter : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> unit) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> unit) -> unit
val fold : t -> init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'acc__5) -> config_impact_analysis:('acc__5 -> (tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> 'acc__6) -> cost:('acc__6 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'acc__7) -> lab_resource_leaks:('acc__7 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'acc__8) -> dotnet_resource_leaks:('acc__8 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'acc__9) -> litho_required_props:('acc__9 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'acc__10) -> pulse:('acc__10 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'acc__11) -> purity:('acc__11 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'acc__12) -> quandary:('acc__12 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'acc__13) -> racerd:('acc__13 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'acc__14) -> siof:('acc__14 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'acc__15) -> starvation:('acc__15 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'acc__16) -> nullsafe:('acc__16 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'acc__17) -> uninit:('acc__17 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'acc__18) -> 'acc__18
val for_all : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val exists : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val to_list : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'elem__) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'elem__) -> 'elem__ list
val map : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> Checkers.ConfigImpactAnalysis.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> Checkers.UninitDomain.Summary.t option) -> t
val set_all_mutable_fields : t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html b/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html index e0e32c4ed..d56267964 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/Fields/index.html @@ -1,2 +1,2 @@ -Fields (infer.Backend.Payloads.Fields)

Module Payloads.Fields

val names : string list
val uninit : (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t
val nullsafe : (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t
val starvation : (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t
val siof : (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t
val racerd : (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t
val quandary : (tQuandary.QuandarySummary.t option) Fieldslib.Field.t
val purity : (tCheckers.PurityDomain.summary option) Fieldslib.Field.t
val pulse : (tPulselib.PulseSummary.t option) Fieldslib.Field.t
val litho_required_props : (tCheckers.LithoDomain.summary option) Fieldslib.Field.t
val dotnet_resource_leaks : (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t
val lab_resource_leaks : (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t
val cost : (tCostlib.CostDomain.summary option) Fieldslib.Field.t
val config_checks_between_markers : (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t
val buffer_overrun_checker : (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t
val buffer_overrun_analysis : (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t
val biabduction : (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t
val annot_map : (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t
val fold : init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__5) -> cost:('acc__5 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__6) -> lab_resource_leaks:('acc__6 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__7) -> dotnet_resource_leaks:('acc__7 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__8) -> litho_required_props:('acc__8 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__9) -> pulse:('acc__9 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__10) -> purity:('acc__10 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__11) -> quandary:('acc__11 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__12) -> racerd:('acc__12 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__13) -> siof:('acc__13 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__14) -> starvation:('acc__14 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__15) -> nullsafe:('acc__15 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__16) -> uninit:('acc__16 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__17) -> 'acc__17
val make_creator : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__0 -> ('input__ -> Checkers.AnnotationReachabilityDomain.t option) * 'acc__1) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__1 -> ('input__ -> Biabduction.BiabductionSummary.t option) * 'acc__2) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__2 -> ('input__ -> BO.BufferOverrunAnalysisSummary.t option) * 'acc__3) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__3 -> ('input__ -> BO.BufferOverrunCheckerSummary.t option) * 'acc__4) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__4 -> ('input__ -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) * 'acc__5) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__5 -> ('input__ -> Costlib.CostDomain.summary option) * 'acc__6) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__6 -> ('input__ -> Labs.ResourceLeakDomain.summary option) * 'acc__7) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__7 -> ('input__ -> Dotnet.ResourceLeakCSDomain.summary option) * 'acc__8) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__8 -> ('input__ -> Checkers.LithoDomain.summary option) * 'acc__9) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__9 -> ('input__ -> Pulselib.PulseSummary.t option) * 'acc__10) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__10 -> ('input__ -> Checkers.PurityDomain.summary option) * 'acc__11) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__11 -> ('input__ -> Quandary.QuandarySummary.t option) * 'acc__12) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__12 -> ('input__ -> Concurrency.RacerDDomain.summary option) * 'acc__13) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__13 -> ('input__ -> Checkers.SiofDomain.Summary.t option) * 'acc__14) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__14 -> ('input__ -> Concurrency.StarvationDomain.summary option) * 'acc__15) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__15 -> ('input__ -> Nullsafe.NullsafeSummary.t option) * 'acc__16) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__16 -> ('input__ -> Checkers.UninitDomain.Summary.t option) * 'acc__17) -> 'acc__0 -> ('input__ -> t) * 'acc__17
val create : annot_map:Checkers.AnnotationReachabilityDomain.t option -> biabduction:Biabduction.BiabductionSummary.t option -> buffer_overrun_analysis:BO.BufferOverrunAnalysisSummary.t option -> buffer_overrun_checker:BO.BufferOverrunCheckerSummary.t option -> config_checks_between_markers:Checkers.ConfigChecksBetweenMarkers.Summary.t option -> cost:Costlib.CostDomain.summary option -> lab_resource_leaks:Labs.ResourceLeakDomain.summary option -> dotnet_resource_leaks:Dotnet.ResourceLeakCSDomain.summary option -> litho_required_props:Checkers.LithoDomain.summary option -> pulse:Pulselib.PulseSummary.t option -> purity:Checkers.PurityDomain.summary option -> quandary:Quandary.QuandarySummary.t option -> racerd:Concurrency.RacerDDomain.summary option -> siof:Checkers.SiofDomain.Summary.t option -> starvation:Concurrency.StarvationDomain.summary option -> nullsafe:Nullsafe.NullsafeSummary.t option -> uninit:Checkers.UninitDomain.Summary.t option -> t
val map : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> Checkers.UninitDomain.Summary.t option) -> t
val iter : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> unit) -> unit
val for_all : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val exists : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val to_list : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> 'elem__ list
val map_poly : ([< `Read | `Set_and_create ]t'x0) Fieldslib.Field.user -> 'x0 list
module Direct : sig ... end
\ No newline at end of file +Fields (infer.Backend.Payloads.Fields)

Module Payloads.Fields

val names : string list
val uninit : (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t
val nullsafe : (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t
val starvation : (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t
val siof : (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t
val racerd : (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t
val quandary : (tQuandary.QuandarySummary.t option) Fieldslib.Field.t
val purity : (tCheckers.PurityDomain.summary option) Fieldslib.Field.t
val pulse : (tPulselib.PulseSummary.t option) Fieldslib.Field.t
val litho_required_props : (tCheckers.LithoDomain.summary option) Fieldslib.Field.t
val dotnet_resource_leaks : (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t
val lab_resource_leaks : (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t
val cost : (tCostlib.CostDomain.summary option) Fieldslib.Field.t
val config_impact_analysis : (tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t
val config_checks_between_markers : (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t
val buffer_overrun_checker : (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t
val buffer_overrun_analysis : (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t
val biabduction : (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t
val annot_map : (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t
val fold : init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__5) -> config_impact_analysis:('acc__5 -> (tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> 'acc__6) -> cost:('acc__6 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__7) -> lab_resource_leaks:('acc__7 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__8) -> dotnet_resource_leaks:('acc__8 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__9) -> litho_required_props:('acc__9 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__10) -> pulse:('acc__10 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__11) -> purity:('acc__11 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__12) -> quandary:('acc__12 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__13) -> racerd:('acc__13 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__14) -> siof:('acc__14 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__15) -> starvation:('acc__15 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__16) -> nullsafe:('acc__16 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__17) -> uninit:('acc__17 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__18) -> 'acc__18
val make_creator : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__0 -> ('input__ -> Checkers.AnnotationReachabilityDomain.t option) * 'acc__1) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__1 -> ('input__ -> Biabduction.BiabductionSummary.t option) * 'acc__2) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__2 -> ('input__ -> BO.BufferOverrunAnalysisSummary.t option) * 'acc__3) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__3 -> ('input__ -> BO.BufferOverrunCheckerSummary.t option) * 'acc__4) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__4 -> ('input__ -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) * 'acc__5) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> 'acc__5 -> ('input__ -> Checkers.ConfigImpactAnalysis.Summary.t option) * 'acc__6) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__6 -> ('input__ -> Costlib.CostDomain.summary option) * 'acc__7) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__7 -> ('input__ -> Labs.ResourceLeakDomain.summary option) * 'acc__8) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__8 -> ('input__ -> Dotnet.ResourceLeakCSDomain.summary option) * 'acc__9) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__9 -> ('input__ -> Checkers.LithoDomain.summary option) * 'acc__10) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__10 -> ('input__ -> Pulselib.PulseSummary.t option) * 'acc__11) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__11 -> ('input__ -> Checkers.PurityDomain.summary option) * 'acc__12) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__12 -> ('input__ -> Quandary.QuandarySummary.t option) * 'acc__13) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__13 -> ('input__ -> Concurrency.RacerDDomain.summary option) * 'acc__14) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__14 -> ('input__ -> Checkers.SiofDomain.Summary.t option) * 'acc__15) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__15 -> ('input__ -> Concurrency.StarvationDomain.summary option) * 'acc__16) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__16 -> ('input__ -> Nullsafe.NullsafeSummary.t option) * 'acc__17) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__17 -> ('input__ -> Checkers.UninitDomain.Summary.t option) * 'acc__18) -> 'acc__0 -> ('input__ -> t) * 'acc__18
val create : annot_map:Checkers.AnnotationReachabilityDomain.t option -> biabduction:Biabduction.BiabductionSummary.t option -> buffer_overrun_analysis:BO.BufferOverrunAnalysisSummary.t option -> buffer_overrun_checker:BO.BufferOverrunCheckerSummary.t option -> config_checks_between_markers:Checkers.ConfigChecksBetweenMarkers.Summary.t option -> config_impact_analysis:Checkers.ConfigImpactAnalysis.Summary.t option -> cost:Costlib.CostDomain.summary option -> lab_resource_leaks:Labs.ResourceLeakDomain.summary option -> dotnet_resource_leaks:Dotnet.ResourceLeakCSDomain.summary option -> litho_required_props:Checkers.LithoDomain.summary option -> pulse:Pulselib.PulseSummary.t option -> purity:Checkers.PurityDomain.summary option -> quandary:Quandary.QuandarySummary.t option -> racerd:Concurrency.RacerDDomain.summary option -> siof:Checkers.SiofDomain.Summary.t option -> starvation:Concurrency.StarvationDomain.summary option -> nullsafe:Nullsafe.NullsafeSummary.t option -> uninit:Checkers.UninitDomain.Summary.t option -> t
val map : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> Checkers.ConfigImpactAnalysis.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> Checkers.UninitDomain.Summary.t option) -> t
val iter : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> unit) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> unit) -> unit
val for_all : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val exists : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val to_list : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'elem__) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> 'elem__ list
val map_poly : ([< `Read | `Set_and_create ]t'x0) Fieldslib.Field.user -> 'x0 list
module Direct : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend/Payloads/index.html b/website/static/odoc/next/infer/Backend/Payloads/index.html index 7e0402a0c..957993031 100644 --- a/website/static/odoc/next/infer/Backend/Payloads/index.html +++ b/website/static/odoc/next/infer/Backend/Payloads/index.html @@ -1,2 +1,2 @@ -Payloads (infer.Backend.Payloads)

Module Backend.Payloads

include sig ... end
type t = {
annot_map : Checkers.AnnotationReachabilityDomain.t option;
biabduction : Biabduction.BiabductionSummary.t option;
buffer_overrun_analysis : BO.BufferOverrunAnalysisSummary.t option;
buffer_overrun_checker : BO.BufferOverrunCheckerSummary.t option;
config_checks_between_markers : Checkers.ConfigChecksBetweenMarkers.Summary.t option;
cost : Costlib.CostDomain.summary option;
lab_resource_leaks : Labs.ResourceLeakDomain.summary option;
dotnet_resource_leaks : Dotnet.ResourceLeakCSDomain.summary option;
litho_required_props : Checkers.LithoDomain.summary option;
pulse : Pulselib.PulseSummary.t option;
purity : Checkers.PurityDomain.summary option;
quandary : Quandary.QuandarySummary.t option;
racerd : Concurrency.RacerDDomain.summary option;
siof : Checkers.SiofDomain.Summary.t option;
starvation : Concurrency.StarvationDomain.summary option;
nullsafe : Nullsafe.NullsafeSummary.t option;
uninit : Checkers.UninitDomain.Summary.t option;
}

analysis results

val uninit : t -> Checkers.UninitDomain.Summary.t option
val nullsafe : t -> Nullsafe.NullsafeSummary.t option
val starvation : t -> Concurrency.StarvationDomain.summary option
val siof : t -> Checkers.SiofDomain.Summary.t option
val racerd : t -> Concurrency.RacerDDomain.summary option
val quandary : t -> Quandary.QuandarySummary.t option
val purity : t -> Checkers.PurityDomain.summary option
val pulse : t -> Pulselib.PulseSummary.t option
val litho_required_props : t -> Checkers.LithoDomain.summary option
val dotnet_resource_leaks : t -> Dotnet.ResourceLeakCSDomain.summary option
val lab_resource_leaks : t -> Labs.ResourceLeakDomain.summary option
val cost : t -> Costlib.CostDomain.summary option
val config_checks_between_markers : t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option
val buffer_overrun_checker : t -> BO.BufferOverrunCheckerSummary.t option
val buffer_overrun_analysis : t -> BO.BufferOverrunAnalysisSummary.t option
val biabduction : t -> Biabduction.BiabductionSummary.t option
val annot_map : t -> Checkers.AnnotationReachabilityDomain.t option
module Fields : sig ... end
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
val empty : t
\ No newline at end of file +Payloads (infer.Backend.Payloads)

Module Backend.Payloads

include sig ... end
type t = {
annot_map : Checkers.AnnotationReachabilityDomain.t option;
biabduction : Biabduction.BiabductionSummary.t option;
buffer_overrun_analysis : BO.BufferOverrunAnalysisSummary.t option;
buffer_overrun_checker : BO.BufferOverrunCheckerSummary.t option;
config_checks_between_markers : Checkers.ConfigChecksBetweenMarkers.Summary.t option;
config_impact_analysis : Checkers.ConfigImpactAnalysis.Summary.t option;
cost : Costlib.CostDomain.summary option;
lab_resource_leaks : Labs.ResourceLeakDomain.summary option;
dotnet_resource_leaks : Dotnet.ResourceLeakCSDomain.summary option;
litho_required_props : Checkers.LithoDomain.summary option;
pulse : Pulselib.PulseSummary.t option;
purity : Checkers.PurityDomain.summary option;
quandary : Quandary.QuandarySummary.t option;
racerd : Concurrency.RacerDDomain.summary option;
siof : Checkers.SiofDomain.Summary.t option;
starvation : Concurrency.StarvationDomain.summary option;
nullsafe : Nullsafe.NullsafeSummary.t option;
uninit : Checkers.UninitDomain.Summary.t option;
}

analysis results

val uninit : t -> Checkers.UninitDomain.Summary.t option
val nullsafe : t -> Nullsafe.NullsafeSummary.t option
val starvation : t -> Concurrency.StarvationDomain.summary option
val siof : t -> Checkers.SiofDomain.Summary.t option
val racerd : t -> Concurrency.RacerDDomain.summary option
val quandary : t -> Quandary.QuandarySummary.t option
val purity : t -> Checkers.PurityDomain.summary option
val pulse : t -> Pulselib.PulseSummary.t option
val litho_required_props : t -> Checkers.LithoDomain.summary option
val dotnet_resource_leaks : t -> Dotnet.ResourceLeakCSDomain.summary option
val lab_resource_leaks : t -> Labs.ResourceLeakDomain.summary option
val cost : t -> Costlib.CostDomain.summary option
val config_impact_analysis : t -> Checkers.ConfigImpactAnalysis.Summary.t option
val config_checks_between_markers : t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option
val buffer_overrun_checker : t -> BO.BufferOverrunCheckerSummary.t option
val buffer_overrun_analysis : t -> BO.BufferOverrunAnalysisSummary.t option
val biabduction : t -> Biabduction.BiabductionSummary.t option
val annot_map : t -> Checkers.AnnotationReachabilityDomain.t option
module Fields : sig ... end
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
val empty : t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html b/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html index e501c1c1f..792f41b10 100644 --- a/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html +++ b/website/static/odoc/next/infer/Backend/Summary/OnDisk/index.html @@ -1,2 +1,2 @@ -OnDisk (infer.Backend.Summary.OnDisk)

Module Summary.OnDisk

val clear_cache : unit -> unit

Remove all the elements from the cache of summaries

val get : IR.Procname.t -> t option

Return the summary option for the procedure name

val reset : IR.Procdesc.t -> t

Reset a summary rebuilding the dependents and preserving the proc attributes if present.

val proc_resolve_attributes : IR.Procname.t -> IR.ProcAttributes.t option

Try to find the attributes for a defined proc. First look at specs (to get attributes computed by analysis) then look at the attributes table. If no attributes can be found, return None.

val store_analyzed : t -> unit

Save summary for the procedure into the spec database

val reset_all : filter:IR.Filtering.procedures_filter -> unit -> unit
val delete : IR.Procname.t -> unit

Delete the .specs file corresponding to the procname and remove its summary from the Summary cache

val iter_specs : f:(t -> unit) -> unit

Iterates over all stored summaries

val iter_report_summaries_from_config : f:(IR.Procname.t -> IBase.Location.t -> Costlib.CostDomain.summary option -> Absint.Errlog.t -> unit) -> unit

Iterates over all analysis artefacts listed above, for each procedure

val pp_specs_from_config : Stdlib.Format.formatter -> unit

pretty print all stored summaries

\ No newline at end of file +OnDisk (infer.Backend.Summary.OnDisk)

Module Summary.OnDisk

val clear_cache : unit -> unit

Remove all the elements from the cache of summaries

val get : IR.Procname.t -> t option

Return the summary option for the procedure name

val reset : IR.Procdesc.t -> t

Reset a summary rebuilding the dependents and preserving the proc attributes if present.

val proc_resolve_attributes : IR.Procname.t -> IR.ProcAttributes.t option

Try to find the attributes for a defined proc. First look at specs (to get attributes computed by analysis) then look at the attributes table. If no attributes can be found, return None.

val store_analyzed : t -> unit

Save summary for the procedure into the spec database

val reset_all : filter:IR.Filtering.procedures_filter -> unit -> unit
val delete : IR.Procname.t -> unit

Delete the .specs file corresponding to the procname and remove its summary from the Summary cache

val iter_specs : f:(t -> unit) -> unit

Iterates over all stored summaries

val iter_report_summaries_from_config : f:(IR.Procname.t -> IBase.Location.t -> Costlib.CostDomain.summary option -> Checkers.ConfigImpactAnalysis.Summary.t option -> Absint.Errlog.t -> unit) -> unit

Iterates over all analysis artefacts listed above, for each procedure

val pp_specs_from_config : Stdlib.Format.formatter -> unit

pretty print all stored summaries

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend__Payloads/Fields/Direct/index.html b/website/static/odoc/next/infer/Backend__Payloads/Fields/Direct/index.html index 53e42f449..24e20b32a 100644 --- a/website/static/odoc/next/infer/Backend__Payloads/Fields/Direct/index.html +++ b/website/static/odoc/next/infer/Backend__Payloads/Fields/Direct/index.html @@ -1,2 +1,2 @@ -Direct (infer.Backend__Payloads.Fields.Direct)

Module Fields.Direct

val iter : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> unit) -> unit
val fold : t -> init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'acc__5) -> cost:('acc__5 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'acc__6) -> lab_resource_leaks:('acc__6 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'acc__7) -> dotnet_resource_leaks:('acc__7 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'acc__8) -> litho_required_props:('acc__8 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'acc__9) -> pulse:('acc__9 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'acc__10) -> purity:('acc__10 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'acc__11) -> quandary:('acc__11 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'acc__12) -> racerd:('acc__12 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'acc__13) -> siof:('acc__13 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'acc__14) -> starvation:('acc__14 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'acc__15) -> nullsafe:('acc__15 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'acc__16) -> uninit:('acc__16 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'acc__17) -> 'acc__17
val for_all : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val exists : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val to_list : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'elem__) -> 'elem__ list
val map : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> Checkers.UninitDomain.Summary.t option) -> t
val set_all_mutable_fields : t -> unit
\ No newline at end of file +Direct (infer.Backend__Payloads.Fields.Direct)

Module Fields.Direct

val iter : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> unit) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> unit) -> unit
val fold : t -> init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'acc__5) -> config_impact_analysis:('acc__5 -> (tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> 'acc__6) -> cost:('acc__6 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'acc__7) -> lab_resource_leaks:('acc__7 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'acc__8) -> dotnet_resource_leaks:('acc__8 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'acc__9) -> litho_required_props:('acc__9 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'acc__10) -> pulse:('acc__10 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'acc__11) -> purity:('acc__11 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'acc__12) -> quandary:('acc__12 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'acc__13) -> racerd:('acc__13 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'acc__14) -> siof:('acc__14 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'acc__15) -> starvation:('acc__15 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'acc__16) -> nullsafe:('acc__16 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'acc__17) -> uninit:('acc__17 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'acc__18) -> 'acc__18
val for_all : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val exists : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> bool) -> bool
val to_list : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> 'elem__) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> 'elem__) -> 'elem__ list
val map : t -> annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> t -> Checkers.AnnotationReachabilityDomain.t option -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> t -> Biabduction.BiabductionSummary.t option -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunAnalysisSummary.t option -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> t -> BO.BufferOverrunCheckerSummary.t option -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> t -> Checkers.ConfigImpactAnalysis.Summary.t option -> Checkers.ConfigImpactAnalysis.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> t -> Costlib.CostDomain.summary option -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> t -> Labs.ResourceLeakDomain.summary option -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> t -> Dotnet.ResourceLeakCSDomain.summary option -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> t -> Checkers.LithoDomain.summary option -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> t -> Pulselib.PulseSummary.t option -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> t -> Checkers.PurityDomain.summary option -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> t -> Quandary.QuandarySummary.t option -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.RacerDDomain.summary option -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.SiofDomain.Summary.t option -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> t -> Concurrency.StarvationDomain.summary option -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> t -> Nullsafe.NullsafeSummary.t option -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> t -> Checkers.UninitDomain.Summary.t option -> Checkers.UninitDomain.Summary.t option) -> t
val set_all_mutable_fields : t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend__Payloads/Fields/index.html b/website/static/odoc/next/infer/Backend__Payloads/Fields/index.html index e0f3ed661..828f92c2f 100644 --- a/website/static/odoc/next/infer/Backend__Payloads/Fields/index.html +++ b/website/static/odoc/next/infer/Backend__Payloads/Fields/index.html @@ -1,2 +1,2 @@ -Fields (infer.Backend__Payloads.Fields)

Module Backend__Payloads.Fields

val names : string list
val uninit : (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t
val nullsafe : (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t
val starvation : (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t
val siof : (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t
val racerd : (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t
val quandary : (tQuandary.QuandarySummary.t option) Fieldslib.Field.t
val purity : (tCheckers.PurityDomain.summary option) Fieldslib.Field.t
val pulse : (tPulselib.PulseSummary.t option) Fieldslib.Field.t
val litho_required_props : (tCheckers.LithoDomain.summary option) Fieldslib.Field.t
val dotnet_resource_leaks : (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t
val lab_resource_leaks : (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t
val cost : (tCostlib.CostDomain.summary option) Fieldslib.Field.t
val config_checks_between_markers : (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t
val buffer_overrun_checker : (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t
val buffer_overrun_analysis : (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t
val biabduction : (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t
val annot_map : (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t
val fold : init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__5) -> cost:('acc__5 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__6) -> lab_resource_leaks:('acc__6 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__7) -> dotnet_resource_leaks:('acc__7 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__8) -> litho_required_props:('acc__8 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__9) -> pulse:('acc__9 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__10) -> purity:('acc__10 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__11) -> quandary:('acc__11 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__12) -> racerd:('acc__12 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__13) -> siof:('acc__13 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__14) -> starvation:('acc__14 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__15) -> nullsafe:('acc__15 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__16) -> uninit:('acc__16 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__17) -> 'acc__17
val make_creator : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__0 -> ('input__ -> Checkers.AnnotationReachabilityDomain.t option) * 'acc__1) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__1 -> ('input__ -> Biabduction.BiabductionSummary.t option) * 'acc__2) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__2 -> ('input__ -> BO.BufferOverrunAnalysisSummary.t option) * 'acc__3) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__3 -> ('input__ -> BO.BufferOverrunCheckerSummary.t option) * 'acc__4) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__4 -> ('input__ -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) * 'acc__5) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__5 -> ('input__ -> Costlib.CostDomain.summary option) * 'acc__6) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__6 -> ('input__ -> Labs.ResourceLeakDomain.summary option) * 'acc__7) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__7 -> ('input__ -> Dotnet.ResourceLeakCSDomain.summary option) * 'acc__8) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__8 -> ('input__ -> Checkers.LithoDomain.summary option) * 'acc__9) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__9 -> ('input__ -> Pulselib.PulseSummary.t option) * 'acc__10) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__10 -> ('input__ -> Checkers.PurityDomain.summary option) * 'acc__11) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__11 -> ('input__ -> Quandary.QuandarySummary.t option) * 'acc__12) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__12 -> ('input__ -> Concurrency.RacerDDomain.summary option) * 'acc__13) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__13 -> ('input__ -> Checkers.SiofDomain.Summary.t option) * 'acc__14) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__14 -> ('input__ -> Concurrency.StarvationDomain.summary option) * 'acc__15) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__15 -> ('input__ -> Nullsafe.NullsafeSummary.t option) * 'acc__16) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__16 -> ('input__ -> Checkers.UninitDomain.Summary.t option) * 'acc__17) -> 'acc__0 -> ('input__ -> t) * 'acc__17
val create : annot_map:Checkers.AnnotationReachabilityDomain.t option -> biabduction:Biabduction.BiabductionSummary.t option -> buffer_overrun_analysis:BO.BufferOverrunAnalysisSummary.t option -> buffer_overrun_checker:BO.BufferOverrunCheckerSummary.t option -> config_checks_between_markers:Checkers.ConfigChecksBetweenMarkers.Summary.t option -> cost:Costlib.CostDomain.summary option -> lab_resource_leaks:Labs.ResourceLeakDomain.summary option -> dotnet_resource_leaks:Dotnet.ResourceLeakCSDomain.summary option -> litho_required_props:Checkers.LithoDomain.summary option -> pulse:Pulselib.PulseSummary.t option -> purity:Checkers.PurityDomain.summary option -> quandary:Quandary.QuandarySummary.t option -> racerd:Concurrency.RacerDDomain.summary option -> siof:Checkers.SiofDomain.Summary.t option -> starvation:Concurrency.StarvationDomain.summary option -> nullsafe:Nullsafe.NullsafeSummary.t option -> uninit:Checkers.UninitDomain.Summary.t option -> t
val map : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> Checkers.UninitDomain.Summary.t option) -> t
val iter : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> unit) -> unit
val for_all : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val exists : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val to_list : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> 'elem__ list
val map_poly : ([< `Read | `Set_and_create ]t'x0) Fieldslib.Field.user -> 'x0 list
module Direct : sig ... end
\ No newline at end of file +Fields (infer.Backend__Payloads.Fields)

Module Backend__Payloads.Fields

val names : string list
val uninit : (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t
val nullsafe : (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t
val starvation : (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t
val siof : (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t
val racerd : (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t
val quandary : (tQuandary.QuandarySummary.t option) Fieldslib.Field.t
val purity : (tCheckers.PurityDomain.summary option) Fieldslib.Field.t
val pulse : (tPulselib.PulseSummary.t option) Fieldslib.Field.t
val litho_required_props : (tCheckers.LithoDomain.summary option) Fieldslib.Field.t
val dotnet_resource_leaks : (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t
val lab_resource_leaks : (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t
val cost : (tCostlib.CostDomain.summary option) Fieldslib.Field.t
val config_impact_analysis : (tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t
val config_checks_between_markers : (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t
val buffer_overrun_checker : (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t
val buffer_overrun_analysis : (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t
val biabduction : (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t
val annot_map : (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t
val fold : init:'acc__0 -> annot_map:('acc__0 -> (tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__1) -> biabduction:('acc__1 -> (tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__2) -> buffer_overrun_analysis:('acc__2 -> (tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__3) -> buffer_overrun_checker:('acc__3 -> (tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__4) -> config_checks_between_markers:('acc__4 -> (tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__5) -> config_impact_analysis:('acc__5 -> (tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> 'acc__6) -> cost:('acc__6 -> (tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__7) -> lab_resource_leaks:('acc__7 -> (tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__8) -> dotnet_resource_leaks:('acc__8 -> (tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__9) -> litho_required_props:('acc__9 -> (tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__10) -> pulse:('acc__10 -> (tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__11) -> purity:('acc__11 -> (tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__12) -> quandary:('acc__12 -> (tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__13) -> racerd:('acc__13 -> (tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__14) -> siof:('acc__14 -> (tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__15) -> starvation:('acc__15 -> (tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__16) -> nullsafe:('acc__16 -> (tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__17) -> uninit:('acc__17 -> (tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__18) -> 'acc__18
val make_creator : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'acc__0 -> ('input__ -> Checkers.AnnotationReachabilityDomain.t option) * 'acc__1) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'acc__1 -> ('input__ -> Biabduction.BiabductionSummary.t option) * 'acc__2) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'acc__2 -> ('input__ -> BO.BufferOverrunAnalysisSummary.t option) * 'acc__3) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'acc__3 -> ('input__ -> BO.BufferOverrunCheckerSummary.t option) * 'acc__4) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'acc__4 -> ('input__ -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) * 'acc__5) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> 'acc__5 -> ('input__ -> Checkers.ConfigImpactAnalysis.Summary.t option) * 'acc__6) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'acc__6 -> ('input__ -> Costlib.CostDomain.summary option) * 'acc__7) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'acc__7 -> ('input__ -> Labs.ResourceLeakDomain.summary option) * 'acc__8) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'acc__8 -> ('input__ -> Dotnet.ResourceLeakCSDomain.summary option) * 'acc__9) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'acc__9 -> ('input__ -> Checkers.LithoDomain.summary option) * 'acc__10) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'acc__10 -> ('input__ -> Pulselib.PulseSummary.t option) * 'acc__11) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'acc__11 -> ('input__ -> Checkers.PurityDomain.summary option) * 'acc__12) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'acc__12 -> ('input__ -> Quandary.QuandarySummary.t option) * 'acc__13) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'acc__13 -> ('input__ -> Concurrency.RacerDDomain.summary option) * 'acc__14) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'acc__14 -> ('input__ -> Checkers.SiofDomain.Summary.t option) * 'acc__15) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'acc__15 -> ('input__ -> Concurrency.StarvationDomain.summary option) * 'acc__16) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'acc__16 -> ('input__ -> Nullsafe.NullsafeSummary.t option) * 'acc__17) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'acc__17 -> ('input__ -> Checkers.UninitDomain.Summary.t option) * 'acc__18) -> 'acc__0 -> ('input__ -> t) * 'acc__18
val create : annot_map:Checkers.AnnotationReachabilityDomain.t option -> biabduction:Biabduction.BiabductionSummary.t option -> buffer_overrun_analysis:BO.BufferOverrunAnalysisSummary.t option -> buffer_overrun_checker:BO.BufferOverrunCheckerSummary.t option -> config_checks_between_markers:Checkers.ConfigChecksBetweenMarkers.Summary.t option -> config_impact_analysis:Checkers.ConfigImpactAnalysis.Summary.t option -> cost:Costlib.CostDomain.summary option -> lab_resource_leaks:Labs.ResourceLeakDomain.summary option -> dotnet_resource_leaks:Dotnet.ResourceLeakCSDomain.summary option -> litho_required_props:Checkers.LithoDomain.summary option -> pulse:Pulselib.PulseSummary.t option -> purity:Checkers.PurityDomain.summary option -> quandary:Quandary.QuandarySummary.t option -> racerd:Concurrency.RacerDDomain.summary option -> siof:Checkers.SiofDomain.Summary.t option -> starvation:Concurrency.StarvationDomain.summary option -> nullsafe:Nullsafe.NullsafeSummary.t option -> uninit:Checkers.UninitDomain.Summary.t option -> t
val map : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> Checkers.AnnotationReachabilityDomain.t option) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> Biabduction.BiabductionSummary.t option) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunAnalysisSummary.t option) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> BO.BufferOverrunCheckerSummary.t option) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> Checkers.ConfigImpactAnalysis.Summary.t option) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> Costlib.CostDomain.summary option) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> Labs.ResourceLeakDomain.summary option) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> Dotnet.ResourceLeakCSDomain.summary option) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> Checkers.LithoDomain.summary option) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> Pulselib.PulseSummary.t option) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> Checkers.PurityDomain.summary option) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> Quandary.QuandarySummary.t option) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> Concurrency.RacerDDomain.summary option) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> Checkers.SiofDomain.Summary.t option) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> Concurrency.StarvationDomain.summary option) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> Nullsafe.NullsafeSummary.t option) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> Checkers.UninitDomain.Summary.t option) -> t
val iter : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> unit) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> unit) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> unit) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> unit) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> unit) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> unit) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> unit) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> unit) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> unit) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> unit) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> unit) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> unit) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> unit) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> unit) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> unit) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> unit) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> unit) -> unit
val for_all : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val exists : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> bool) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> bool) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> bool) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> bool) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> bool) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> bool) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> bool) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> bool) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> bool) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> bool) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> bool) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> bool) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> bool) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> bool) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> bool) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> bool) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> bool) -> bool
val to_list : annot_map:((tCheckers.AnnotationReachabilityDomain.t option) Fieldslib.Field.t -> 'elem__) -> biabduction:((tBiabduction.BiabductionSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_analysis:((tBO.BufferOverrunAnalysisSummary.t option) Fieldslib.Field.t -> 'elem__) -> buffer_overrun_checker:((tBO.BufferOverrunCheckerSummary.t option) Fieldslib.Field.t -> 'elem__) -> config_checks_between_markers:((tCheckers.ConfigChecksBetweenMarkers.Summary.t option) Fieldslib.Field.t -> 'elem__) -> config_impact_analysis:((tCheckers.ConfigImpactAnalysis.Summary.t option) Fieldslib.Field.t -> 'elem__) -> cost:((tCostlib.CostDomain.summary option) Fieldslib.Field.t -> 'elem__) -> lab_resource_leaks:((tLabs.ResourceLeakDomain.summary option) Fieldslib.Field.t -> 'elem__) -> dotnet_resource_leaks:((tDotnet.ResourceLeakCSDomain.summary option) Fieldslib.Field.t -> 'elem__) -> litho_required_props:((tCheckers.LithoDomain.summary option) Fieldslib.Field.t -> 'elem__) -> pulse:((tPulselib.PulseSummary.t option) Fieldslib.Field.t -> 'elem__) -> purity:((tCheckers.PurityDomain.summary option) Fieldslib.Field.t -> 'elem__) -> quandary:((tQuandary.QuandarySummary.t option) Fieldslib.Field.t -> 'elem__) -> racerd:((tConcurrency.RacerDDomain.summary option) Fieldslib.Field.t -> 'elem__) -> siof:((tCheckers.SiofDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> starvation:((tConcurrency.StarvationDomain.summary option) Fieldslib.Field.t -> 'elem__) -> nullsafe:((tNullsafe.NullsafeSummary.t option) Fieldslib.Field.t -> 'elem__) -> uninit:((tCheckers.UninitDomain.Summary.t option) Fieldslib.Field.t -> 'elem__) -> 'elem__ list
val map_poly : ([< `Read | `Set_and_create ]t'x0) Fieldslib.Field.user -> 'x0 list
module Direct : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend__Payloads/index.html b/website/static/odoc/next/infer/Backend__Payloads/index.html index 6c8dc9eee..175527139 100644 --- a/website/static/odoc/next/infer/Backend__Payloads/index.html +++ b/website/static/odoc/next/infer/Backend__Payloads/index.html @@ -1,2 +1,2 @@ -Backend__Payloads (infer.Backend__Payloads)

Module Backend__Payloads

include sig ... end
type t = {
annot_map : Checkers.AnnotationReachabilityDomain.t option;
biabduction : Biabduction.BiabductionSummary.t option;
buffer_overrun_analysis : BO.BufferOverrunAnalysisSummary.t option;
buffer_overrun_checker : BO.BufferOverrunCheckerSummary.t option;
config_checks_between_markers : Checkers.ConfigChecksBetweenMarkers.Summary.t option;
cost : Costlib.CostDomain.summary option;
lab_resource_leaks : Labs.ResourceLeakDomain.summary option;
dotnet_resource_leaks : Dotnet.ResourceLeakCSDomain.summary option;
litho_required_props : Checkers.LithoDomain.summary option;
pulse : Pulselib.PulseSummary.t option;
purity : Checkers.PurityDomain.summary option;
quandary : Quandary.QuandarySummary.t option;
racerd : Concurrency.RacerDDomain.summary option;
siof : Checkers.SiofDomain.Summary.t option;
starvation : Concurrency.StarvationDomain.summary option;
nullsafe : Nullsafe.NullsafeSummary.t option;
uninit : Checkers.UninitDomain.Summary.t option;
}

analysis results

val uninit : t -> Checkers.UninitDomain.Summary.t option
val nullsafe : t -> Nullsafe.NullsafeSummary.t option
val starvation : t -> Concurrency.StarvationDomain.summary option
val siof : t -> Checkers.SiofDomain.Summary.t option
val racerd : t -> Concurrency.RacerDDomain.summary option
val quandary : t -> Quandary.QuandarySummary.t option
val purity : t -> Checkers.PurityDomain.summary option
val pulse : t -> Pulselib.PulseSummary.t option
val litho_required_props : t -> Checkers.LithoDomain.summary option
val dotnet_resource_leaks : t -> Dotnet.ResourceLeakCSDomain.summary option
val lab_resource_leaks : t -> Labs.ResourceLeakDomain.summary option
val cost : t -> Costlib.CostDomain.summary option
val config_checks_between_markers : t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option
val buffer_overrun_checker : t -> BO.BufferOverrunCheckerSummary.t option
val buffer_overrun_analysis : t -> BO.BufferOverrunAnalysisSummary.t option
val biabduction : t -> Biabduction.BiabductionSummary.t option
val annot_map : t -> Checkers.AnnotationReachabilityDomain.t option
module Fields : sig ... end
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
val empty : t
\ No newline at end of file +Backend__Payloads (infer.Backend__Payloads)

Module Backend__Payloads

include sig ... end
type t = {
annot_map : Checkers.AnnotationReachabilityDomain.t option;
biabduction : Biabduction.BiabductionSummary.t option;
buffer_overrun_analysis : BO.BufferOverrunAnalysisSummary.t option;
buffer_overrun_checker : BO.BufferOverrunCheckerSummary.t option;
config_checks_between_markers : Checkers.ConfigChecksBetweenMarkers.Summary.t option;
config_impact_analysis : Checkers.ConfigImpactAnalysis.Summary.t option;
cost : Costlib.CostDomain.summary option;
lab_resource_leaks : Labs.ResourceLeakDomain.summary option;
dotnet_resource_leaks : Dotnet.ResourceLeakCSDomain.summary option;
litho_required_props : Checkers.LithoDomain.summary option;
pulse : Pulselib.PulseSummary.t option;
purity : Checkers.PurityDomain.summary option;
quandary : Quandary.QuandarySummary.t option;
racerd : Concurrency.RacerDDomain.summary option;
siof : Checkers.SiofDomain.Summary.t option;
starvation : Concurrency.StarvationDomain.summary option;
nullsafe : Nullsafe.NullsafeSummary.t option;
uninit : Checkers.UninitDomain.Summary.t option;
}

analysis results

val uninit : t -> Checkers.UninitDomain.Summary.t option
val nullsafe : t -> Nullsafe.NullsafeSummary.t option
val starvation : t -> Concurrency.StarvationDomain.summary option
val siof : t -> Checkers.SiofDomain.Summary.t option
val racerd : t -> Concurrency.RacerDDomain.summary option
val quandary : t -> Quandary.QuandarySummary.t option
val purity : t -> Checkers.PurityDomain.summary option
val pulse : t -> Pulselib.PulseSummary.t option
val litho_required_props : t -> Checkers.LithoDomain.summary option
val dotnet_resource_leaks : t -> Dotnet.ResourceLeakCSDomain.summary option
val lab_resource_leaks : t -> Labs.ResourceLeakDomain.summary option
val cost : t -> Costlib.CostDomain.summary option
val config_impact_analysis : t -> Checkers.ConfigImpactAnalysis.Summary.t option
val config_checks_between_markers : t -> Checkers.ConfigChecksBetweenMarkers.Summary.t option
val buffer_overrun_checker : t -> BO.BufferOverrunCheckerSummary.t option
val buffer_overrun_analysis : t -> BO.BufferOverrunAnalysisSummary.t option
val biabduction : t -> Biabduction.BiabductionSummary.t option
val annot_map : t -> Checkers.AnnotationReachabilityDomain.t option
module Fields : sig ... end
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : IStdlib.Pp.env -> Stdlib.Format.formatter -> t -> unit
val empty : t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Backend__Summary/OnDisk/index.html b/website/static/odoc/next/infer/Backend__Summary/OnDisk/index.html index 9e6dbf9b8..52404cdc9 100644 --- a/website/static/odoc/next/infer/Backend__Summary/OnDisk/index.html +++ b/website/static/odoc/next/infer/Backend__Summary/OnDisk/index.html @@ -1,2 +1,2 @@ -OnDisk (infer.Backend__Summary.OnDisk)

Module Backend__Summary.OnDisk

val clear_cache : unit -> unit

Remove all the elements from the cache of summaries

val get : IR.Procname.t -> t option

Return the summary option for the procedure name

val reset : IR.Procdesc.t -> t

Reset a summary rebuilding the dependents and preserving the proc attributes if present.

val proc_resolve_attributes : IR.Procname.t -> IR.ProcAttributes.t option

Try to find the attributes for a defined proc. First look at specs (to get attributes computed by analysis) then look at the attributes table. If no attributes can be found, return None.

val store_analyzed : t -> unit

Save summary for the procedure into the spec database

val reset_all : filter:IR.Filtering.procedures_filter -> unit -> unit
val delete : IR.Procname.t -> unit

Delete the .specs file corresponding to the procname and remove its summary from the Summary cache

val iter_specs : f:(t -> unit) -> unit

Iterates over all stored summaries

val iter_report_summaries_from_config : f:(IR.Procname.t -> IBase.Location.t -> Costlib.CostDomain.summary option -> Absint.Errlog.t -> unit) -> unit

Iterates over all analysis artefacts listed above, for each procedure

val pp_specs_from_config : Stdlib.Format.formatter -> unit

pretty print all stored summaries

\ No newline at end of file +OnDisk (infer.Backend__Summary.OnDisk)

Module Backend__Summary.OnDisk

val clear_cache : unit -> unit

Remove all the elements from the cache of summaries

val get : IR.Procname.t -> t option

Return the summary option for the procedure name

val reset : IR.Procdesc.t -> t

Reset a summary rebuilding the dependents and preserving the proc attributes if present.

val proc_resolve_attributes : IR.Procname.t -> IR.ProcAttributes.t option

Try to find the attributes for a defined proc. First look at specs (to get attributes computed by analysis) then look at the attributes table. If no attributes can be found, return None.

val store_analyzed : t -> unit

Save summary for the procedure into the spec database

val reset_all : filter:IR.Filtering.procedures_filter -> unit -> unit
val delete : IR.Procname.t -> unit

Delete the .specs file corresponding to the procname and remove its summary from the Summary cache

val iter_specs : f:(t -> unit) -> unit

Iterates over all stored summaries

val iter_report_summaries_from_config : f:(IR.Procname.t -> IBase.Location.t -> Costlib.CostDomain.summary option -> Checkers.ConfigImpactAnalysis.Summary.t option -> Absint.Errlog.t -> unit) -> unit

Iterates over all analysis artefacts listed above, for each procedure

val pp_specs_from_config : Stdlib.Format.formatter -> unit

pretty print all stored summaries

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Checkers/index.html b/website/static/odoc/next/infer/Checkers/index.html index ba30970d3..57999fa7e 100644 --- a/website/static/odoc/next/infer/Checkers/index.html +++ b/website/static/odoc/next/infer/Checkers/index.html @@ -1,2 +1,2 @@ -Checkers (infer.Checkers)

Module Checkers

module AddressTaken : sig ... end
module AnnotationReachability : sig ... end
module AnnotationReachabilityDomain : sig ... end
module ConfigChecksBetweenMarkers : sig ... end
module Control : sig ... end
module Dominators : sig ... end
module FragmentRetainsViewChecker : sig ... end
module FunctionPointers : sig ... end
module Impurity : sig ... end
module ImpurityDomain : sig ... end
module InefficientKeysetIterator : sig ... end
module LithoDomain : sig ... end
module Liveness : sig ... end
module LoopInvariant : sig ... end
module Loop_control : sig ... end
module NullabilityPreanalysis : sig ... end
module PrintfArgs : sig ... end
module PurityAnalysis : sig ... end
module PurityChecker : sig ... end
module PurityDomain : sig ... end
module PurityModels : sig ... end
module ReachingDefs : sig ... end
module RequiredProps : sig ... end
module SelfInBlock : sig ... end
module Siof : sig ... end
module SiofDomain : sig ... end
module SiofTrace : sig ... end
module Uninit : sig ... end
module UninitDomain : sig ... end
\ No newline at end of file +Checkers (infer.Checkers)

Module Checkers

module AddressTaken : sig ... end
module AnnotationReachability : sig ... end
module AnnotationReachabilityDomain : sig ... end
module ConfigChecksBetweenMarkers : sig ... end
module ConfigImpactAnalysis : sig ... end
module Control : sig ... end
module Dominators : sig ... end
module ExternalConfigImpactData : sig ... end
module FragmentRetainsViewChecker : sig ... end
module FunctionPointers : sig ... end
module Impurity : sig ... end
module ImpurityDomain : sig ... end
module InefficientKeysetIterator : sig ... end
module LithoDomain : sig ... end
module Liveness : sig ... end
module LoopInvariant : sig ... end
module Loop_control : sig ... end
module NullabilityPreanalysis : sig ... end
module PrintfArgs : sig ... end
module PurityAnalysis : sig ... end
module PurityChecker : sig ... end
module PurityDomain : sig ... end
module PurityModels : sig ... end
module ReachingDefs : sig ... end
module RequiredProps : sig ... end
module SelfInBlock : sig ... end
module Siof : sig ... end
module SiofDomain : sig ... end
module SiofTrace : sig ... end
module Uninit : sig ... end
module UninitDomain : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html index 1eec41283..41a442560 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/Event/index.html @@ -1,2 +1,2 @@ -Event (infer.Concurrency.StarvationDomain.Event)

Module StarvationDomain.Event

type t =
| LockAcquire of {
locks : Lock.t list;
thread : ThreadDomain.t;
}
| MayBlock of {
callee : IR.Procname.t;
severity : StarvationModels.severity;
thread : ThreadDomain.t;
}
| MonitorWait of {
lock : Lock.t;
thread : ThreadDomain.t;
}
| MustNotOccurUnderLock of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
| StrictModeCall of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
val compare : t -> t -> int
val describe : F.formatter -> t -> unit
val get_acquired_locks : t -> Lock.t list
\ No newline at end of file +Event (infer.Concurrency.StarvationDomain.Event)

Module StarvationDomain.Event

type t =
| LockAcquire of {
locks : Lock.t list;
thread : ThreadDomain.t;
}
| MayBlock of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
| MonitorWait of {
lock : Lock.t;
thread : ThreadDomain.t;
}
| MustNotOccurUnderLock of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
| StrictModeCall of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
val compare : t -> t -> int
val describe : F.formatter -> t -> unit
val get_acquired_locks : t -> Lock.t list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html b/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html index 76f63e242..d9de8b1bd 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationDomain/index.html @@ -1,2 +1,2 @@ -StarvationDomain (infer.Concurrency.StarvationDomain)

Module Concurrency.StarvationDomain

module F = Stdlib.Format
module ThreadDomain : sig ... end

Domain for thread-type. The main goals are

module Lock : sig ... end

Abstract address for a lock. There are two notions of equality:

module VarDomain : sig ... end
module Event : sig ... end
module Acquisition : sig ... end

a lock acquisition with location information

module Acquisitions : sig ... end

A set of lock acquisitions with source locations and procnames.

module CriticalPairElement : sig ... end

An event and the currently-held locks at the time it occurred.

module CriticalPair : sig ... end

A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

module CriticalPairs : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = CriticalPair.t
module Attribute : sig ... end

Tracks expression attributes

module AttributeDomain : sig ... end

Tracks all expressions assigned values of Attribute

module ScheduledWorkItem : sig ... end

A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

module ScheduledWorkDomain : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = ScheduledWorkItem.t
type t = {
ignore_blocking_calls : bool;
guard_map : GuardToLockMap.t;
lock_state : LockState.t;
critical_pairs : CriticalPairs.t;
attributes : AttributeDomain.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
var_state : VarDomain.t;
}
include Absint.AbstractDomain.S with type t := t
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 initial : t

initial domain state

val acquire : tenv:IR.Tenv.t -> t -> procname:IR.Procname.t -> loc:IBase.Location.t -> Lock.t list -> t

simultaneously acquire a number of locks, no-op if list is empty

val release : t -> Lock.t list -> t

simultaneously release a number of locks, no-op if list is empty

val blocking_call : callee:IR.Procname.t -> StarvationModels.severity -> loc:IBase.Location.t -> t -> t
val wait_on_monitor : loc:IBase.Location.t -> Absint.FormalMap.t -> Absint.HilExp.t list -> t -> t
val future_get : callee:IR.Procname.t -> loc:IBase.Location.t -> Absint.HilExp.t list -> t -> t
val strict_mode_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val arbitrary_code_execution : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val add_guard : acquire_now:bool -> procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> Lock.t -> t

Install a mapping from the guard expression to the lock provided, and optionally lock it.

val lock_guard : procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> t

Acquire the lock the guard was constructed with.

val remove_guard : t -> Absint.HilExp.t -> t

Destroy the guard and release its lock.

val unlock_guard : t -> Absint.HilExp.t -> t

Release the lock the guard was constructed with.

val schedule_work : IBase.Location.t -> StarvationModels.scheduler_thread_constraint -> t -> IR.Procname.t -> t

record the fact that a method is scheduled to run on a certain thread/executor

type summary = {
critical_pairs : CriticalPairs.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
attributes : AttributeDomain.t;

final-state attributes that affect instance variables only

return_attribute : Attribute.t;
}
val empty_summary : summary
val pp_summary : F.formatter -> summary -> unit
val integrate_summary : tenv:IR.Tenv.t -> lhs:Absint.HilExp.AccessExpression.t -> subst:Lock.subst -> Absint.CallSite.t -> t -> summary -> t

apply a callee summary to the current abstract state; lhs is the expression assigned the returned value, if any

val summary_of_astate : IR.Procdesc.t -> t -> summary
val set_ignore_blocking_calls_flag : t -> t
val remove_dead_vars : t -> IR.Var.t list -> t
val fold_critical_pairs_of_summary : (CriticalPair.t -> 'a -> 'a) -> summary -> 'a -> 'a
\ No newline at end of file +StarvationDomain (infer.Concurrency.StarvationDomain)

Module Concurrency.StarvationDomain

module F = Stdlib.Format
module ThreadDomain : sig ... end

Domain for thread-type. The main goals are

module Lock : sig ... end

Abstract address for a lock. There are two notions of equality:

module VarDomain : sig ... end
module Event : sig ... end
module Acquisition : sig ... end

a lock acquisition with location information

module Acquisitions : sig ... end

A set of lock acquisitions with source locations and procnames.

module CriticalPairElement : sig ... end

An event and the currently-held locks at the time it occurred.

module CriticalPair : sig ... end

A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

module CriticalPairs : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = CriticalPair.t
module Attribute : sig ... end

Tracks expression attributes

module AttributeDomain : sig ... end

Tracks all expressions assigned values of Attribute

module ScheduledWorkItem : sig ... end

A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

module ScheduledWorkDomain : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = ScheduledWorkItem.t
type t = {
ignore_blocking_calls : bool;
guard_map : GuardToLockMap.t;
lock_state : LockState.t;
critical_pairs : CriticalPairs.t;
attributes : AttributeDomain.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
var_state : VarDomain.t;
}
include Absint.AbstractDomain.S with type t := t
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 initial : t

initial domain state

val acquire : tenv:IR.Tenv.t -> t -> procname:IR.Procname.t -> loc:IBase.Location.t -> Lock.t list -> t

simultaneously acquire a number of locks, no-op if list is empty

val release : t -> Lock.t list -> t

simultaneously release a number of locks, no-op if list is empty

val blocking_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val wait_on_monitor : loc:IBase.Location.t -> Absint.FormalMap.t -> Absint.HilExp.t list -> t -> t
val future_get : callee:IR.Procname.t -> loc:IBase.Location.t -> Absint.HilExp.t list -> t -> t
val strict_mode_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val arbitrary_code_execution : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val add_guard : acquire_now:bool -> procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> Lock.t -> t

Install a mapping from the guard expression to the lock provided, and optionally lock it.

val lock_guard : procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> t

Acquire the lock the guard was constructed with.

val remove_guard : t -> Absint.HilExp.t -> t

Destroy the guard and release its lock.

val unlock_guard : t -> Absint.HilExp.t -> t

Release the lock the guard was constructed with.

val schedule_work : IBase.Location.t -> StarvationModels.scheduler_thread_constraint -> t -> IR.Procname.t -> t

record the fact that a method is scheduled to run on a certain thread/executor

type summary = {
critical_pairs : CriticalPairs.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
attributes : AttributeDomain.t;

final-state attributes that affect instance variables only

return_attribute : Attribute.t;
}
val empty_summary : summary
val pp_summary : F.formatter -> summary -> unit
val integrate_summary : tenv:IR.Tenv.t -> lhs:Absint.HilExp.AccessExpression.t -> subst:Lock.subst -> Absint.CallSite.t -> t -> summary -> t

apply a callee summary to the current abstract state; lhs is the expression assigned the returned value, if any

val summary_of_astate : IR.Procdesc.t -> t -> summary
val set_ignore_blocking_calls_flag : t -> t
val remove_dead_vars : t -> IR.Var.t list -> t
val fold_critical_pairs_of_summary : (CriticalPair.t -> 'a -> 'a) -> summary -> 'a -> 'a
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html b/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html index c86d0a7e3..345c1cf44 100644 --- a/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html +++ b/website/static/odoc/next/infer/Concurrency/StarvationModels/index.html @@ -1,2 +1,2 @@ -StarvationModels (infer.Concurrency.StarvationModels)

Module Concurrency.StarvationModels

module F = Stdlib.Format
type severity =
| Low
| Medium
| High
val compare_severity : severity -> severity -> int
val pp_severity : F.formatter -> severity -> unit
val may_block : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> severity option

is the method call potentially blocking, given the actuals passed?

val is_strict_mode_violation : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_monitor_wait : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_synchronized_library_call : IR.Tenv.t -> IR.Procname.t -> bool

does the method call lock-then-unlock the underlying object? legacy Java containers like Vector do this, and can interact with explicit locking

val should_skip_analysis : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

should we treat a method call as skip (eg library methods in guava) to avoid FPs?

val is_annotated_nonblocking : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Nonblocking

val is_annotated_lockless : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Lockless

val schedules_work : IR.Tenv.t -> IR.Procname.t -> bool

call known to schedule runnable first argument to some executor/handler or subclass

type scheduler_thread_constraint =
| ForUIThread
| ForNonUIThread
| ForUnknownThread

an instance field holding a reference to an executor may be annotated as running on UI/non-UI thread

val equal_scheduler_thread_constraint : scheduler_thread_constraint -> scheduler_thread_constraint -> bool
val get_executor_thread_annotation_constraint : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> scheduler_thread_constraint option

given an executor receiver, get its thread constraint, if any. None means lookup somehow failed, whereas Some UnknownThread means the receiver is an unannotated executor.

val get_run_method_from_runnable : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> IR.Procname.t option

given a receiver, find the run() method in the appropriate class

val get_returned_executor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> scheduler_thread_constraint option

does the function return an executor and of which thread?

val schedules_first_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as first procedure argument on the UI thread

val schedules_second_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as second procedure argument on a background thread

val schedules_first_arg_on_bg_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly the runnable object provided as first procedure argument on a background thread

val is_getMainLooper : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_handler_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_thread_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_get : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_is_done : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_assume_true : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

is the callee equivalent to assuming its first argument true

val is_java_main_method : IR.Procname.t -> bool

does the method look like a Java main

val may_execute_arbitrary_code : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

for example com.google.common.util.concurrent.SettableFuture.set

\ No newline at end of file +StarvationModels (infer.Concurrency.StarvationModels)

Module Concurrency.StarvationModels

val may_block : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

is the method call potentially blocking, given the actuals passed?

val is_strict_mode_violation : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_monitor_wait : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_synchronized_library_call : IR.Tenv.t -> IR.Procname.t -> bool

does the method call lock-then-unlock the underlying object? legacy Java containers like Vector do this, and can interact with explicit locking

val should_skip_analysis : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

should we treat a method call as skip (eg library methods in guava) to avoid FPs?

val is_annotated_nonblocking : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Nonblocking

val is_annotated_lockless : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Lockless

val schedules_work : IR.Tenv.t -> IR.Procname.t -> bool

call known to schedule runnable first argument to some executor/handler or subclass

type scheduler_thread_constraint =
| ForUIThread
| ForNonUIThread
| ForUnknownThread

an instance field holding a reference to an executor may be annotated as running on UI/non-UI thread

val equal_scheduler_thread_constraint : scheduler_thread_constraint -> scheduler_thread_constraint -> bool
val get_executor_thread_annotation_constraint : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> scheduler_thread_constraint option

given an executor receiver, get its thread constraint, if any. None means lookup somehow failed, whereas Some UnknownThread means the receiver is an unannotated executor.

val get_run_method_from_runnable : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> IR.Procname.t option

given a receiver, find the run() method in the appropriate class

val get_returned_executor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> scheduler_thread_constraint option

does the function return an executor and of which thread?

val schedules_first_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as first procedure argument on the UI thread

val schedules_second_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as second procedure argument on a background thread

val schedules_first_arg_on_bg_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly the runnable object provided as first procedure argument on a background thread

val is_getMainLooper : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_handler_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_thread_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_get : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_is_done : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_assume_true : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

is the callee equivalent to assuming its first argument true

val is_java_main_method : IR.Procname.t -> bool

does the method look like a Java main

val may_execute_arbitrary_code : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

for example com.google.common.util.concurrent.SettableFuture.set

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Concurrency__StarvationDomain/Event/index.html b/website/static/odoc/next/infer/Concurrency__StarvationDomain/Event/index.html index b4a36a319..e22ed1323 100644 --- a/website/static/odoc/next/infer/Concurrency__StarvationDomain/Event/index.html +++ b/website/static/odoc/next/infer/Concurrency__StarvationDomain/Event/index.html @@ -1,2 +1,2 @@ -Event (infer.Concurrency__StarvationDomain.Event)

Module Concurrency__StarvationDomain.Event

type t =
| LockAcquire of {
locks : Lock.t list;
thread : ThreadDomain.t;
}
| MayBlock of {
callee : IR.Procname.t;
severity : Concurrency.StarvationModels.severity;
thread : ThreadDomain.t;
}
| MonitorWait of {
lock : Lock.t;
thread : ThreadDomain.t;
}
| MustNotOccurUnderLock of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
| StrictModeCall of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
val compare : t -> t -> int
val describe : F.formatter -> t -> unit
val get_acquired_locks : t -> Lock.t list
\ No newline at end of file +Event (infer.Concurrency__StarvationDomain.Event)

Module Concurrency__StarvationDomain.Event

type t =
| LockAcquire of {
locks : Lock.t list;
thread : ThreadDomain.t;
}
| MayBlock of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
| MonitorWait of {
lock : Lock.t;
thread : ThreadDomain.t;
}
| MustNotOccurUnderLock of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
| StrictModeCall of {
callee : IR.Procname.t;
thread : ThreadDomain.t;
}
val compare : t -> t -> int
val describe : F.formatter -> t -> unit
val get_acquired_locks : t -> Lock.t list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Concurrency__StarvationDomain/index.html b/website/static/odoc/next/infer/Concurrency__StarvationDomain/index.html index 028c1d2b5..b0699a77c 100644 --- a/website/static/odoc/next/infer/Concurrency__StarvationDomain/index.html +++ b/website/static/odoc/next/infer/Concurrency__StarvationDomain/index.html @@ -1,2 +1,2 @@ -Concurrency__StarvationDomain (infer.Concurrency__StarvationDomain)

Module Concurrency__StarvationDomain

module F = Stdlib.Format
module ThreadDomain : sig ... end

Domain for thread-type. The main goals are

module Lock : sig ... end

Abstract address for a lock. There are two notions of equality:

module VarDomain : sig ... end
module Event : sig ... end
module Acquisition : sig ... end

a lock acquisition with location information

module Acquisitions : sig ... end

A set of lock acquisitions with source locations and procnames.

module CriticalPairElement : sig ... end

An event and the currently-held locks at the time it occurred.

module CriticalPair : sig ... end

A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

module CriticalPairs : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = CriticalPair.t
module Attribute : sig ... end

Tracks expression attributes

module AttributeDomain : sig ... end

Tracks all expressions assigned values of Attribute

module ScheduledWorkItem : sig ... end

A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

module ScheduledWorkDomain : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = ScheduledWorkItem.t
type t = {
ignore_blocking_calls : bool;
guard_map : GuardToLockMap.t;
lock_state : LockState.t;
critical_pairs : CriticalPairs.t;
attributes : AttributeDomain.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
var_state : VarDomain.t;
}
include Absint.AbstractDomain.S with type t := t
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 initial : t

initial domain state

val acquire : tenv:IR.Tenv.t -> t -> procname:IR.Procname.t -> loc:IBase.Location.t -> Lock.t list -> t

simultaneously acquire a number of locks, no-op if list is empty

val release : t -> Lock.t list -> t

simultaneously release a number of locks, no-op if list is empty

val blocking_call : callee:IR.Procname.t -> Concurrency.StarvationModels.severity -> loc:IBase.Location.t -> t -> t
val wait_on_monitor : loc:IBase.Location.t -> Absint.FormalMap.t -> Absint.HilExp.t list -> t -> t
val future_get : callee:IR.Procname.t -> loc:IBase.Location.t -> Absint.HilExp.t list -> t -> t
val strict_mode_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val arbitrary_code_execution : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val add_guard : acquire_now:bool -> procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> Lock.t -> t

Install a mapping from the guard expression to the lock provided, and optionally lock it.

val lock_guard : procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> t

Acquire the lock the guard was constructed with.

val remove_guard : t -> Absint.HilExp.t -> t

Destroy the guard and release its lock.

val unlock_guard : t -> Absint.HilExp.t -> t

Release the lock the guard was constructed with.

val schedule_work : IBase.Location.t -> Concurrency.StarvationModels.scheduler_thread_constraint -> t -> IR.Procname.t -> t

record the fact that a method is scheduled to run on a certain thread/executor

type summary = {
critical_pairs : CriticalPairs.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
attributes : AttributeDomain.t;

final-state attributes that affect instance variables only

return_attribute : Attribute.t;
}
val empty_summary : summary
val pp_summary : F.formatter -> summary -> unit
val integrate_summary : tenv:IR.Tenv.t -> lhs:Absint.HilExp.AccessExpression.t -> subst:Lock.subst -> Absint.CallSite.t -> t -> summary -> t

apply a callee summary to the current abstract state; lhs is the expression assigned the returned value, if any

val summary_of_astate : IR.Procdesc.t -> t -> summary
val set_ignore_blocking_calls_flag : t -> t
val remove_dead_vars : t -> IR.Var.t list -> t
val fold_critical_pairs_of_summary : (CriticalPair.t -> 'a -> 'a) -> summary -> 'a -> 'a
\ No newline at end of file +Concurrency__StarvationDomain (infer.Concurrency__StarvationDomain)

Module Concurrency__StarvationDomain

module F = Stdlib.Format
module ThreadDomain : sig ... end

Domain for thread-type. The main goals are

module Lock : sig ... end

Abstract address for a lock. There are two notions of equality:

module VarDomain : sig ... end
module Event : sig ... end
module Acquisition : sig ... end

a lock acquisition with location information

module Acquisitions : sig ... end

A set of lock acquisitions with source locations and procnames.

module CriticalPairElement : sig ... end

An event and the currently-held locks at the time it occurred.

module CriticalPair : sig ... end

A CriticalPairElement equipped with a call stack. The intuition is that if we have a critical pair `(locks, event)` in the summary of a method then there is a trace of that method where `event` occurs, and right before it occurs the locks held are exactly `locks` (no over/under approximation). We call it "critical" because the information here alone determines deadlock conditions.

module CriticalPairs : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = CriticalPair.t
module Attribute : sig ... end

Tracks expression attributes

module AttributeDomain : sig ... end

Tracks all expressions assigned values of Attribute

module ScheduledWorkItem : sig ... end

A record of scheduled parallel work: the method scheduled to run, where, and on what thread.

module ScheduledWorkDomain : Absint.AbstractDomain.FiniteSetS with type FiniteSetS.elt = ScheduledWorkItem.t
type t = {
ignore_blocking_calls : bool;
guard_map : GuardToLockMap.t;
lock_state : LockState.t;
critical_pairs : CriticalPairs.t;
attributes : AttributeDomain.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
var_state : VarDomain.t;
}
include Absint.AbstractDomain.S with type t := t
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 initial : t

initial domain state

val acquire : tenv:IR.Tenv.t -> t -> procname:IR.Procname.t -> loc:IBase.Location.t -> Lock.t list -> t

simultaneously acquire a number of locks, no-op if list is empty

val release : t -> Lock.t list -> t

simultaneously release a number of locks, no-op if list is empty

val blocking_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val wait_on_monitor : loc:IBase.Location.t -> Absint.FormalMap.t -> Absint.HilExp.t list -> t -> t
val future_get : callee:IR.Procname.t -> loc:IBase.Location.t -> Absint.HilExp.t list -> t -> t
val strict_mode_call : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val arbitrary_code_execution : callee:IR.Procname.t -> loc:IBase.Location.t -> t -> t
val add_guard : acquire_now:bool -> procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> Lock.t -> t

Install a mapping from the guard expression to the lock provided, and optionally lock it.

val lock_guard : procname:IR.Procname.t -> loc:IBase.Location.t -> IR.Tenv.t -> t -> Absint.HilExp.t -> t

Acquire the lock the guard was constructed with.

val remove_guard : t -> Absint.HilExp.t -> t

Destroy the guard and release its lock.

val unlock_guard : t -> Absint.HilExp.t -> t

Release the lock the guard was constructed with.

val schedule_work : IBase.Location.t -> Concurrency.StarvationModels.scheduler_thread_constraint -> t -> IR.Procname.t -> t

record the fact that a method is scheduled to run on a certain thread/executor

type summary = {
critical_pairs : CriticalPairs.t;
thread : ThreadDomain.t;
scheduled_work : ScheduledWorkDomain.t;
attributes : AttributeDomain.t;

final-state attributes that affect instance variables only

return_attribute : Attribute.t;
}
val empty_summary : summary
val pp_summary : F.formatter -> summary -> unit
val integrate_summary : tenv:IR.Tenv.t -> lhs:Absint.HilExp.AccessExpression.t -> subst:Lock.subst -> Absint.CallSite.t -> t -> summary -> t

apply a callee summary to the current abstract state; lhs is the expression assigned the returned value, if any

val summary_of_astate : IR.Procdesc.t -> t -> summary
val set_ignore_blocking_calls_flag : t -> t
val remove_dead_vars : t -> IR.Var.t list -> t
val fold_critical_pairs_of_summary : (CriticalPair.t -> 'a -> 'a) -> summary -> 'a -> 'a
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Concurrency__StarvationModels/index.html b/website/static/odoc/next/infer/Concurrency__StarvationModels/index.html index 663aea205..a7ae456e5 100644 --- a/website/static/odoc/next/infer/Concurrency__StarvationModels/index.html +++ b/website/static/odoc/next/infer/Concurrency__StarvationModels/index.html @@ -1,2 +1,2 @@ -Concurrency__StarvationModels (infer.Concurrency__StarvationModels)

Module Concurrency__StarvationModels

module F = Stdlib.Format
type severity =
| Low
| Medium
| High
val compare_severity : severity -> severity -> int
val pp_severity : F.formatter -> severity -> unit
val may_block : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> severity option

is the method call potentially blocking, given the actuals passed?

val is_strict_mode_violation : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_monitor_wait : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_synchronized_library_call : IR.Tenv.t -> IR.Procname.t -> bool

does the method call lock-then-unlock the underlying object? legacy Java containers like Vector do this, and can interact with explicit locking

val should_skip_analysis : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

should we treat a method call as skip (eg library methods in guava) to avoid FPs?

val is_annotated_nonblocking : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Nonblocking

val is_annotated_lockless : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Lockless

val schedules_work : IR.Tenv.t -> IR.Procname.t -> bool

call known to schedule runnable first argument to some executor/handler or subclass

type scheduler_thread_constraint =
| ForUIThread
| ForNonUIThread
| ForUnknownThread

an instance field holding a reference to an executor may be annotated as running on UI/non-UI thread

val equal_scheduler_thread_constraint : scheduler_thread_constraint -> scheduler_thread_constraint -> bool
val get_executor_thread_annotation_constraint : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> scheduler_thread_constraint option

given an executor receiver, get its thread constraint, if any. None means lookup somehow failed, whereas Some UnknownThread means the receiver is an unannotated executor.

val get_run_method_from_runnable : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> IR.Procname.t option

given a receiver, find the run() method in the appropriate class

val get_returned_executor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> scheduler_thread_constraint option

does the function return an executor and of which thread?

val schedules_first_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as first procedure argument on the UI thread

val schedules_second_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as second procedure argument on a background thread

val schedules_first_arg_on_bg_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly the runnable object provided as first procedure argument on a background thread

val is_getMainLooper : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_handler_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_thread_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_get : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_is_done : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_assume_true : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

is the callee equivalent to assuming its first argument true

val is_java_main_method : IR.Procname.t -> bool

does the method look like a Java main

val may_execute_arbitrary_code : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

for example com.google.common.util.concurrent.SettableFuture.set

\ No newline at end of file +Concurrency__StarvationModels (infer.Concurrency__StarvationModels)

Module Concurrency__StarvationModels

val may_block : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

is the method call potentially blocking, given the actuals passed?

val is_strict_mode_violation : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_monitor_wait : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_synchronized_library_call : IR.Tenv.t -> IR.Procname.t -> bool

does the method call lock-then-unlock the underlying object? legacy Java containers like Vector do this, and can interact with explicit locking

val should_skip_analysis : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

should we treat a method call as skip (eg library methods in guava) to avoid FPs?

val is_annotated_nonblocking : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Nonblocking

val is_annotated_lockless : IR.Tenv.t -> IR.Procname.t -> bool

is procedure transitively annotated @Lockless

val schedules_work : IR.Tenv.t -> IR.Procname.t -> bool

call known to schedule runnable first argument to some executor/handler or subclass

type scheduler_thread_constraint =
| ForUIThread
| ForNonUIThread
| ForUnknownThread

an instance field holding a reference to an executor may be annotated as running on UI/non-UI thread

val equal_scheduler_thread_constraint : scheduler_thread_constraint -> scheduler_thread_constraint -> bool
val get_executor_thread_annotation_constraint : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> scheduler_thread_constraint option

given an executor receiver, get its thread constraint, if any. None means lookup somehow failed, whereas Some UnknownThread means the receiver is an unannotated executor.

val get_run_method_from_runnable : IR.Tenv.t -> Absint.HilExp.AccessExpression.t -> IR.Procname.t option

given a receiver, find the run() method in the appropriate class

val get_returned_executor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> scheduler_thread_constraint option

does the function return an executor and of which thread?

val schedules_first_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as first procedure argument on the UI thread

val schedules_second_arg_on_ui_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly schedule the runnable object provided as second procedure argument on a background thread

val schedules_first_arg_on_bg_thread : IR.Tenv.t -> IR.Procname.t -> bool

method call known to directly the runnable object provided as first procedure argument on a background thread

val is_getMainLooper : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_handler_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_thread_constructor : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_get : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_future_is_done : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool
val is_assume_true : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

is the callee equivalent to assuming its first argument true

val is_java_main_method : IR.Procname.t -> bool

does the method look like a Java main

val may_execute_arbitrary_code : IR.Tenv.t -> IR.Procname.t -> Absint.HilExp.t list -> bool

for example com.google.common.util.concurrent.SettableFuture.set

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase/Checker/index.html b/website/static/odoc/next/infer/IBase/Checker/index.html index ba6de218c..2bd5c3911 100644 --- a/website/static/odoc/next/infer/IBase/Checker/index.html +++ b/website/static/odoc/next/infer/IBase/Checker/index.html @@ -1,2 +1,2 @@ -Checker (infer.IBase.Checker)

Module IBase.Checker

type t =
| AnnotationReachability
| Biabduction
| BufferOverrunAnalysis
| BufferOverrunChecker
| ConfigChecksBetweenMarkers
| Cost
| Eradicate
| FragmentRetainsView
| ImmutableCast
| Impurity
| InefficientKeysetIterator
| Linters
| LithoRequiredProps
| Liveness
| LoopHoisting
| NullsafeDeprecated
| PrintfArgs
| Pulse
| PurityAnalysis
| PurityChecker
| Quandary
| RacerD
| ResourceLeakLabExercise
| DOTNETResourceLeaks
| SIOF
| SelfInBlock
| Starvation
| ToplOnBiabduction
| ToplOnPulse
| Uninit
val equal : t -> t -> bool
val all : t list
type support =
| NoSupport

checker does not run at all for this language

| ExperimentalSupport

checker runs but is not expected to give reasonable results

| Support

checker is expected to give reasonable results

per-language support for each checker

type cli_flags = {
deprecated : string list;

More command-line flags, similar to ~deprecated arguments in CommandLineOption.

show_in_help : bool;
}
type kind =
| UserFacing of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

}

can report issues to users

| UserFacingDeprecated of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

deprecation_message : string;
}

can report issues to users but should probably be deleted from infer

| Internal

Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

| Exercise

reserved for the "resource leak" lab exercise

type config = {
id : string;

Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

kind : kind;
support : Language.t -> support;
short_documentation : string;

used in man pages and as a short intro on the website

cli_flags : cli_flags option;

If None then the checker cannot be enabled/disabled from the command line.

enabled_by_default : bool;
activates : t list;

list of checkers that get enabled when this checker is enabled

}
val config : t -> config
val get_id : t -> string

get_id c is (config c).id

val from_id : string -> t option
\ No newline at end of file +Checker (infer.IBase.Checker)

Module IBase.Checker

type t =
| AnnotationReachability
| Biabduction
| BufferOverrunAnalysis
| BufferOverrunChecker
| ConfigChecksBetweenMarkers
| ConfigImpactAnalysis
| Cost
| Eradicate
| FragmentRetainsView
| ImmutableCast
| Impurity
| InefficientKeysetIterator
| Linters
| LithoRequiredProps
| Liveness
| LoopHoisting
| NullsafeDeprecated
| PrintfArgs
| Pulse
| PurityAnalysis
| PurityChecker
| Quandary
| RacerD
| ResourceLeakLabExercise
| DOTNETResourceLeaks
| SIOF
| SelfInBlock
| Starvation
| ToplOnBiabduction
| ToplOnPulse
| Uninit
val equal : t -> t -> bool
val all : t list
type support =
| NoSupport

checker does not run at all for this language

| ExperimentalSupport

checker runs but is not expected to give reasonable results

| Support

checker is expected to give reasonable results

per-language support for each checker

type cli_flags = {
deprecated : string list;

More command-line flags, similar to ~deprecated arguments in CommandLineOption.

show_in_help : bool;
}
type kind =
| UserFacing of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

}

can report issues to users

| UserFacingDeprecated of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

deprecation_message : string;
}

can report issues to users but should probably be deleted from infer

| Internal

Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

| Exercise

reserved for the "resource leak" lab exercise

type config = {
id : string;

Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

kind : kind;
support : Language.t -> support;
short_documentation : string;

used in man pages and as a short intro on the website

cli_flags : cli_flags option;

If None then the checker cannot be enabled/disabled from the command line.

enabled_by_default : bool;
activates : t list;

list of checkers that get enabled when this checker is enabled

}
val config : t -> config
val get_id : t -> string

get_id c is (config c).id

val from_id : string -> t option
\ 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 d4d254167..4696d2a85 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_sql : string
val biabduction_models_jar : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val buck_java_flavor_suppress_config : 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_immutable_modifications : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val kotlin_source_extension : string
val sourcepath : string option
val sources : string list
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 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_java_heap_size_gb : int option
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 cfg_json : 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_ast_file : [ `Biniou of string | `Yojson of 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 cost_scuba_logging : bool
val costs_previous : string option
val cost_suppress_func_ptr : bool
val cost_tests_only_autoreleasepool : bool
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 global_tenv : 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_source_parser_experimental : bool
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 liveness_ignored_constant : string list
val max_nesting : int option
val memtrace_analysis : bool
val memtrace_sampling_rate : float
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_annotation_graph : bool
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_in_default_mode : 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_cfg : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val procedures_summary_json : 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 pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_intraprocedural_only : bool
val pulse_isl : 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_return_nonnull : Str.regexp option
val pulse_model_skip_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_report_latent_issues : bool
val pulse_recency_limit : int
val pulse_widen_threshold : int
val pulse_nullsafe_report_npe : bool
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 : [ `All | `Select of 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 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 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 suppress_lint_ignore_types : bool
val symops_per_iteration : int option
val tenv_json : string 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_max_conjuncts : int
val topl_max_disjuncts : int
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 workspace : string option
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 xcode_isysroot_suffix : 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 scuba_execution_id : IStdlib.IStd.Int64.t option

a random number to (hopefully) uniquely identify this run

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list
\ 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_sql : string
val biabduction_models_jar : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val buck_java_flavor_suppress_config : 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_immutable_modifications : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val kotlin_source_extension : string
val sourcepath : string option
val sources : string list
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 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_java_heap_size_gb : int option
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 cfg_json : 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_ast_file : [ `Biniou of string | `Yojson of 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 config_impact_data_file : string option
val continue_analysis : bool
val continue_capture : bool
val costs_current : string option
val cost_issues_tests : string option
val cost_scuba_logging : bool
val costs_previous : string option
val cost_suppress_func_ptr : bool
val cost_tests_only_autoreleasepool : bool
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 global_tenv : 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_source_parser_experimental : bool
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 liveness_ignored_constant : string list
val max_nesting : int option
val memtrace_analysis : bool
val memtrace_sampling_rate : float
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_annotation_graph : bool
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_in_default_mode : 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_cfg : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val procedures_summary_json : 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 pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_intraprocedural_only : bool
val pulse_isl : 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_return_nonnull : Str.regexp option
val pulse_model_skip_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_report_latent_issues : bool
val pulse_recency_limit : int
val pulse_widen_threshold : int
val pulse_nullsafe_report_npe : bool
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 : [ `All | `Select of 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_non_capture_clang_commands : bool
val skip_translation_headers : string list
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 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 suppress_lint_ignore_types : bool
val symops_per_iteration : int option
val tenv_json : string 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_max_conjuncts : int
val topl_max_disjuncts : int
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 workspace : string option
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 xcode_isysroot_suffix : 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 scuba_execution_id : IStdlib.IStd.Int64.t option

a random number to (hopefully) uniquely identify this run

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list
\ 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 3f36a987f..ad45c51fb 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 arbitrary_code_execution_under_lock : 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_annotation_graph : 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 expensive_cost_call : kind:CostKind.t -> 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 dotnet_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 modifies_immutable : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val optional_empty_access : 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_biabd_error : t
val topl_pulse_error : t
val uninitialized_value : t
val uninitialized_value_pulse : 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
val is_autoreleasepool_size_issue : t -> bool
\ 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 arbitrary_code_execution_under_lock : 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 config_impact_analysis : 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_annotation_graph : 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 expensive_cost_call : kind:CostKind.t -> t
val failure_exe : t
val field_not_null_checked : t
val guardedby_violation : t
val guardedby_violation_nullsafe : 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 dotnet_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 modifies_immutable : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val optional_empty_access : 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 thread_safety_violation_nullsafe : t
val topl_biabd_error : t
val topl_pulse_error : t
val uninitialized_value : t
val uninitialized_value_pulse : 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
val is_autoreleasepool_size_issue : t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html b/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html index 8220d0621..31fc391db 100644 --- a/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html +++ b/website/static/odoc/next/infer/IBase/ResultsDirEntryName/index.html @@ -1,2 +1,2 @@ -ResultsDirEntryName (infer.IBase.ResultsDirEntryName)

Module IBase.ResultsDirEntryName

type id =
| AllocationTraces

directory for storing allocation traces

| CaptureDB

the capture database

| CaptureDependencies

list of infer-out/ directories that contain capture artefacts

| ChangedFunctions

results of the clang test determinator

| Debug

directory containing debug data

| Differential

contains the results of infer reportdiff

| DuplicateFunctions

list of duplicated functions

| JavaClassnamesCache

used when capturing Java jar dependencies

| JavaGlobalTypeEnvironment

internal Tenv.t object corresponding to the whole project

| LintDotty

directory of linters' dotty debug output for CTL evaluation

| LintIssues

directory of linters' issues

| Logs

log file

| NullsafeFileIssues

file-wide issues of the nullsafe analysis

| PerfEvents

file containing events for performance profiling

| ProcnamesLocks

directory of per-Procname.t file locks, used by the analysis scheduler in certain modes

| RacerDIssues

directory of issues reported by the RacerD analysis

| ReportCostsJson

reports of the costs analysis

| ReportHtml

directory of the HTML report

| ReportJson

the main product of the analysis: report.json

| ReportText

a human-readable textual version of report.json

| ReportXML

a PMD-style XML version of report.json

| RetainCycles

directory of retain cycles dotty files

| RunState

internal data about the last infer run

| StarvationIssues

directory of issues reported by the starvation analysis

| Temporary

directory containing temp files

| TestDeterminatorReport

the report produced by the test determinator capture mode

| TestDeterminatorTempResults

a directory

val get_path : results_dir:string -> id -> string

the absolute path for the given entry

val get_issues_directories : unit -> id list

all the entries that correspond to directories containing temporary issue logs for certain analyses

val to_delete_before_incremental_capture_and_analysis : results_dir:string -> string list

utility for ResultsDir.scrub_for_incremental, you probably want to use that instead

val to_delete_before_caching_capture : results_dir:string -> string list

utility for ResultsDir.scrub_for_caching, you probably want to use that instead

val buck_infer_deps_file_name : string

sad that we have to have this here but some code path is looking for all files with that name in buck-out/

\ No newline at end of file +ResultsDirEntryName (infer.IBase.ResultsDirEntryName)

Module IBase.ResultsDirEntryName

type id =
| AllocationTraces

directory for storing allocation traces

| CaptureDB

the capture database

| CaptureDependencies

list of infer-out/ directories that contain capture artefacts

| ChangedFunctions

results of the clang test determinator

| Debug

directory containing debug data

| Differential

contains the results of infer reportdiff

| DuplicateFunctions

list of duplicated functions

| JavaClassnamesCache

used when capturing Java jar dependencies

| JavaGlobalTypeEnvironment

internal Tenv.t object corresponding to the whole project

| LintDotty

directory of linters' dotty debug output for CTL evaluation

| LintIssues

directory of linters' issues

| Logs

log file

| NullsafeFileIssues

file-wide issues of the nullsafe analysis

| PerfEvents

file containing events for performance profiling

| ProcnamesLocks

directory of per-Procname.t file locks, used by the analysis scheduler in certain modes

| RacerDIssues

directory of issues reported by the RacerD analysis

| ReportConfigImpactJson

reports of the config impact analysis

| ReportCostsJson

reports of the costs analysis

| ReportHtml

directory of the HTML report

| ReportJson

the main product of the analysis: report.json

| ReportText

a human-readable textual version of report.json

| ReportXML

a PMD-style XML version of report.json

| RetainCycles

directory of retain cycles dotty files

| RunState

internal data about the last infer run

| StarvationIssues

directory of issues reported by the starvation analysis

| Temporary

directory containing temp files

| TestDeterminatorReport

the report produced by the test determinator capture mode

| TestDeterminatorTempResults

a directory

val get_path : results_dir:string -> id -> string

the absolute path for the given entry

val get_issues_directories : unit -> id list

all the entries that correspond to directories containing temporary issue logs for certain analyses

val to_delete_before_incremental_capture_and_analysis : results_dir:string -> string list

utility for ResultsDir.scrub_for_incremental, you probably want to use that instead

val to_delete_before_caching_capture : results_dir:string -> string list

utility for ResultsDir.scrub_for_caching, you probably want to use that instead

val buck_infer_deps_file_name : string

sad that we have to have this here but some code path is looking for all files with that name in buck-out/

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase__Checker/index.html b/website/static/odoc/next/infer/IBase__Checker/index.html index c453fa41f..6c7c71bd0 100644 --- a/website/static/odoc/next/infer/IBase__Checker/index.html +++ b/website/static/odoc/next/infer/IBase__Checker/index.html @@ -1,2 +1,2 @@ -IBase__Checker (infer.IBase__Checker)

Module IBase__Checker

type t =
| AnnotationReachability
| Biabduction
| BufferOverrunAnalysis
| BufferOverrunChecker
| ConfigChecksBetweenMarkers
| Cost
| Eradicate
| FragmentRetainsView
| ImmutableCast
| Impurity
| InefficientKeysetIterator
| Linters
| LithoRequiredProps
| Liveness
| LoopHoisting
| NullsafeDeprecated
| PrintfArgs
| Pulse
| PurityAnalysis
| PurityChecker
| Quandary
| RacerD
| ResourceLeakLabExercise
| DOTNETResourceLeaks
| SIOF
| SelfInBlock
| Starvation
| ToplOnBiabduction
| ToplOnPulse
| Uninit
val equal : t -> t -> bool
val all : t list
type support =
| NoSupport

checker does not run at all for this language

| ExperimentalSupport

checker runs but is not expected to give reasonable results

| Support

checker is expected to give reasonable results

per-language support for each checker

type cli_flags = {
deprecated : string list;

More command-line flags, similar to ~deprecated arguments in CommandLineOption.

show_in_help : bool;
}
type kind =
| UserFacing of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

}

can report issues to users

| UserFacingDeprecated of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

deprecation_message : string;
}

can report issues to users but should probably be deleted from infer

| Internal

Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

| Exercise

reserved for the "resource leak" lab exercise

type config = {
id : string;

Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

kind : kind;
support : IBase.Language.t -> support;
short_documentation : string;

used in man pages and as a short intro on the website

cli_flags : cli_flags option;

If None then the checker cannot be enabled/disabled from the command line.

enabled_by_default : bool;
activates : t list;

list of checkers that get enabled when this checker is enabled

}
val config : t -> config
val get_id : t -> string

get_id c is (config c).id

val from_id : string -> t option
\ No newline at end of file +IBase__Checker (infer.IBase__Checker)

Module IBase__Checker

type t =
| AnnotationReachability
| Biabduction
| BufferOverrunAnalysis
| BufferOverrunChecker
| ConfigChecksBetweenMarkers
| ConfigImpactAnalysis
| Cost
| Eradicate
| FragmentRetainsView
| ImmutableCast
| Impurity
| InefficientKeysetIterator
| Linters
| LithoRequiredProps
| Liveness
| LoopHoisting
| NullsafeDeprecated
| PrintfArgs
| Pulse
| PurityAnalysis
| PurityChecker
| Quandary
| RacerD
| ResourceLeakLabExercise
| DOTNETResourceLeaks
| SIOF
| SelfInBlock
| Starvation
| ToplOnBiabduction
| ToplOnPulse
| Uninit
val equal : t -> t -> bool
val all : t list
type support =
| NoSupport

checker does not run at all for this language

| ExperimentalSupport

checker runs but is not expected to give reasonable results

| Support

checker is expected to give reasonable results

per-language support for each checker

type cli_flags = {
deprecated : string list;

More command-line flags, similar to ~deprecated arguments in CommandLineOption.

show_in_help : bool;
}
type kind =
| UserFacing of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

}

can report issues to users

| UserFacingDeprecated of {
title : string;

the title of the documentation web page

markdown_body : string;

main text of the documentation

deprecation_message : string;
}

can report issues to users but should probably be deleted from infer

| Internal

Analysis that only serves other analyses. Do not use to mean experimental! Please still document experimental checkers as they will become non-experimental.

| Exercise

reserved for the "resource leak" lab exercise

type config = {
id : string;

Unique identifier. Used to generate web URLs for the documentation as well as the flag to enable this option on the command line.

kind : kind;
support : IBase.Language.t -> support;
short_documentation : string;

used in man pages and as a short intro on the website

cli_flags : cli_flags option;

If None then the checker cannot be enabled/disabled from the command line.

enabled_by_default : bool;
activates : t list;

list of checkers that get enabled when this checker is enabled

}
val config : t -> config
val get_id : t -> string

get_id c is (config c).id

val from_id : string -> t option
\ 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 c464062ab..bf23c6cf3 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_sql : string
val biabduction_models_jar : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val buck_java_flavor_suppress_config : 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_immutable_modifications : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val kotlin_source_extension : string
val sourcepath : string option
val sources : string list
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 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_java_heap_size_gb : int option
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 cfg_json : 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_ast_file : [ `Biniou of string | `Yojson of 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 cost_scuba_logging : bool
val costs_previous : string option
val cost_suppress_func_ptr : bool
val cost_tests_only_autoreleasepool : bool
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 global_tenv : 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_source_parser_experimental : bool
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 liveness_ignored_constant : string list
val max_nesting : int option
val memtrace_analysis : bool
val memtrace_sampling_rate : float
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_annotation_graph : bool
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_in_default_mode : 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_cfg : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val procedures_summary_json : 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 pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_intraprocedural_only : bool
val pulse_isl : 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_return_nonnull : Str.regexp option
val pulse_model_skip_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_report_latent_issues : bool
val pulse_recency_limit : int
val pulse_widen_threshold : int
val pulse_nullsafe_report_npe : bool
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 : [ `All | `Select of 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 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 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 suppress_lint_ignore_types : bool
val symops_per_iteration : int option
val tenv_json : string 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_max_conjuncts : int
val topl_max_disjuncts : int
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 workspace : string option
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 xcode_isysroot_suffix : 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 scuba_execution_id : IStdlib.IStd.Int64.t option

a random number to (hopefully) uniquely identify this run

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list
\ 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_sql : string
val biabduction_models_jar : string
val bin_dir : string
val bound_error_allowed_in_procedure_call : bool
val buck_java_flavor_suppress_config : 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_immutable_modifications : bool
val report_nullable_inconsistency : bool
val save_compact_summaries : bool
val smt_output : bool
val source_file_extentions : string list
val kotlin_source_extension : string
val sourcepath : string option
val sources : string list
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 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_java_heap_size_gb : int option
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 cfg_json : 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_ast_file : [ `Biniou of string | `Yojson of 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 config_impact_data_file : string option
val continue_analysis : bool
val continue_capture : bool
val costs_current : string option
val cost_issues_tests : string option
val cost_scuba_logging : bool
val costs_previous : string option
val cost_suppress_func_ptr : bool
val cost_tests_only_autoreleasepool : bool
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 global_tenv : 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_source_parser_experimental : bool
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 liveness_ignored_constant : string list
val max_nesting : int option
val memtrace_analysis : bool
val memtrace_sampling_rate : float
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_annotation_graph : bool
val nullsafe_disable_field_not_initialized_in_nonstrict_classes : bool
val nullsafe_optimistic_third_party_in_default_mode : 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_cfg : bool
val procedures_definedness : bool
val procedures_filter : string option
val procedures_name : bool
val procedures_source_file : bool
val procedures_summary : bool
val procedures_summary_json : 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 pulse_cut_to_one_path_procedures_pattern : Str.regexp option
val pulse_intraprocedural_only : bool
val pulse_isl : 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_return_nonnull : Str.regexp option
val pulse_model_skip_pattern : Str.regexp option
val pulse_model_transfer_ownership_namespace : (string * string) list
val pulse_model_transfer_ownership : string list
val pulse_report_latent_issues : bool
val pulse_recency_limit : int
val pulse_widen_threshold : int
val pulse_nullsafe_report_npe : bool
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 : [ `All | `Select of 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_non_capture_clang_commands : bool
val skip_translation_headers : string list
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 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 suppress_lint_ignore_types : bool
val symops_per_iteration : int option
val tenv_json : string 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_max_conjuncts : int
val topl_max_disjuncts : int
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 workspace : string option
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 xcode_isysroot_suffix : 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 scuba_execution_id : IStdlib.IStd.Int64.t option

a random number to (hopefully) uniquely identify this run

Global variables with initial values specified by command-line options

val clang_compilation_dbs : [ `Escaped of string | `Raw of string ] list
\ 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 9a55dec12..eda0b1049 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 arbitrary_code_execution_under_lock : 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_annotation_graph : 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 expensive_cost_call : kind:IBase.CostKind.t -> 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 dotnet_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 modifies_immutable : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val optional_empty_access : 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_biabd_error : t
val topl_pulse_error : t
val uninitialized_value : t
val uninitialized_value_pulse : 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
val is_autoreleasepool_size_issue : t -> bool
\ 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 arbitrary_code_execution_under_lock : 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 config_impact_analysis : 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_annotation_graph : 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 expensive_cost_call : kind:IBase.CostKind.t -> t
val failure_exe : t
val field_not_null_checked : t
val guardedby_violation : t
val guardedby_violation_nullsafe : 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 dotnet_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 modifies_immutable : t
val multiple_weakself : t
val mutable_local_variable_in_component_file : t
val null_dereference : t
val nullptr_dereference : t
val optional_empty_access : 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 thread_safety_violation_nullsafe : t
val topl_biabd_error : t
val topl_pulse_error : t
val uninitialized_value : t
val uninitialized_value_pulse : 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
val is_autoreleasepool_size_issue : t -> bool
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IBase__ResultsDirEntryName/index.html b/website/static/odoc/next/infer/IBase__ResultsDirEntryName/index.html index 891adc14c..213663e89 100644 --- a/website/static/odoc/next/infer/IBase__ResultsDirEntryName/index.html +++ b/website/static/odoc/next/infer/IBase__ResultsDirEntryName/index.html @@ -1,2 +1,2 @@ -IBase__ResultsDirEntryName (infer.IBase__ResultsDirEntryName)

Module IBase__ResultsDirEntryName

type id =
| AllocationTraces

directory for storing allocation traces

| CaptureDB

the capture database

| CaptureDependencies

list of infer-out/ directories that contain capture artefacts

| ChangedFunctions

results of the clang test determinator

| Debug

directory containing debug data

| Differential

contains the results of infer reportdiff

| DuplicateFunctions

list of duplicated functions

| JavaClassnamesCache

used when capturing Java jar dependencies

| JavaGlobalTypeEnvironment

internal Tenv.t object corresponding to the whole project

| LintDotty

directory of linters' dotty debug output for CTL evaluation

| LintIssues

directory of linters' issues

| Logs

log file

| NullsafeFileIssues

file-wide issues of the nullsafe analysis

| PerfEvents

file containing events for performance profiling

| ProcnamesLocks

directory of per-Procname.t file locks, used by the analysis scheduler in certain modes

| RacerDIssues

directory of issues reported by the RacerD analysis

| ReportCostsJson

reports of the costs analysis

| ReportHtml

directory of the HTML report

| ReportJson

the main product of the analysis: report.json

| ReportText

a human-readable textual version of report.json

| ReportXML

a PMD-style XML version of report.json

| RetainCycles

directory of retain cycles dotty files

| RunState

internal data about the last infer run

| StarvationIssues

directory of issues reported by the starvation analysis

| Temporary

directory containing temp files

| TestDeterminatorReport

the report produced by the test determinator capture mode

| TestDeterminatorTempResults

a directory

val get_path : results_dir:string -> id -> string

the absolute path for the given entry

val get_issues_directories : unit -> id list

all the entries that correspond to directories containing temporary issue logs for certain analyses

val to_delete_before_incremental_capture_and_analysis : results_dir:string -> string list

utility for ResultsDir.scrub_for_incremental, you probably want to use that instead

val to_delete_before_caching_capture : results_dir:string -> string list

utility for ResultsDir.scrub_for_caching, you probably want to use that instead

val buck_infer_deps_file_name : string

sad that we have to have this here but some code path is looking for all files with that name in buck-out/

\ No newline at end of file +IBase__ResultsDirEntryName (infer.IBase__ResultsDirEntryName)

Module IBase__ResultsDirEntryName

type id =
| AllocationTraces

directory for storing allocation traces

| CaptureDB

the capture database

| CaptureDependencies

list of infer-out/ directories that contain capture artefacts

| ChangedFunctions

results of the clang test determinator

| Debug

directory containing debug data

| Differential

contains the results of infer reportdiff

| DuplicateFunctions

list of duplicated functions

| JavaClassnamesCache

used when capturing Java jar dependencies

| JavaGlobalTypeEnvironment

internal Tenv.t object corresponding to the whole project

| LintDotty

directory of linters' dotty debug output for CTL evaluation

| LintIssues

directory of linters' issues

| Logs

log file

| NullsafeFileIssues

file-wide issues of the nullsafe analysis

| PerfEvents

file containing events for performance profiling

| ProcnamesLocks

directory of per-Procname.t file locks, used by the analysis scheduler in certain modes

| RacerDIssues

directory of issues reported by the RacerD analysis

| ReportConfigImpactJson

reports of the config impact analysis

| ReportCostsJson

reports of the costs analysis

| ReportHtml

directory of the HTML report

| ReportJson

the main product of the analysis: report.json

| ReportText

a human-readable textual version of report.json

| ReportXML

a PMD-style XML version of report.json

| RetainCycles

directory of retain cycles dotty files

| RunState

internal data about the last infer run

| StarvationIssues

directory of issues reported by the starvation analysis

| Temporary

directory containing temp files

| TestDeterminatorReport

the report produced by the test determinator capture mode

| TestDeterminatorTempResults

a directory

val get_path : results_dir:string -> id -> string

the absolute path for the given entry

val get_issues_directories : unit -> id list

all the entries that correspond to directories containing temporary issue logs for certain analyses

val to_delete_before_incremental_capture_and_analysis : results_dir:string -> string list

utility for ResultsDir.scrub_for_incremental, you probably want to use that instead

val to_delete_before_caching_capture : results_dir:string -> string list

utility for ResultsDir.scrub_for_caching, you probably want to use that instead

val buck_infer_deps_file_name : string

sad that we have to have this here but some code path is looking for all files with that name in buck-out/

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR/Pvar/index.html b/website/static/odoc/next/infer/IR/Pvar/index.html index c04f2316e..27e3dfe89 100644 --- a/website/static/odoc/next/infer/IR/Pvar/index.html +++ b/website/static/odoc/next/infer/IR/Pvar/index.html @@ -1,2 +1,2 @@ -Pvar (infer.IR.Pvar)

Module IR.Pvar

module F = Stdlib.Format
type translation_unit = IBase.SourceFile.t option
val compare_translation_unit : translation_unit -> translation_unit -> int
type t

Type for program variables. There are 4 kinds of variables:

  1. local variables, used for local variables and formal parameters
  2. callee program variables, used to handle recursion (x | callee is distinguished from x)
  3. global variables
  4. seed variables, used to store the initial value of formal parameters
val compare : t -> t -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val compare_modulo_this : t -> t -> int

Comparison considering all pvars named 'this'/'self' to be equal

val equal : t -> t -> bool

Equality for pvar's

val get_declaring_function : t -> Procname.t option

if not a global, return function declaring var

val d : t -> unit

Dump a program variable.

val get_name : t -> Mangled.t

Get the name component of a program variable.

val get_ret_pvar : Procname.t -> t

get_ret_pvar proc_name retuns the return pvar associated with the procedure name

val get_ret_param_pvar : Procname.t -> t

get_ret_param_pvar proc_name retuns the return_param pvar associated with the procedure name

val get_simplified_name : t -> string

Get a simplified version of the name component of a program variable.

val is_abduced : t -> bool

Check if the pvar is an abduced return var or param passed by ref

val is_callee : t -> bool

Check if the pvar is a callee var

val is_global : t -> bool

Check if the pvar is a global var or a static local var

val is_static_local : t -> bool

Check if the pvar is a static variable declared inside a function

val is_constant_array : t -> bool

Check if the pvar has a constant array type

val is_local : t -> bool

Check if the pvar is a (non-static) local var

val is_seed : t -> bool

Check if the pvar is a seed var

val is_return : t -> bool

Check if the pvar is a return var

val is_this : t -> bool

Check if a pvar is the special "this" var

val is_self : t -> bool

Check if a pvar is the special "self" var

val is_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend

val is_clang_tmp : t -> bool

return true if pvar is a temporary variable generated by clang

val is_ssa_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend and is only assigned once on a non-looping control-flow path

val is_cpp_temporary : t -> bool

return true if this pvar represents a C++ temporary object (see http://en.cppreference.com/w/cpp/language/lifetime)

val is_objc_static_local_of_proc_name : string -> t -> bool

Check if a pvar is a local static in objc

val is_block_pvar : t -> bool

Check if a pvar is a local pointing to a block in objc

val mk : Mangled.t -> Procname.t -> t

mk name proc_name creates a program var with the given function name

val mk_abduced_ref_param : Procname.t -> int -> IBase.Location.t -> t

create an abduced variable for a parameter passed by reference

val mk_abduced_ret : Procname.t -> IBase.Location.t -> t

create an abduced return variable for a call to proc_name at loc

val mk_callee : Mangled.t -> Procname.t -> t

mk_callee name proc_name creates a program var for a callee function with the given function name

val mk_global : ?⁠is_constexpr:bool -> ?⁠is_ice:bool -> ?⁠is_pod:bool -> ?⁠is_static_local:bool -> ?⁠is_static_global:bool -> ?⁠is_constant_array:bool -> ?⁠translation_unit:IBase.SourceFile.t -> Mangled.t -> t

create a global variable with the given name

val mk_tmp : string -> Procname.t -> t

create a fresh temporary variable local to procedure pname. for use in the frontends only!

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a program variable.

val pp_value : F.formatter -> t -> unit

Pretty print a pvar which denotes a value, not an address

val pp_value_non_verbose : F.formatter -> t -> unit

Non-verbose version of pp_value

val pp_translation_unit : F.formatter -> translation_unit -> unit
val to_callee : Procname.t -> t -> t

Turn an ordinary program variable into a callee program variable

val to_seed : t -> t

Turn a pvar into a seed pvar (which stores the initial value of a stack var)

val to_string : t -> string

Convert a pvar to string.

val get_translation_unit : t -> translation_unit

Get the translation unit corresponding to a global. Raises Invalid_arg if not a global.

val is_compile_constant : t -> bool

Is the variable's value a compile-time constant? Always (potentially incorrectly) returns false for non-globals.

val is_ice : t -> bool

Is the variable's type an integral constant expression? Always (potentially incorrectly) returns false for non-globals.

val is_pod : t -> bool

Is the variable's type a "Plain Old Data" type (C++)? Always (potentially incorrectly) returns true for non-globals.

val get_initializer_pname : t -> Procname.t option

Get the procname of the initializer function for the given global variable

val build_formal_from_pvar : t -> Mangled.t

build_formal_from_pvar var Return a name that is composed of the name of var (and the name of the procname in case of locals)

val materialized_cpp_temporary : string
val swap_proc_in_local_pvar : t -> Procname.t -> t
val rename : f:(string -> string) -> t -> t
module Set : IStdlib.PrettyPrintable.PPSet with type PPSet.elt = t

Sets of pvars.

type capture_mode =
| ByReference
| ByValue
val compare_capture_mode : capture_mode -> capture_mode -> int
val equal_capture_mode : capture_mode -> capture_mode -> bool
val string_of_capture_mode : capture_mode -> string
\ No newline at end of file +Pvar (infer.IR.Pvar)

Module IR.Pvar

module F = Stdlib.Format
type translation_unit = IBase.SourceFile.t option
val compare_translation_unit : translation_unit -> translation_unit -> int
type t

Type for program variables. There are 4 kinds of variables:

  1. local variables, used for local variables and formal parameters
  2. callee program variables, used to handle recursion (x | callee is distinguished from x)
  3. global variables
  4. seed variables, used to store the initial value of formal parameters
val compare : t -> t -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val compare_modulo_this : t -> t -> int

Comparison considering all pvars named 'this'/'self' to be equal

val equal : t -> t -> bool

Equality for pvar's

val get_declaring_function : t -> Procname.t option

if not a global, return function declaring var

val d : t -> unit

Dump a program variable.

val get_name : t -> Mangled.t

Get the name component of a program variable.

val get_ret_pvar : Procname.t -> t

get_ret_pvar proc_name retuns the return pvar associated with the procedure name

val get_ret_param_pvar : Procname.t -> t

get_ret_param_pvar proc_name retuns the return_param pvar associated with the procedure name

val get_simplified_name : t -> string

Get a simplified version of the name component of a program variable.

val is_abduced : t -> bool

Check if the pvar is an abduced return var or param passed by ref

val is_callee : t -> bool

Check if the pvar is a callee var

val is_global : t -> bool

Check if the pvar is a global var or a static local var

val is_static_local : t -> bool

Check if the pvar is a static variable declared inside a function

val is_constant_array : t -> bool

Check if the pvar has a constant array type

val is_const : t -> bool

Check if the pvar has a const type

val is_local : t -> bool

Check if the pvar is a (non-static) local var

val is_seed : t -> bool

Check if the pvar is a seed var

val is_return : t -> bool

Check if the pvar is a return var

val is_this : t -> bool

Check if a pvar is the special "this" var

val is_self : t -> bool

Check if a pvar is the special "self" var

val is_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend

val is_clang_tmp : t -> bool

return true if pvar is a temporary variable generated by clang

val is_ssa_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend and is only assigned once on a non-looping control-flow path

val is_cpp_temporary : t -> bool

return true if this pvar represents a C++ temporary object (see http://en.cppreference.com/w/cpp/language/lifetime)

val is_objc_static_local_of_proc_name : string -> t -> bool

Check if a pvar is a local static in objc

val is_block_pvar : t -> bool

Check if a pvar is a local pointing to a block in objc

val mk : Mangled.t -> Procname.t -> t

mk name proc_name creates a program var with the given function name

val mk_abduced_ref_param : Procname.t -> int -> IBase.Location.t -> t

create an abduced variable for a parameter passed by reference

val mk_abduced_ret : Procname.t -> IBase.Location.t -> t

create an abduced return variable for a call to proc_name at loc

val mk_callee : Mangled.t -> Procname.t -> t

mk_callee name proc_name creates a program var for a callee function with the given function name

val mk_global : ?⁠is_constexpr:bool -> ?⁠is_ice:bool -> ?⁠is_pod:bool -> ?⁠is_static_local:bool -> ?⁠is_static_global:bool -> ?⁠is_constant_array:bool -> ?⁠is_const:bool -> ?⁠translation_unit:IBase.SourceFile.t -> Mangled.t -> t

create a global variable with the given name

val mk_tmp : string -> Procname.t -> t

create a fresh temporary variable local to procedure pname. for use in the frontends only!

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a program variable.

val pp_value : F.formatter -> t -> unit

Pretty print a pvar which denotes a value, not an address

val pp_value_non_verbose : F.formatter -> t -> unit

Non-verbose version of pp_value

val pp_translation_unit : F.formatter -> translation_unit -> unit
val to_callee : Procname.t -> t -> t

Turn an ordinary program variable into a callee program variable

val to_seed : t -> t

Turn a pvar into a seed pvar (which stores the initial value of a stack var)

val to_string : t -> string

Convert a pvar to string.

val get_translation_unit : t -> translation_unit

Get the translation unit corresponding to a global. Raises Invalid_arg if not a global.

val is_compile_constant : t -> bool

Is the variable's value a compile-time constant? Always (potentially incorrectly) returns false for non-globals.

val is_ice : t -> bool

Is the variable's type an integral constant expression? Always (potentially incorrectly) returns false for non-globals.

val is_pod : t -> bool

Is the variable's type a "Plain Old Data" type (C++)? Always (potentially incorrectly) returns true for non-globals.

val get_initializer_pname : t -> Procname.t option

Get the procname of the initializer function for the given global variable

val build_formal_from_pvar : t -> Mangled.t

build_formal_from_pvar var Return a name that is composed of the name of var (and the name of the procname in case of locals)

val materialized_cpp_temporary : string
val swap_proc_in_local_pvar : t -> Procname.t -> t
val rename : f:(string -> string) -> t -> t
module Set : IStdlib.PrettyPrintable.PPSet with type PPSet.elt = t

Sets of pvars.

type capture_mode =
| ByReference
| ByValue
val compare_capture_mode : capture_mode -> capture_mode -> int
val equal_capture_mode : capture_mode -> capture_mode -> bool
val string_of_capture_mode : capture_mode -> string
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR/Typ/index.html b/website/static/odoc/next/infer/IR/Typ/index.html index faa50db66..9ec4895df 100644 --- a/website/static/odoc/next/infer/IR/Typ/index.html +++ b/website/static/odoc/next/infer/IR/Typ/index.html @@ -1,2 +1,2 @@ -Typ (infer.IR.Typ)

Module IR.Typ

module F = Stdlib.Format
module IntegerWidths : sig ... end
type ikind =
| IChar

char

| ISChar

signed char

| IUChar

unsigned char

| IBool

bool

| IInt

int

| IUInt

unsigned int

| IShort

short

| IUShort

unsigned short

| ILong

long

| IULong

unsigned long

| ILongLong

long long (or _int64 on Microsoft Visual C)

| IULongLong

unsigned long long (or unsigned _int64 on Microsoft Visual C)

| I128

__int128_t

| IU128

__uint128_t

Kinds of integers

val compare_ikind : ikind -> ikind -> int
val equal_ikind : ikind -> ikind -> bool
val width_of_ikind : IntegerWidths.t -> ikind -> int
val range_of_ikind : IntegerWidths.t -> ikind -> Z.t * Z.t
val ikind_is_char : ikind -> bool

Check whether the integer kind is a char

val ikind_is_unsigned : ikind -> bool

Check whether the integer kind is unsigned

type fkind =
| FFloat

float

| FDouble

double

| FLongDouble

long double

Kinds of floating-point numbers

val compare_fkind : fkind -> fkind -> int
type ptr_kind =
| Pk_pointer

C/C++, Java, Objc standard/__strong pointer

| Pk_reference

C++ reference

| Pk_objc_weak

Obj-C __weak pointer

| Pk_objc_unsafe_unretained

Obj-C __unsafe_unretained pointer

| Pk_objc_autoreleasing

Obj-C __autoreleasing pointer

kind of pointer

val compare_ptr_kind : ptr_kind -> ptr_kind -> int
val equal_ptr_kind : ptr_kind -> ptr_kind -> bool
type type_quals
val compare_type_quals : type_quals -> type_quals -> int
val mk_type_quals : ?⁠default:type_quals -> ?⁠is_const:bool -> ?⁠is_restrict:bool -> ?⁠is_volatile:bool -> unit -> type_quals
val is_const : type_quals -> bool
val is_restrict : type_quals -> bool
val is_volatile : type_quals -> bool
type t = {
desc : desc;
quals : type_quals;
}

types for sil (structured) expressions

and desc =
| Tint of ikind

integer type

| Tfloat of fkind

float type

| Tvoid

void type

| Tfun

function type

| Tptr of t * ptr_kind

pointer type

| Tstruct of name

structured value type name

| TVar of string

type variable (ie. C++ template variables)

| Tarray of {
elt : t;
length : IntLit.t option;
stride : IntLit.t option;
}

array type with statically fixed length and stride

and name =
| CStruct of QualifiedCppName.t
| CUnion of QualifiedCppName.t

qualified name does NOT contain template arguments of the class. It will contain template args of its parent classes, for example: MyClass<int>::InnerClass<int> will store "MyClass<int>", "InnerClass"

| CppClass of {
name : QualifiedCppName.t;
template_spec_info : template_spec_info;
is_union : bool;
}
| CSharpClass of CSharpClassName.t
| JavaClass of JavaClassName.t
| ObjcClass of QualifiedCppName.t * name list

ObjC class that conforms to a list of protocols, e.g. id<NSFastEnumeration, NSCopying>

| ObjcProtocol of QualifiedCppName.t
and template_arg =
| TType of t
| TInt of IStdlib.IStd.Int64.t
| TNull
| TNullPtr
| TOpaque
and template_spec_info =
| NoTemplate
| Template of {
mangled : string option;

WARNING: because of type substitutions performed by sub_type and sub_tname, mangling is not guaranteed to be unique to a single type. All the information in the template arguments is also needed for uniqueness.

args : template_arg list;
}
val compare : t -> t -> int
val compare_desc : desc -> desc -> int
val compare_name : name -> name -> int
val compare_template_arg : template_arg -> template_arg -> int
val compare_template_spec_info : template_spec_info -> template_spec_info -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_desc : desc -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_name : name -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_arg : template_arg -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_spec_info : template_spec_info -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_template_spec_info : IStdlib.Pp.env -> F.formatter -> template_spec_info -> unit
val mk : ?⁠default:t -> ?⁠quals:type_quals -> desc -> t

Create Typ.t from given desc. if default is passed then use its value to set other fields such as quals

val mk_array : ?⁠default:t -> ?⁠quals:type_quals -> ?⁠length:IntLit.t -> ?⁠stride:IntLit.t -> t -> t

Create an array type from a given element type. If length or stride value is given, use them as static length and size.

val mk_struct : name -> t
val mk_ptr : ?⁠ptr_kind:ptr_kind -> t -> t

make a pointer to t, default kind is Pk_pointer

val get_ikind_opt : t -> ikind option

Get ikind if the type is integer.

val size_t : ikind

ikind of size_t

val is_weak_pointer : t -> bool
val is_strong_pointer : t -> bool
module Name : sig ... end
val equal : t -> t -> bool

Equality for types.

val equal_desc : desc -> desc -> bool
val equal_name : name -> name -> bool
val equal_quals : type_quals -> type_quals -> bool
val equal_ignore_quals : t -> t -> bool

Equality for types, but ignoring quals in it.

val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type with all the details.

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type.

val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unit

Pretty print a type desc.

val pp_java : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the Java frontend

val pp_cs : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the CSharp frontend

val pp_protocols : IStdlib.Pp.env -> F.formatter -> name list -> unit
val to_string : t -> string
val desc_to_string : desc -> string
val d_full : t -> unit

Dump a type with all the details.

val d_list : t list -> unit

Dump a list of types.

val name : t -> Name.t option

The name of a type

val strip_ptr : t -> t

turn a *T into a T. fails if t is not a pointer type

val is_ptr_to_ignore_quals : t -> ptr:t -> bool

check if ptr is a pointer type to t, ignoring quals

val array_elem : t option -> t -> t

If an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception

val is_objc_class : t -> bool
val is_cpp_class : t -> bool
val is_pointer_to_cpp_class : t -> bool
val is_pointer_to_objc_non_tagged_class : t -> bool
val is_pointer_to_void : t -> bool
val is_void : t -> bool
val is_pointer_to_int : t -> bool
val is_pointer_to_function : t -> bool
val is_pointer : t -> bool
val is_reference : t -> bool
val is_struct : t -> bool
val is_int : t -> bool
val is_unsigned_int : t -> bool
val is_char : t -> bool
val is_csharp_type : t -> bool

is t a type produced by the Java frontend?

val is_java_type : t -> bool

is t a type produced by the Java frontend?

val has_block_prefix : string -> bool
val unsome : string -> t option -> t
module Normalizer : IStdlib.HashNormalizer.S with type t = t
\ No newline at end of file +Typ (infer.IR.Typ)

Module IR.Typ

module F = Stdlib.Format
module IntegerWidths : sig ... end
type ikind =
| IChar

char

| ISChar

signed char

| IUChar

unsigned char

| IBool

bool

| IInt

int

| IUInt

unsigned int

| IShort

short

| IUShort

unsigned short

| ILong

long

| IULong

unsigned long

| ILongLong

long long (or _int64 on Microsoft Visual C)

| IULongLong

unsigned long long (or unsigned _int64 on Microsoft Visual C)

| I128

__int128_t

| IU128

__uint128_t

Kinds of integers

val compare_ikind : ikind -> ikind -> int
val equal_ikind : ikind -> ikind -> bool
val width_of_ikind : IntegerWidths.t -> ikind -> int
val range_of_ikind : IntegerWidths.t -> ikind -> Z.t * Z.t
val ikind_is_char : ikind -> bool

Check whether the integer kind is a char

val ikind_is_unsigned : ikind -> bool

Check whether the integer kind is unsigned

type fkind =
| FFloat

float

| FDouble

double

| FLongDouble

long double

Kinds of floating-point numbers

val compare_fkind : fkind -> fkind -> int
type ptr_kind =
| Pk_pointer

C/C++, Java, Objc standard/__strong pointer

| Pk_reference

C++ reference

| Pk_objc_weak

Obj-C __weak pointer

| Pk_objc_unsafe_unretained

Obj-C __unsafe_unretained pointer

| Pk_objc_autoreleasing

Obj-C __autoreleasing pointer

kind of pointer

val compare_ptr_kind : ptr_kind -> ptr_kind -> int
val equal_ptr_kind : ptr_kind -> ptr_kind -> bool
type type_quals
val compare_type_quals : type_quals -> type_quals -> int
val mk_type_quals : ?⁠default:type_quals -> ?⁠is_const:bool -> ?⁠is_restrict:bool -> ?⁠is_volatile:bool -> unit -> type_quals
val is_const : type_quals -> bool
val is_restrict : type_quals -> bool
val is_volatile : type_quals -> bool
type t = {
desc : desc;
quals : type_quals;
}

types for sil (structured) expressions

and desc =
| Tint of ikind

integer type

| Tfloat of fkind

float type

| Tvoid

void type

| Tfun

function type

| Tptr of t * ptr_kind

pointer type

| Tstruct of name

structured value type name

| TVar of string

type variable (ie. C++ template variables)

| Tarray of {
elt : t;
length : IntLit.t option;
stride : IntLit.t option;
}

array type with statically fixed length and stride

and name =
| CStruct of QualifiedCppName.t
| CUnion of QualifiedCppName.t

qualified name does NOT contain template arguments of the class. It will contain template args of its parent classes, for example: MyClass<int>::InnerClass<int> will store "MyClass<int>", "InnerClass"

| CppClass of {
name : QualifiedCppName.t;
template_spec_info : template_spec_info;
is_union : bool;
}
| CSharpClass of CSharpClassName.t
| JavaClass of JavaClassName.t
| ObjcClass of QualifiedCppName.t * name list

ObjC class that conforms to a list of protocols, e.g. id<NSFastEnumeration, NSCopying>

| ObjcProtocol of QualifiedCppName.t
and template_arg =
| TType of t
| TInt of IStdlib.IStd.Int64.t
| TNull
| TNullPtr
| TOpaque
and template_spec_info =
| NoTemplate
| Template of {
mangled : string option;

WARNING: because of type substitutions performed by sub_type and sub_tname, mangling is not guaranteed to be unique to a single type. All the information in the template arguments is also needed for uniqueness.

args : template_arg list;
}
val compare : t -> t -> int
val compare_desc : desc -> desc -> int
val compare_name : name -> name -> int
val compare_template_arg : template_arg -> template_arg -> int
val compare_template_spec_info : template_spec_info -> template_spec_info -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_desc : desc -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_name : name -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_arg : template_arg -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_spec_info : template_spec_info -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_template_spec_info : IStdlib.Pp.env -> F.formatter -> template_spec_info -> unit
val mk : ?⁠default:t -> ?⁠quals:type_quals -> desc -> t

Create Typ.t from given desc. if default is passed then use its value to set other fields such as quals

val mk_array : ?⁠default:t -> ?⁠quals:type_quals -> ?⁠length:IntLit.t -> ?⁠stride:IntLit.t -> t -> t

Create an array type from a given element type. If length or stride value is given, use them as static length and size.

val mk_struct : name -> t
val mk_ptr : ?⁠ptr_kind:ptr_kind -> t -> t

make a pointer to t, default kind is Pk_pointer

val get_ikind_opt : t -> ikind option

Get ikind if the type is integer.

val size_t : ikind

ikind of size_t

val is_weak_pointer : t -> bool
val is_strong_pointer : t -> bool
module Name : sig ... end
val equal : t -> t -> bool

Equality for types.

val equal_desc : desc -> desc -> bool
val equal_name : name -> name -> bool
val equal_quals : type_quals -> type_quals -> bool
val equal_ignore_quals : t -> t -> bool

Equality for types, but ignoring quals in it.

val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type with all the details.

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type.

val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unit

Pretty print a type desc.

val pp_java : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the Java frontend

val pp_cs : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the CSharp frontend

val pp_protocols : IStdlib.Pp.env -> F.formatter -> name list -> unit
val to_string : t -> string
val desc_to_string : desc -> string
val d_full : t -> unit

Dump a type with all the details.

val d_list : t list -> unit

Dump a list of types.

val name : t -> Name.t option

The name of a type

val strip_ptr : t -> t

turn a *T into a T. fails if t is not a pointer type

val is_ptr_to_ignore_quals : t -> ptr:t -> bool

check if ptr is a pointer type to t, ignoring quals

val array_elem : t option -> t -> t

If an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception

val is_objc_class : t -> bool
val is_cpp_class : t -> bool
val is_pointer_to_cpp_class : t -> bool
val is_pointer_to_objc_non_tagged_class : t -> bool
val is_pointer_to_void : t -> bool
val is_void : t -> bool
val is_pointer_to_int : t -> bool
val is_pointer_to_function : t -> bool
val is_pointer : t -> bool
val is_reference : t -> bool
val is_struct : t -> bool
val is_int : t -> bool
val is_unsigned_int : t -> bool
val is_char : t -> bool
val is_csharp_type : t -> bool

is t a type produced by the Java frontend?

val is_java_primitive_type : t -> bool

is t a primitive type produced by the Java frontend?

val is_java_type : t -> bool

is t a type produced by the Java frontend?

val has_block_prefix : string -> bool
val unsome : string -> t option -> t
module Normalizer : IStdlib.HashNormalizer.S with type t = t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR__Pvar/index.html b/website/static/odoc/next/infer/IR__Pvar/index.html index c23b092f4..acfbae539 100644 --- a/website/static/odoc/next/infer/IR__Pvar/index.html +++ b/website/static/odoc/next/infer/IR__Pvar/index.html @@ -1,2 +1,2 @@ -IR__Pvar (infer.IR__Pvar)

Module IR__Pvar

Program variables.

module F = Stdlib.Format
type translation_unit = IBase.SourceFile.t option
val compare_translation_unit : translation_unit -> translation_unit -> int
type t

Type for program variables. There are 4 kinds of variables:

  1. local variables, used for local variables and formal parameters
  2. callee program variables, used to handle recursion (x | callee is distinguished from x)
  3. global variables
  4. seed variables, used to store the initial value of formal parameters
val compare : t -> t -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val compare_modulo_this : t -> t -> int

Comparison considering all pvars named 'this'/'self' to be equal

val equal : t -> t -> bool

Equality for pvar's

val get_declaring_function : t -> IR.Procname.t option

if not a global, return function declaring var

val d : t -> unit

Dump a program variable.

val get_name : t -> IR.Mangled.t

Get the name component of a program variable.

val get_ret_pvar : IR.Procname.t -> t

get_ret_pvar proc_name retuns the return pvar associated with the procedure name

val get_ret_param_pvar : IR.Procname.t -> t

get_ret_param_pvar proc_name retuns the return_param pvar associated with the procedure name

val get_simplified_name : t -> string

Get a simplified version of the name component of a program variable.

val is_abduced : t -> bool

Check if the pvar is an abduced return var or param passed by ref

val is_callee : t -> bool

Check if the pvar is a callee var

val is_global : t -> bool

Check if the pvar is a global var or a static local var

val is_static_local : t -> bool

Check if the pvar is a static variable declared inside a function

val is_constant_array : t -> bool

Check if the pvar has a constant array type

val is_local : t -> bool

Check if the pvar is a (non-static) local var

val is_seed : t -> bool

Check if the pvar is a seed var

val is_return : t -> bool

Check if the pvar is a return var

val is_this : t -> bool

Check if a pvar is the special "this" var

val is_self : t -> bool

Check if a pvar is the special "self" var

val is_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend

val is_clang_tmp : t -> bool

return true if pvar is a temporary variable generated by clang

val is_ssa_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend and is only assigned once on a non-looping control-flow path

val is_cpp_temporary : t -> bool

return true if this pvar represents a C++ temporary object (see http://en.cppreference.com/w/cpp/language/lifetime)

val is_objc_static_local_of_proc_name : string -> t -> bool

Check if a pvar is a local static in objc

val is_block_pvar : t -> bool

Check if a pvar is a local pointing to a block in objc

val mk : IR.Mangled.t -> IR.Procname.t -> t

mk name proc_name creates a program var with the given function name

val mk_abduced_ref_param : IR.Procname.t -> int -> IBase.Location.t -> t

create an abduced variable for a parameter passed by reference

val mk_abduced_ret : IR.Procname.t -> IBase.Location.t -> t

create an abduced return variable for a call to proc_name at loc

val mk_callee : IR.Mangled.t -> IR.Procname.t -> t

mk_callee name proc_name creates a program var for a callee function with the given function name

val mk_global : ?⁠is_constexpr:bool -> ?⁠is_ice:bool -> ?⁠is_pod:bool -> ?⁠is_static_local:bool -> ?⁠is_static_global:bool -> ?⁠is_constant_array:bool -> ?⁠translation_unit:IBase.SourceFile.t -> IR.Mangled.t -> t

create a global variable with the given name

val mk_tmp : string -> IR.Procname.t -> t

create a fresh temporary variable local to procedure pname. for use in the frontends only!

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a program variable.

val pp_value : F.formatter -> t -> unit

Pretty print a pvar which denotes a value, not an address

val pp_value_non_verbose : F.formatter -> t -> unit

Non-verbose version of pp_value

val pp_translation_unit : F.formatter -> translation_unit -> unit
val to_callee : IR.Procname.t -> t -> t

Turn an ordinary program variable into a callee program variable

val to_seed : t -> t

Turn a pvar into a seed pvar (which stores the initial value of a stack var)

val to_string : t -> string

Convert a pvar to string.

val get_translation_unit : t -> translation_unit

Get the translation unit corresponding to a global. Raises Invalid_arg if not a global.

val is_compile_constant : t -> bool

Is the variable's value a compile-time constant? Always (potentially incorrectly) returns false for non-globals.

val is_ice : t -> bool

Is the variable's type an integral constant expression? Always (potentially incorrectly) returns false for non-globals.

val is_pod : t -> bool

Is the variable's type a "Plain Old Data" type (C++)? Always (potentially incorrectly) returns true for non-globals.

val get_initializer_pname : t -> IR.Procname.t option

Get the procname of the initializer function for the given global variable

val build_formal_from_pvar : t -> IR.Mangled.t

build_formal_from_pvar var Return a name that is composed of the name of var (and the name of the procname in case of locals)

val materialized_cpp_temporary : string
val swap_proc_in_local_pvar : t -> IR.Procname.t -> t
val rename : f:(string -> string) -> t -> t
module Set : IStdlib.PrettyPrintable.PPSet with type PPSet.elt = t

Sets of pvars.

type capture_mode =
| ByReference
| ByValue
val compare_capture_mode : capture_mode -> capture_mode -> int
val equal_capture_mode : capture_mode -> capture_mode -> bool
val string_of_capture_mode : capture_mode -> string
\ No newline at end of file +IR__Pvar (infer.IR__Pvar)

Module IR__Pvar

Program variables.

module F = Stdlib.Format
type translation_unit = IBase.SourceFile.t option
val compare_translation_unit : translation_unit -> translation_unit -> int
type t

Type for program variables. There are 4 kinds of variables:

  1. local variables, used for local variables and formal parameters
  2. callee program variables, used to handle recursion (x | callee is distinguished from x)
  3. global variables
  4. seed variables, used to store the initial value of formal parameters
val compare : t -> t -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val compare_modulo_this : t -> t -> int

Comparison considering all pvars named 'this'/'self' to be equal

val equal : t -> t -> bool

Equality for pvar's

val get_declaring_function : t -> IR.Procname.t option

if not a global, return function declaring var

val d : t -> unit

Dump a program variable.

val get_name : t -> IR.Mangled.t

Get the name component of a program variable.

val get_ret_pvar : IR.Procname.t -> t

get_ret_pvar proc_name retuns the return pvar associated with the procedure name

val get_ret_param_pvar : IR.Procname.t -> t

get_ret_param_pvar proc_name retuns the return_param pvar associated with the procedure name

val get_simplified_name : t -> string

Get a simplified version of the name component of a program variable.

val is_abduced : t -> bool

Check if the pvar is an abduced return var or param passed by ref

val is_callee : t -> bool

Check if the pvar is a callee var

val is_global : t -> bool

Check if the pvar is a global var or a static local var

val is_static_local : t -> bool

Check if the pvar is a static variable declared inside a function

val is_constant_array : t -> bool

Check if the pvar has a constant array type

val is_const : t -> bool

Check if the pvar has a const type

val is_local : t -> bool

Check if the pvar is a (non-static) local var

val is_seed : t -> bool

Check if the pvar is a seed var

val is_return : t -> bool

Check if the pvar is a return var

val is_this : t -> bool

Check if a pvar is the special "this" var

val is_self : t -> bool

Check if a pvar is the special "self" var

val is_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend

val is_clang_tmp : t -> bool

return true if pvar is a temporary variable generated by clang

val is_ssa_frontend_tmp : t -> bool

return true if pvar is a temporary variable generated by the frontend and is only assigned once on a non-looping control-flow path

val is_cpp_temporary : t -> bool

return true if this pvar represents a C++ temporary object (see http://en.cppreference.com/w/cpp/language/lifetime)

val is_objc_static_local_of_proc_name : string -> t -> bool

Check if a pvar is a local static in objc

val is_block_pvar : t -> bool

Check if a pvar is a local pointing to a block in objc

val mk : IR.Mangled.t -> IR.Procname.t -> t

mk name proc_name creates a program var with the given function name

val mk_abduced_ref_param : IR.Procname.t -> int -> IBase.Location.t -> t

create an abduced variable for a parameter passed by reference

val mk_abduced_ret : IR.Procname.t -> IBase.Location.t -> t

create an abduced return variable for a call to proc_name at loc

val mk_callee : IR.Mangled.t -> IR.Procname.t -> t

mk_callee name proc_name creates a program var for a callee function with the given function name

val mk_global : ?⁠is_constexpr:bool -> ?⁠is_ice:bool -> ?⁠is_pod:bool -> ?⁠is_static_local:bool -> ?⁠is_static_global:bool -> ?⁠is_constant_array:bool -> ?⁠is_const:bool -> ?⁠translation_unit:IBase.SourceFile.t -> IR.Mangled.t -> t

create a global variable with the given name

val mk_tmp : string -> IR.Procname.t -> t

create a fresh temporary variable local to procedure pname. for use in the frontends only!

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a program variable.

val pp_value : F.formatter -> t -> unit

Pretty print a pvar which denotes a value, not an address

val pp_value_non_verbose : F.formatter -> t -> unit

Non-verbose version of pp_value

val pp_translation_unit : F.formatter -> translation_unit -> unit
val to_callee : IR.Procname.t -> t -> t

Turn an ordinary program variable into a callee program variable

val to_seed : t -> t

Turn a pvar into a seed pvar (which stores the initial value of a stack var)

val to_string : t -> string

Convert a pvar to string.

val get_translation_unit : t -> translation_unit

Get the translation unit corresponding to a global. Raises Invalid_arg if not a global.

val is_compile_constant : t -> bool

Is the variable's value a compile-time constant? Always (potentially incorrectly) returns false for non-globals.

val is_ice : t -> bool

Is the variable's type an integral constant expression? Always (potentially incorrectly) returns false for non-globals.

val is_pod : t -> bool

Is the variable's type a "Plain Old Data" type (C++)? Always (potentially incorrectly) returns true for non-globals.

val get_initializer_pname : t -> IR.Procname.t option

Get the procname of the initializer function for the given global variable

val build_formal_from_pvar : t -> IR.Mangled.t

build_formal_from_pvar var Return a name that is composed of the name of var (and the name of the procname in case of locals)

val materialized_cpp_temporary : string
val swap_proc_in_local_pvar : t -> IR.Procname.t -> t
val rename : f:(string -> string) -> t -> t
module Set : IStdlib.PrettyPrintable.PPSet with type PPSet.elt = t

Sets of pvars.

type capture_mode =
| ByReference
| ByValue
val compare_capture_mode : capture_mode -> capture_mode -> int
val equal_capture_mode : capture_mode -> capture_mode -> bool
val string_of_capture_mode : capture_mode -> string
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IR__Typ/index.html b/website/static/odoc/next/infer/IR__Typ/index.html index 4b15e5926..19bc9862d 100644 --- a/website/static/odoc/next/infer/IR__Typ/index.html +++ b/website/static/odoc/next/infer/IR__Typ/index.html @@ -1,2 +1,2 @@ -IR__Typ (infer.IR__Typ)

Module IR__Typ

The Smallfoot Intermediate Language: Types

module F = Stdlib.Format
module IntegerWidths : sig ... end
type ikind =
| IChar

char

| ISChar

signed char

| IUChar

unsigned char

| IBool

bool

| IInt

int

| IUInt

unsigned int

| IShort

short

| IUShort

unsigned short

| ILong

long

| IULong

unsigned long

| ILongLong

long long (or _int64 on Microsoft Visual C)

| IULongLong

unsigned long long (or unsigned _int64 on Microsoft Visual C)

| I128

__int128_t

| IU128

__uint128_t

Kinds of integers

val compare_ikind : ikind -> ikind -> int
val equal_ikind : ikind -> ikind -> bool
val width_of_ikind : IntegerWidths.t -> ikind -> int
val range_of_ikind : IntegerWidths.t -> ikind -> Z.t * Z.t
val ikind_is_char : ikind -> bool

Check whether the integer kind is a char

val ikind_is_unsigned : ikind -> bool

Check whether the integer kind is unsigned

type fkind =
| FFloat

float

| FDouble

double

| FLongDouble

long double

Kinds of floating-point numbers

val compare_fkind : fkind -> fkind -> int
type ptr_kind =
| Pk_pointer

C/C++, Java, Objc standard/__strong pointer

| Pk_reference

C++ reference

| Pk_objc_weak

Obj-C __weak pointer

| Pk_objc_unsafe_unretained

Obj-C __unsafe_unretained pointer

| Pk_objc_autoreleasing

Obj-C __autoreleasing pointer

kind of pointer

val compare_ptr_kind : ptr_kind -> ptr_kind -> int
val equal_ptr_kind : ptr_kind -> ptr_kind -> bool
type type_quals
val compare_type_quals : type_quals -> type_quals -> int
val mk_type_quals : ?⁠default:type_quals -> ?⁠is_const:bool -> ?⁠is_restrict:bool -> ?⁠is_volatile:bool -> unit -> type_quals
val is_const : type_quals -> bool
val is_restrict : type_quals -> bool
val is_volatile : type_quals -> bool
type t = {
desc : desc;
quals : type_quals;
}

types for sil (structured) expressions

and desc =
| Tint of ikind

integer type

| Tfloat of fkind

float type

| Tvoid

void type

| Tfun

function type

| Tptr of t * ptr_kind

pointer type

| Tstruct of name

structured value type name

| TVar of string

type variable (ie. C++ template variables)

| Tarray of {
elt : t;
length : IR.IntLit.t option;
stride : IR.IntLit.t option;
}

array type with statically fixed length and stride

and name =
| CStruct of IR.QualifiedCppName.t
| CUnion of IR.QualifiedCppName.t

qualified name does NOT contain template arguments of the class. It will contain template args of its parent classes, for example: MyClass<int>::InnerClass<int> will store "MyClass<int>", "InnerClass"

| CppClass of {
name : IR.QualifiedCppName.t;
template_spec_info : template_spec_info;
is_union : bool;
}
| CSharpClass of IR.CSharpClassName.t
| JavaClass of IR.JavaClassName.t
| ObjcClass of IR.QualifiedCppName.t * name list

ObjC class that conforms to a list of protocols, e.g. id<NSFastEnumeration, NSCopying>

| ObjcProtocol of IR.QualifiedCppName.t
and template_arg =
| TType of t
| TInt of IStdlib.IStd.Int64.t
| TNull
| TNullPtr
| TOpaque
and template_spec_info =
| NoTemplate
| Template of {
mangled : string option;

WARNING: because of type substitutions performed by sub_type and sub_tname, mangling is not guaranteed to be unique to a single type. All the information in the template arguments is also needed for uniqueness.

args : template_arg list;
}
val compare : t -> t -> int
val compare_desc : desc -> desc -> int
val compare_name : name -> name -> int
val compare_template_arg : template_arg -> template_arg -> int
val compare_template_spec_info : template_spec_info -> template_spec_info -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_desc : desc -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_name : name -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_arg : template_arg -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_spec_info : template_spec_info -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_template_spec_info : IStdlib.Pp.env -> F.formatter -> template_spec_info -> unit
val mk : ?⁠default:t -> ?⁠quals:type_quals -> desc -> t

Create Typ.t from given desc. if default is passed then use its value to set other fields such as quals

val mk_array : ?⁠default:t -> ?⁠quals:type_quals -> ?⁠length:IR.IntLit.t -> ?⁠stride:IR.IntLit.t -> t -> t

Create an array type from a given element type. If length or stride value is given, use them as static length and size.

val mk_struct : name -> t
val mk_ptr : ?⁠ptr_kind:ptr_kind -> t -> t

make a pointer to t, default kind is Pk_pointer

val get_ikind_opt : t -> ikind option

Get ikind if the type is integer.

val size_t : ikind

ikind of size_t

val is_weak_pointer : t -> bool
val is_strong_pointer : t -> bool
module Name : sig ... end
val equal : t -> t -> bool

Equality for types.

val equal_desc : desc -> desc -> bool
val equal_name : name -> name -> bool
val equal_quals : type_quals -> type_quals -> bool
val equal_ignore_quals : t -> t -> bool

Equality for types, but ignoring quals in it.

val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type with all the details.

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type.

val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unit

Pretty print a type desc.

val pp_java : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the Java frontend

val pp_cs : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the CSharp frontend

val pp_protocols : IStdlib.Pp.env -> F.formatter -> name list -> unit
val to_string : t -> string
val desc_to_string : desc -> string
val d_full : t -> unit

Dump a type with all the details.

val d_list : t list -> unit

Dump a list of types.

val name : t -> Name.t option

The name of a type

val strip_ptr : t -> t

turn a *T into a T. fails if t is not a pointer type

val is_ptr_to_ignore_quals : t -> ptr:t -> bool

check if ptr is a pointer type to t, ignoring quals

val array_elem : t option -> t -> t

If an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception

val is_objc_class : t -> bool
val is_cpp_class : t -> bool
val is_pointer_to_cpp_class : t -> bool
val is_pointer_to_objc_non_tagged_class : t -> bool
val is_pointer_to_void : t -> bool
val is_void : t -> bool
val is_pointer_to_int : t -> bool
val is_pointer_to_function : t -> bool
val is_pointer : t -> bool
val is_reference : t -> bool
val is_struct : t -> bool
val is_int : t -> bool
val is_unsigned_int : t -> bool
val is_char : t -> bool
val is_csharp_type : t -> bool

is t a type produced by the Java frontend?

val is_java_type : t -> bool

is t a type produced by the Java frontend?

val has_block_prefix : string -> bool
val unsome : string -> t option -> t
module Normalizer : IStdlib.HashNormalizer.S with type t = t
\ No newline at end of file +IR__Typ (infer.IR__Typ)

Module IR__Typ

The Smallfoot Intermediate Language: Types

module F = Stdlib.Format
module IntegerWidths : sig ... end
type ikind =
| IChar

char

| ISChar

signed char

| IUChar

unsigned char

| IBool

bool

| IInt

int

| IUInt

unsigned int

| IShort

short

| IUShort

unsigned short

| ILong

long

| IULong

unsigned long

| ILongLong

long long (or _int64 on Microsoft Visual C)

| IULongLong

unsigned long long (or unsigned _int64 on Microsoft Visual C)

| I128

__int128_t

| IU128

__uint128_t

Kinds of integers

val compare_ikind : ikind -> ikind -> int
val equal_ikind : ikind -> ikind -> bool
val width_of_ikind : IntegerWidths.t -> ikind -> int
val range_of_ikind : IntegerWidths.t -> ikind -> Z.t * Z.t
val ikind_is_char : ikind -> bool

Check whether the integer kind is a char

val ikind_is_unsigned : ikind -> bool

Check whether the integer kind is unsigned

type fkind =
| FFloat

float

| FDouble

double

| FLongDouble

long double

Kinds of floating-point numbers

val compare_fkind : fkind -> fkind -> int
type ptr_kind =
| Pk_pointer

C/C++, Java, Objc standard/__strong pointer

| Pk_reference

C++ reference

| Pk_objc_weak

Obj-C __weak pointer

| Pk_objc_unsafe_unretained

Obj-C __unsafe_unretained pointer

| Pk_objc_autoreleasing

Obj-C __autoreleasing pointer

kind of pointer

val compare_ptr_kind : ptr_kind -> ptr_kind -> int
val equal_ptr_kind : ptr_kind -> ptr_kind -> bool
type type_quals
val compare_type_quals : type_quals -> type_quals -> int
val mk_type_quals : ?⁠default:type_quals -> ?⁠is_const:bool -> ?⁠is_restrict:bool -> ?⁠is_volatile:bool -> unit -> type_quals
val is_const : type_quals -> bool
val is_restrict : type_quals -> bool
val is_volatile : type_quals -> bool
type t = {
desc : desc;
quals : type_quals;
}

types for sil (structured) expressions

and desc =
| Tint of ikind

integer type

| Tfloat of fkind

float type

| Tvoid

void type

| Tfun

function type

| Tptr of t * ptr_kind

pointer type

| Tstruct of name

structured value type name

| TVar of string

type variable (ie. C++ template variables)

| Tarray of {
elt : t;
length : IR.IntLit.t option;
stride : IR.IntLit.t option;
}

array type with statically fixed length and stride

and name =
| CStruct of IR.QualifiedCppName.t
| CUnion of IR.QualifiedCppName.t

qualified name does NOT contain template arguments of the class. It will contain template args of its parent classes, for example: MyClass<int>::InnerClass<int> will store "MyClass<int>", "InnerClass"

| CppClass of {
name : IR.QualifiedCppName.t;
template_spec_info : template_spec_info;
is_union : bool;
}
| CSharpClass of IR.CSharpClassName.t
| JavaClass of IR.JavaClassName.t
| ObjcClass of IR.QualifiedCppName.t * name list

ObjC class that conforms to a list of protocols, e.g. id<NSFastEnumeration, NSCopying>

| ObjcProtocol of IR.QualifiedCppName.t
and template_arg =
| TType of t
| TInt of IStdlib.IStd.Int64.t
| TNull
| TNullPtr
| TOpaque
and template_spec_info =
| NoTemplate
| Template of {
mangled : string option;

WARNING: because of type substitutions performed by sub_type and sub_tname, mangling is not guaranteed to be unique to a single type. All the information in the template arguments is also needed for uniqueness.

args : template_arg list;
}
val compare : t -> t -> int
val compare_desc : desc -> desc -> int
val compare_name : name -> name -> int
val compare_template_arg : template_arg -> template_arg -> int
val compare_template_spec_info : template_spec_info -> template_spec_info -> int
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_desc : desc -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_name : name -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_arg : template_arg -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_template_spec_info : template_spec_info -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp_template_spec_info : IStdlib.Pp.env -> F.formatter -> template_spec_info -> unit
val mk : ?⁠default:t -> ?⁠quals:type_quals -> desc -> t

Create Typ.t from given desc. if default is passed then use its value to set other fields such as quals

val mk_array : ?⁠default:t -> ?⁠quals:type_quals -> ?⁠length:IR.IntLit.t -> ?⁠stride:IR.IntLit.t -> t -> t

Create an array type from a given element type. If length or stride value is given, use them as static length and size.

val mk_struct : name -> t
val mk_ptr : ?⁠ptr_kind:ptr_kind -> t -> t

make a pointer to t, default kind is Pk_pointer

val get_ikind_opt : t -> ikind option

Get ikind if the type is integer.

val size_t : ikind

ikind of size_t

val is_weak_pointer : t -> bool
val is_strong_pointer : t -> bool
module Name : sig ... end
val equal : t -> t -> bool

Equality for types.

val equal_desc : desc -> desc -> bool
val equal_name : name -> name -> bool
val equal_quals : type_quals -> type_quals -> bool
val equal_ignore_quals : t -> t -> bool

Equality for types, but ignoring quals in it.

val pp_full : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type with all the details.

val pp : IStdlib.Pp.env -> F.formatter -> t -> unit

Pretty print a type.

val pp_desc : IStdlib.Pp.env -> F.formatter -> desc -> unit

Pretty print a type desc.

val pp_java : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the Java frontend

val pp_cs : verbose:bool -> F.formatter -> t -> unit

Pretty print a Java type. Raises if type isn't produced by the CSharp frontend

val pp_protocols : IStdlib.Pp.env -> F.formatter -> name list -> unit
val to_string : t -> string
val desc_to_string : desc -> string
val d_full : t -> unit

Dump a type with all the details.

val d_list : t list -> unit

Dump a list of types.

val name : t -> Name.t option

The name of a type

val strip_ptr : t -> t

turn a *T into a T. fails if t is not a pointer type

val is_ptr_to_ignore_quals : t -> ptr:t -> bool

check if ptr is a pointer type to t, ignoring quals

val array_elem : t option -> t -> t

If an array type, return the type of the element. If not, return the default type if given, otherwise raise an exception

val is_objc_class : t -> bool
val is_cpp_class : t -> bool
val is_pointer_to_cpp_class : t -> bool
val is_pointer_to_objc_non_tagged_class : t -> bool
val is_pointer_to_void : t -> bool
val is_void : t -> bool
val is_pointer_to_int : t -> bool
val is_pointer_to_function : t -> bool
val is_pointer : t -> bool
val is_reference : t -> bool
val is_struct : t -> bool
val is_int : t -> bool
val is_unsigned_int : t -> bool
val is_char : t -> bool
val is_csharp_type : t -> bool

is t a type produced by the Java frontend?

val is_java_primitive_type : t -> bool

is t a primitive type produced by the Java frontend?

val is_java_type : t -> bool

is t a type produced by the Java frontend?

val has_block_prefix : string -> bool
val unsome : string -> t option -> t
module Normalizer : IStdlib.HashNormalizer.S with type t = t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html index e35a3941f..bfa8e11b9 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IStdlib.RecencyMap.Make)

Module RecencyMap.Make

Parameters

Signature

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Key.t
type value = Value.t
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file +Make (infer.IStdlib.RecencyMap.Make)

Module RecencyMap.Make

Parameters

Signature

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Key.t
type value = Value.t
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val exists : t -> f:((key * value) -> bool) -> bool
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val map : t -> f:(value -> value) -> t
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html b/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html index e2a35dde9..7570b5372 100644 --- a/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html +++ b/website/static/odoc/next/infer/IStdlib/RecencyMap/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IStdlib.RecencyMap.S)

Module type RecencyMap.S

A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key
type value
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file +S (infer.IStdlib.RecencyMap.S)

Module type RecencyMap.S

A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key
type value
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val exists : t -> f:((key * value) -> bool) -> bool
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val map : t -> f:(value -> value) -> t
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IStdlib/RevList/index.html b/website/static/odoc/next/infer/IStdlib/RevList/index.html index be49431e9..7ae1caa12 100644 --- a/website/static/odoc/next/infer/IStdlib/RevList/index.html +++ b/website/static/odoc/next/infer/IStdlib/RevList/index.html @@ -1,2 +1,2 @@ -RevList (infer.IStdlib.RevList)

Module IStdlib.RevList

type 'a t
val empty : 'a t

Return empty list

val cons : 'a -> 'a t -> 'a t

Add an element to the end of list

val to_list : 'a t -> 'a list

Return normal-ordered list

val of_list : 'a list -> 'a t

Make reverse-ordered list from normal-ordered one

val exists : 'a t -> f:('a -> bool) -> bool

Similar to List.exists

val map : 'a t -> f:('a -> 'b) -> 'b t

Similar to List.map

val rev_map : 'a t -> f:('a -> 'b) -> 'b list

Similar to List.rev_map, so return normal-ordered list

val rev_map_append : 'a t -> 'b list -> f:('a -> 'b) -> 'b list

Similar to List.rev_map_append

val rev_partition_map : 'a t -> f:('a -> ('b'c) IStdlib.IStd.Either.t) -> 'b list * 'c list

Similar to List.partition_map, but return normal-ordered lists

\ No newline at end of file +RevList (infer.IStdlib.RevList)

Module IStdlib.RevList

type 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val empty : 'a t

Return empty list

val cons : 'a -> 'a t -> 'a t

Add an element to the end of list

val to_list : 'a t -> 'a list

Return normal-ordered list

val of_list : 'a list -> 'a t

Make reverse-ordered list from normal-ordered one

val exists : 'a t -> f:('a -> bool) -> bool

Similar to List.exists

val map : 'a t -> f:('a -> 'b) -> 'b t

Similar to List.map

val rev_map : 'a t -> f:('a -> 'b) -> 'b list

Similar to List.rev_map, so return normal-ordered list

val rev_map_append : 'a t -> 'b list -> f:('a -> 'b) -> 'b list

Similar to List.rev_map_append

val rev_partition_map : 'a t -> f:('a -> ('b'c) IStdlib.IStd.Either.t) -> 'b list * 'c list

Similar to List.partition_map, but return normal-ordered lists

\ No newline at end of file diff --git a/website/static/odoc/next/infer/IStdlib__RecencyMap/Make/index.html b/website/static/odoc/next/infer/IStdlib__RecencyMap/Make/index.html index c8586535f..16f4132c7 100644 --- a/website/static/odoc/next/infer/IStdlib__RecencyMap/Make/index.html +++ b/website/static/odoc/next/infer/IStdlib__RecencyMap/Make/index.html @@ -1,2 +1,2 @@ -Make (infer.IStdlib__RecencyMap.Make)

Module IStdlib__RecencyMap.Make

Parameters

Signature

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Key.t
type value = Value.t
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file +Make (infer.IStdlib__RecencyMap.Make)

Module IStdlib__RecencyMap.Make

Parameters

Signature

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Key.t
type value = Value.t
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val exists : t -> f:((key * value) -> bool) -> bool
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val map : t -> f:(value -> value) -> t
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IStdlib__RecencyMap/module-type-S/index.html b/website/static/odoc/next/infer/IStdlib__RecencyMap/module-type-S/index.html index b9401816a..a1798d395 100644 --- a/website/static/odoc/next/infer/IStdlib__RecencyMap/module-type-S/index.html +++ b/website/static/odoc/next/infer/IStdlib__RecencyMap/module-type-S/index.html @@ -1,2 +1,2 @@ -S (infer.IStdlib__RecencyMap.S)

Module type IStdlib__RecencyMap.S

A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key
type value
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file +S (infer.IStdlib__RecencyMap.S)

Module type IStdlib__RecencyMap.S

A functional map interface where only the N most recently-accessed elements are guaranteed to be persisted, similarly to an LRU cache. The map stores at most 2*N elements.

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key
type value
val pp : F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val exists : t -> f:((key * value) -> bool) -> bool
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val map : t -> f:(value -> value) -> t
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/IStdlib__RevList/index.html b/website/static/odoc/next/infer/IStdlib__RevList/index.html index 53a582302..d2305903b 100644 --- a/website/static/odoc/next/infer/IStdlib__RevList/index.html +++ b/website/static/odoc/next/infer/IStdlib__RevList/index.html @@ -1,2 +1,2 @@ -IStdlib__RevList (infer.IStdlib__RevList)

Module IStdlib__RevList

type 'a t
val empty : 'a t

Return empty list

val cons : 'a -> 'a t -> 'a t

Add an element to the end of list

val to_list : 'a t -> 'a list

Return normal-ordered list

val of_list : 'a list -> 'a t

Make reverse-ordered list from normal-ordered one

val exists : 'a t -> f:('a -> bool) -> bool

Similar to List.exists

val map : 'a t -> f:('a -> 'b) -> 'b t

Similar to List.map

val rev_map : 'a t -> f:('a -> 'b) -> 'b list

Similar to List.rev_map, so return normal-ordered list

val rev_map_append : 'a t -> 'b list -> f:('a -> 'b) -> 'b list

Similar to List.rev_map_append

val rev_partition_map : 'a t -> f:('a -> ('b'c) IStdlib.IStd.Either.t) -> 'b list * 'c list

Similar to List.partition_map, but return normal-ordered lists

\ No newline at end of file +IStdlib__RevList (infer.IStdlib__RevList)

Module IStdlib__RevList

type 'a t
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
val empty : 'a t

Return empty list

val cons : 'a -> 'a t -> 'a t

Add an element to the end of list

val to_list : 'a t -> 'a list

Return normal-ordered list

val of_list : 'a list -> 'a t

Make reverse-ordered list from normal-ordered one

val exists : 'a t -> f:('a -> bool) -> bool

Similar to List.exists

val map : 'a t -> f:('a -> 'b) -> 'b t

Similar to List.map

val rev_map : 'a t -> f:('a -> 'b) -> 'b list

Similar to List.rev_map, so return normal-ordered list

val rev_map_append : 'a t -> 'b list -> f:('a -> 'b) -> 'b list

Similar to List.rev_map_append

val rev_partition_map : 'a t -> f:('a -> ('b'c) IStdlib.IStd.Either.t) -> 'b list * 'c list

Similar to List.partition_map, but return normal-ordered lists

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Integration/JsonReports/index.html b/website/static/odoc/next/infer/Integration/JsonReports/index.html index 76c43b2f6..ae546025e 100644 --- a/website/static/odoc/next/infer/Integration/JsonReports/index.html +++ b/website/static/odoc/next/infer/Integration/JsonReports/index.html @@ -1,2 +1,2 @@ -JsonReports (infer.Integration.JsonReports)

Module Integration.JsonReports

val potential_exception_message : string
val loc_trace_to_jsonbug_record : Absint.Errlog.loc_trace_elem list -> IBase.IssueType.severity -> ATDGenerated.Jsonbug_t.json_trace_item list
val censored_reason : IBase.IssueType.t -> IBase.SourceFile.t -> string option
val write_reports : issues_json:string -> costs_json:string -> unit
\ No newline at end of file +JsonReports (infer.Integration.JsonReports)

Module Integration.JsonReports

val potential_exception_message : string
val loc_trace_to_jsonbug_record : Absint.Errlog.loc_trace_elem list -> IBase.IssueType.severity -> ATDGenerated.Jsonbug_t.json_trace_item list
val censored_reason : IBase.IssueType.t -> IBase.SourceFile.t -> string option
val write_reports : issues_json:string -> costs_json:string -> config_impact_json:string -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Integration__JsonReports/index.html b/website/static/odoc/next/infer/Integration__JsonReports/index.html index 1ee97c884..c629b06f1 100644 --- a/website/static/odoc/next/infer/Integration__JsonReports/index.html +++ b/website/static/odoc/next/infer/Integration__JsonReports/index.html @@ -1,2 +1,2 @@ -Integration__JsonReports (infer.Integration__JsonReports)

Module Integration__JsonReports

val potential_exception_message : string
val loc_trace_to_jsonbug_record : Absint.Errlog.loc_trace_elem list -> IBase.IssueType.severity -> ATDGenerated.Jsonbug_t.json_trace_item list
val censored_reason : IBase.IssueType.t -> IBase.SourceFile.t -> string option
val write_reports : issues_json:string -> costs_json:string -> unit
\ No newline at end of file +Integration__JsonReports (infer.Integration__JsonReports)

Module Integration__JsonReports

val potential_exception_message : string
val loc_trace_to_jsonbug_record : Absint.Errlog.loc_trace_elem list -> IBase.IssueType.severity -> ATDGenerated.Jsonbug_t.json_trace_item list
val censored_reason : IBase.IssueType.t -> IBase.SourceFile.t -> string option
val write_reports : issues_json:string -> costs_json:string -> config_impact_json:string -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html index 32b403960..7f5db4efa 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PostDomain/index.html @@ -1,2 +1,2 @@ -PostDomain (infer.Pulselib.PulseAbductiveDomain.PostDomain)

Module PulseAbductiveDomain.PostDomain

The post abstract state at each program point, or current state.

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val pp : F.formatter -> t -> unit
\ No newline at end of file +PostDomain (infer.Pulselib.PulseAbductiveDomain.PostDomain)

Module PulseAbductiveDomain.PostDomain

The post abstract state at each program point, or current state.

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html index d48ed0c6c..c552cac60 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/PreDomain/index.html @@ -1,2 +1,2 @@ -PreDomain (infer.Pulselib.PulseAbductiveDomain.PreDomain)

Module PulseAbductiveDomain.PreDomain

The inferred pre-condition at each program point, biabduction style.

NOTE: PreDomain and Domain theoretically differ in that PreDomain should be the inverted lattice of Domain, but since we never actually join states or check implication the two collapse into one. *

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val pp : F.formatter -> t -> unit
\ No newline at end of file +PreDomain (infer.Pulselib.PulseAbductiveDomain.PreDomain)

Module PulseAbductiveDomain.PreDomain

The inferred pre-condition at each program point, biabduction style.

NOTE: PreDomain and Domain theoretically differ in that PreDomain should be the inverted lattice of Domain, but since we never actually join states or check implication the two collapse into one. *

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html index 0e31a07c5..06bf01f09 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/index.html @@ -1,2 +1,2 @@ -PulseAbductiveDomain (infer.Pulselib.PulseAbductiveDomain)

Module Pulselib.PulseAbductiveDomain

module F = Stdlib.Format
module BaseAddressAttributes = PulseBaseAddressAttributes
module BaseDomain = PulseBaseDomain
module BaseMemory = PulseBaseMemory
module BaseStack = PulseBaseStack
module type BaseDomainSig = sig ... end

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

module PostDomain : BaseDomainSig

The post abstract state at each program point, or current state.

module PreDomain : BaseDomainSig

The inferred pre-condition at each program point, biabduction style.

type isl_status =
| ISLOk

ok triple: the program executes without error

| ISLError

Error specification: an invalid address recorded in the precondition will cause an error

Execution status, similar to PulseExecutionDomain but for ISL (Incorrectness Separation Logic) mode, where PulseExecutionDomain.base_t.ContinueProgram can also contain "error specs" that describe what happens when some addresses are invalid explicitly instead of relying on MustBeValid attributes.

val equal_isl_status : isl_status -> isl_status -> bool
type t = private {
post : PostDomain.t;

state at the current program point

pre : PreDomain.t;

inferred procedure pre-condition leading to the current program point

path_condition : PulseBasicInterface.PathCondition.t;

arithmetic facts true along the path (holding for both pre and post since abstract values are immutable)

topl : PulseTopl.state;

state at of the Topl monitor at the current program point, when Topl is enabled

skipped_calls : PulseBasicInterface.SkippedCalls.t;

metadata: procedure calls for which no summary was found

isl_status : isl_status;
}

pre/post on a single program path

val equal : t -> t -> bool
val leq : lhs:t -> rhs:t -> bool
val pp : Stdlib.Format.formatter -> t -> unit
val set_isl_status : isl_status -> t -> t
val mk_initial : IR.Tenv.t -> IR.Procdesc.t -> t
val get_pre : t -> BaseDomain.t
val get_post : t -> BaseDomain.t
module Stack : sig ... end

stack operations like BaseStack but that also take care of propagating facts to the precondition

module Memory : sig ... end

memory operations like BaseMemory but that also take care of propagating facts to the precondition

module AddressAttributes : sig ... end

attribute operations like BaseAddressAttributes but that also take care of propagating facts to the precondition

val is_local : IR.Var.t -> t -> bool
val find_post_cell_opt : PulseBasicInterface.AbstractValue.t -> t -> BaseDomain.cell option
val discard_unreachable : t -> t * Pulselib.PulseBasicInterface.AbstractValue.Set.t * PulseBasicInterface.AbstractValue.t list

garbage collect unreachable addresses in the state to make it smaller and return the new state, the live addresses, and the discarded addresses that used to have attributes attached

val add_skipped_call : IR.Procname.t -> PulseBasicInterface.Trace.t -> t -> t
val add_skipped_calls : PulseBasicInterface.SkippedCalls.t -> t -> t
val set_path_condition : PulseBasicInterface.PathCondition.t -> t -> t
type summary = private t

private type to make sure summary_of_post is always called when creating summaries

val compare_summary : summary -> summary -> int
val equal_summary : summary -> summary -> bool
val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
val summary_of_post : IR.Procdesc.t -> t -> summary PulseBasicInterface.SatUnsat.t

trim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state

val set_post_edges : PulseBasicInterface.AbstractValue.t -> BaseMemory.Edges.t -> t -> t

directly set the edges for the given address, bypassing abduction altogether

val set_post_cell : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> BaseDomain.cell -> IBase.Location.t -> t -> t

directly set the edges and attributes for the given address, bypassing abduction altogether

val incorporate_new_eqs : t -> (PulseBasicInterface.PathCondition.t * PulseBasicInterface.PathCondition.new_eqs) -> PulseBasicInterface.PathCondition.t

Check that the new equalities discovered are compatible with the current pre and post heaps, e.g. x = 0 is not compatible with x being allocated, and x = y is not compatible with x and y being allocated separately. In those cases, the resulting path condition is PathCondition.false_.

val initialize : PulseBasicInterface.AbstractValue.t -> t -> t

Remove "Uninitialized" attribute of the given address

val set_uninitialized : IR.Tenv.t -> [ `LocalDecl of IR.Pvar.t * PulseBasicInterface.AbstractValue.t option | `Malloc of PulseBasicInterface.AbstractValue.t ] -> IR.Typ.t -> IBase.Location.t -> t -> t

Add "Uninitialized" attributes when a variable is declared or a memory is allocated by malloc.

module Topl : sig ... end
\ No newline at end of file +PulseAbductiveDomain (infer.Pulselib.PulseAbductiveDomain)

Module Pulselib.PulseAbductiveDomain

module F = Stdlib.Format
module BaseAddressAttributes = PulseBaseAddressAttributes
module BaseDomain = PulseBaseDomain
module BaseMemory = PulseBaseMemory
module BaseStack = PulseBaseStack
module type BaseDomainSig = sig ... end

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

module PostDomain : BaseDomainSig

The post abstract state at each program point, or current state.

module PreDomain : BaseDomainSig

The inferred pre-condition at each program point, biabduction style.

type isl_status =
| ISLOk

ok triple: the program executes without error

| ISLError

Error specification: an invalid address recorded in the precondition will cause an error

Execution status, similar to PulseExecutionDomain but for ISL (Incorrectness Separation Logic) mode, where PulseExecutionDomain.base_t.ContinueProgram can also contain "error specs" that describe what happens when some addresses are invalid explicitly instead of relying on MustBeValid attributes.

val equal_isl_status : isl_status -> isl_status -> bool
type t = private {
post : PostDomain.t;

state at the current program point

pre : PreDomain.t;

inferred procedure pre-condition leading to the current program point

path_condition : PulseBasicInterface.PathCondition.t;

arithmetic facts true along the path (holding for both pre and post since abstract values are immutable)

topl : PulseTopl.state;

state at of the Topl monitor at the current program point, when Topl is enabled

skipped_calls : PulseBasicInterface.SkippedCalls.t;

metadata: procedure calls for which no summary was found

isl_status : isl_status;
}

pre/post on a single program path

val equal : t -> t -> bool
val leq : lhs:t -> rhs:t -> bool
val pp : Stdlib.Format.formatter -> t -> unit
val set_isl_status : isl_status -> t -> t
val mk_initial : IR.Tenv.t -> IR.Procdesc.t -> t
val get_pre : t -> BaseDomain.t
val get_post : t -> BaseDomain.t
module Stack : sig ... end

stack operations like BaseStack but that also take care of propagating facts to the precondition

module Memory : sig ... end

memory operations like BaseMemory but that also take care of propagating facts to the precondition

module AddressAttributes : sig ... end

attribute operations like BaseAddressAttributes but that also take care of propagating facts to the precondition

val is_local : IR.Var.t -> t -> bool
val find_post_cell_opt : PulseBasicInterface.AbstractValue.t -> t -> BaseDomain.cell option
val discard_unreachable : t -> t * Pulselib.PulseBasicInterface.AbstractValue.Set.t * PulseBasicInterface.AbstractValue.t list

garbage collect unreachable addresses in the state to make it smaller and return the new state, the live addresses, and the discarded addresses that used to have attributes attached

val add_skipped_call : IR.Procname.t -> PulseBasicInterface.Trace.t -> t -> t
val add_skipped_calls : PulseBasicInterface.SkippedCalls.t -> t -> t
val set_path_condition : PulseBasicInterface.PathCondition.t -> t -> t
type summary = private t

private type to make sure summary_of_post is always called when creating summaries

val compare_summary : summary -> summary -> int
val equal_summary : summary -> summary -> bool
val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
val summary_of_post : IR.Procdesc.t -> t -> summary PulseBasicInterface.SatUnsat.t

trim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state

val set_post_edges : PulseBasicInterface.AbstractValue.t -> BaseMemory.Edges.t -> t -> t

directly set the edges for the given address, bypassing abduction altogether

val set_post_cell : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> BaseDomain.cell -> IBase.Location.t -> t -> t

directly set the edges and attributes for the given address, bypassing abduction altogether

val incorporate_new_eqs : PulseBasicInterface.PathCondition.new_eqs -> t -> t

Check that the new equalities discovered are compatible with the current pre and post heaps, e.g. x = 0 is not compatible with x being allocated, and x = y is not compatible with x and y being allocated separately. In those cases, the resulting path condition is PathCondition.false_.

val initialize : PulseBasicInterface.AbstractValue.t -> t -> t

Remove "Uninitialized" attribute of the given address

val set_uninitialized : IR.Tenv.t -> [ `LocalDecl of IR.Pvar.t * PulseBasicInterface.AbstractValue.t option | `Malloc of PulseBasicInterface.AbstractValue.t ] -> IR.Typ.t -> IBase.Location.t -> t -> t

Add "Uninitialized" attributes when a variable is declared or a memory is allocated by malloc.

module Topl : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html index 35ee7ea74..9c19a4600 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseAbductiveDomain/module-type-BaseDomainSig/index.html @@ -1,2 +1,2 @@ -BaseDomainSig (infer.Pulselib.PulseAbductiveDomain.BaseDomainSig)

Module type PulseAbductiveDomain.BaseDomainSig

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val pp : F.formatter -> t -> unit
\ No newline at end of file +BaseDomainSig (infer.Pulselib.PulseAbductiveDomain.BaseDomainSig)

Module type PulseAbductiveDomain.BaseDomainSig

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html b/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html index a6e600fb2..5ce46f71c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseArithmetic/index.html @@ -1,2 +1,2 @@ -PulseArithmetic (infer.Pulselib.PulseArithmetic) \ No newline at end of file +PulseArithmetic (infer.Pulselib.PulseArithmetic)

Module Pulselib.PulseArithmetic

module AbductiveDomain = PulseAbductiveDomain
val and_nonnegative : PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val and_positive : PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val and_eq_int : PulseBasicInterface.AbstractValue.t -> IR.IntLit.t -> AbductiveDomain.t -> AbductiveDomain.t
type operand = PulseBasicInterface.PathCondition.operand =
| LiteralOperand of IR.IntLit.t
| AbstractValueOperand of PulseBasicInterface.AbstractValue.t
val eval_binop : PulseBasicInterface.AbstractValue.t -> IR.Binop.t -> operand -> operand -> AbductiveDomain.t -> AbductiveDomain.t
val eval_unop : PulseBasicInterface.AbstractValue.t -> IR.Unop.t -> PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val prune_binop : negated:bool -> IR.Binop.t -> operand -> operand -> AbductiveDomain.t -> AbductiveDomain.t
val prune_eq_zero : PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t

helper function wrapping prune_binop

val prune_positive : PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t

helper function wrapping prune_binop

val is_known_zero : AbductiveDomain.t -> PulseBasicInterface.AbstractValue.t -> bool
val is_unsat_cheap : AbductiveDomain.t -> bool
val has_no_assumptions : AbductiveDomain.t -> bool
val and_equal_instanceof : PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t -> IR.Typ.t -> AbductiveDomain.t -> AbductiveDomain.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html index d43dceef5..d29a3965e 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseAddressAttributes/index.html @@ -1,2 +1,2 @@ -PulseBaseAddressAttributes (infer.Pulselib.PulseBaseAddressAttributes)

Module Pulselib.PulseBaseAddressAttributes

module F = Stdlib.Format
type t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val empty : t
val filter : (PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> bool) -> t -> t
val filter_with_discarded_addrs : (PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list
val find_opt : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Attributes.t option
val add_one : PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attribute.t -> t -> t
val add : PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> t -> t
val allocate : IR.Procname.t -> (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> IBase.Location.t -> t -> t
val add_dynamic_type : IR.Typ.Name.t -> PulseBasicInterface.AbstractValue.t -> t -> t
val fold : (PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> 'a -> 'a) -> t -> 'a -> 'a
val check_valid : PulseBasicInterface.AbstractValue.t -> t -> (unit, PulseBasicInterface.Invalidation.t * PulseBasicInterface.Trace.t) IStdlib.IStd.result
val check_initialized : PulseBasicInterface.AbstractValue.t -> t -> (unit, unit) IStdlib.IStd.result
val invalidate : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> PulseBasicInterface.Invalidation.t -> IBase.Location.t -> t -> t
val get_closure_proc_name : PulseBasicInterface.AbstractValue.t -> t -> IR.Procname.t option
val get_invalid : PulseBasicInterface.AbstractValue.t -> t -> (PulseBasicInterface.Invalidation.t * PulseBasicInterface.Trace.t) option
val get_must_be_valid : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Trace.t option
val get_must_be_valid_or_allocated_isl : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Trace.t option
val get_must_be_initialized : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Trace.t option
val std_vector_reserve : PulseBasicInterface.AbstractValue.t -> t -> t
val is_std_vector_reserved : PulseBasicInterface.AbstractValue.t -> t -> bool
val mark_as_end_of_collection : PulseBasicInterface.AbstractValue.t -> t -> t
val is_end_of_collection : PulseBasicInterface.AbstractValue.t -> t -> bool
val pp : F.formatter -> t -> unit
val remove_allocation_attr : PulseBasicInterface.AbstractValue.t -> t -> t
val remove_must_be_valid_attr : PulseBasicInterface.AbstractValue.t -> t -> t
val remove_isl_abduced_attr : PulseBasicInterface.AbstractValue.t -> t -> t
val initialize : PulseBasicInterface.AbstractValue.t -> t -> t
val canonicalize : get_var_repr:(PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t) -> t -> t

merge the attributes of all the variables that are equal according to get_var_repr and remove non-canonical variables in favor of their rerpresentative

\ No newline at end of file +PulseBaseAddressAttributes (infer.Pulselib.PulseBaseAddressAttributes)

Module Pulselib.PulseBaseAddressAttributes

module F = Stdlib.Format
type t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val empty : t
val filter : (PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> bool) -> t -> t
val filter_with_discarded_addrs : (PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> bool) -> t -> t * PulseBasicInterface.AbstractValue.t list
val find_opt : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Attributes.t option
val add_one : PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attribute.t -> t -> t
val add : PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> t -> t
val allocate : IR.Procname.t -> (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> IBase.Location.t -> t -> t
val add_dynamic_type : IR.Typ.Name.t -> PulseBasicInterface.AbstractValue.t -> t -> t
val fold : (PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.Attributes.t -> 'a -> 'a) -> t -> 'a -> 'a
val check_valid : PulseBasicInterface.AbstractValue.t -> t -> (unit, PulseBasicInterface.Invalidation.t * PulseBasicInterface.Trace.t) IStdlib.IStd.result
val check_initialized : PulseBasicInterface.AbstractValue.t -> t -> (unit, unit) IStdlib.IStd.result
val invalidate : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t) -> PulseBasicInterface.Invalidation.t -> IBase.Location.t -> t -> t
val get_closure_proc_name : PulseBasicInterface.AbstractValue.t -> t -> IR.Procname.t option
val get_invalid : PulseBasicInterface.AbstractValue.t -> t -> (PulseBasicInterface.Invalidation.t * PulseBasicInterface.Trace.t) option
val get_must_be_valid : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Trace.t option
val get_must_be_valid_or_allocated_isl : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Trace.t option
val get_must_be_initialized : PulseBasicInterface.AbstractValue.t -> t -> PulseBasicInterface.Trace.t option
val std_vector_reserve : PulseBasicInterface.AbstractValue.t -> t -> t
val is_std_vector_reserved : PulseBasicInterface.AbstractValue.t -> t -> bool
val mark_as_end_of_collection : PulseBasicInterface.AbstractValue.t -> t -> t
val is_end_of_collection : PulseBasicInterface.AbstractValue.t -> t -> bool
val pp : F.formatter -> t -> unit
val remove_allocation_attr : PulseBasicInterface.AbstractValue.t -> t -> t
val remove_must_be_valid_attr : PulseBasicInterface.AbstractValue.t -> t -> t
val remove_isl_abduced_attr : PulseBasicInterface.AbstractValue.t -> t -> t
val initialize : PulseBasicInterface.AbstractValue.t -> t -> t
val canonicalize : get_var_repr:(PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t) -> t -> t

merge the attributes of all the variables that are equal according to get_var_repr and remove non-canonical variables in favor of their rerpresentative

val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html index bf0be2300..d75bd7545 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseDomain/index.html @@ -1,2 +1,2 @@ -PulseBaseDomain (infer.Pulselib.PulseBaseDomain)

Module Pulselib.PulseBaseDomain

module F = Stdlib.Format
type t = {
heap : PulseBaseMemory.t;
stack : PulseBaseStack.t;
attrs : PulseBaseAddressAttributes.t;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
type cell = PulseBaseMemory.Edges.t * PulseBasicInterface.Attributes.t
val empty : t
val reachable_addresses : t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are "used" in the abstract state, i.e. reachable from the stack variables

val reachable_addresses_from : PulseBasicInterface.AbstractValue.t list -> t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are reachable from given abstract addresses

type mapping
val empty_mapping : mapping
type isograph_relation =
| NotIsomorphic

no mapping was found that can make LHS the same as the RHS

| IsomorphicUpTo of mapping

mapping(lhs) is isomorphic to rhs

val isograph_map : lhs:t -> rhs:t -> mapping -> isograph_relation
val is_isograph : lhs:t -> rhs:t -> mapping -> bool
val find_cell_opt : PulseBasicInterface.AbstractValue.t -> t -> cell option
val pp : F.formatter -> t -> unit
\ No newline at end of file +PulseBaseDomain (infer.Pulselib.PulseBaseDomain)

Module Pulselib.PulseBaseDomain

module F = Stdlib.Format
type t = {
heap : PulseBaseMemory.t;
stack : PulseBaseStack.t;
attrs : PulseBaseAddressAttributes.t;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
type cell = PulseBaseMemory.Edges.t * PulseBasicInterface.Attributes.t
val empty : t
val reachable_addresses : t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are "used" in the abstract state, i.e. reachable from the stack variables

val reachable_addresses_from : PulseBasicInterface.AbstractValue.t list -> t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are reachable from given abstract addresses

type mapping
val empty_mapping : mapping
type isograph_relation =
| NotIsomorphic

no mapping was found that can make LHS the same as the RHS

| IsomorphicUpTo of mapping

mapping(lhs) is isomorphic to rhs

val isograph_map : lhs:t -> rhs:t -> mapping -> isograph_relation
val is_isograph : lhs:t -> rhs:t -> mapping -> bool
val find_cell_opt : PulseBasicInterface.AbstractValue.t -> t -> cell option
val pp : F.formatter -> t -> unit
val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html index 6dce32c9d..0f62deb4e 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/Edges/index.html @@ -1,2 +1,2 @@ -Edges (infer.Pulselib.PulseBaseMemory.Edges)

Module PulseBaseMemory.Edges

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Access.t
type value = AddrTrace.t
val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file +Edges (infer.Pulselib.PulseBaseMemory.Edges)

Module PulseBaseMemory.Edges

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Access.t
type value = AddrTrace.t
val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val exists : t -> f:((key * value) -> bool) -> bool
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val map : t -> f:(value -> value) -> t
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html index fd2833dd4..e7ffe98f6 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseMemory/index.html @@ -1,2 +1,2 @@ -PulseBaseMemory (infer.Pulselib.PulseBaseMemory)

Module Pulselib.PulseBaseMemory

module Access : sig ... end
module AccessSet : IStdlib.IStd.Caml.Set.S with type AccessSet.elt = Access.t
module AddrTrace : sig ... end
module Edges : IStdlib.RecencyMap.S with type key = Access.t and type value = AddrTrace.t
include IStdlib.PrettyPrintable.PPMonoMap with type key = PulseBasicInterface.AbstractValue.t and type value = Edges.t
include IStdlib.PrettyPrintable.MonoMap
type key
type value
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
include IStdlib.PrettyPrintable.PrintableType with type t := t
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
val compare : t -> t -> int
val equal : t -> t -> bool
val register_address : PulseBasicInterface.AbstractValue.t -> t -> t
val add_edge : PulseBasicInterface.AbstractValue.t -> Access.t -> AddrTrace.t -> t -> t
val find_edge_opt : PulseBasicInterface.AbstractValue.t -> Access.t -> t -> AddrTrace.t option
val yojson_of_t : t -> Yojson.Safe.t
val is_allocated : t -> PulseBasicInterface.AbstractValue.t -> bool

whether the address has a non-empty set of edges

val canonicalize : get_var_repr:(PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t

replace each address in the heap by its canonical representative according to the current equality relation, represented by get_var_repr; also remove addresses that point to empty edges

\ No newline at end of file +PulseBaseMemory (infer.Pulselib.PulseBaseMemory)

Module Pulselib.PulseBaseMemory

module Access : sig ... end
module AccessSet : IStdlib.IStd.Caml.Set.S with type AccessSet.elt = Access.t
module AddrTrace : sig ... end
module Edges : IStdlib.RecencyMap.S with type key = Access.t and type value = AddrTrace.t
include IStdlib.PrettyPrintable.PPMonoMap with type key = PulseBasicInterface.AbstractValue.t and type value = Edges.t
include IStdlib.PrettyPrintable.MonoMap
type key
type value
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
include IStdlib.PrettyPrintable.PrintableType with type t := t
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
val compare : t -> t -> int
val equal : t -> t -> bool
val register_address : PulseBasicInterface.AbstractValue.t -> t -> t
val add_edge : PulseBasicInterface.AbstractValue.t -> Access.t -> AddrTrace.t -> t -> t
val find_edge_opt : PulseBasicInterface.AbstractValue.t -> Access.t -> t -> AddrTrace.t option
val yojson_of_t : t -> Yojson.Safe.t
val is_allocated : t -> PulseBasicInterface.AbstractValue.t -> bool

whether the address has a non-empty set of edges

val canonicalize : get_var_repr:(PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t

replace each address in the heap by its canonical representative according to the current equality relation, represented by get_var_repr; also remove addresses that point to empty edges

val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t PulseBasicInterface.SatUnsat.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html b/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html index 0ad410211..4b81a441c 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseBaseStack/index.html @@ -1,2 +1,2 @@ -PulseBaseStack (infer.Pulselib.PulseBaseStack)

Module Pulselib.PulseBaseStack

module F = Stdlib.Format
include IStdlib.PrettyPrintable.MonoMap with type key = IR.Var.t and type value = PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t
type key = IR.Var.t
type value = PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : F.formatter -> t -> unit
val yojson_of_t : t -> Yojson.Safe.t
val canonicalize : get_var_repr:(PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t) -> t -> t

replace each address in the stack by its canonical representative according to the current equality relation, represented by get_var_repr

\ No newline at end of file +PulseBaseStack (infer.Pulselib.PulseBaseStack)

Module Pulselib.PulseBaseStack

module F = Stdlib.Format
include IStdlib.PrettyPrintable.MonoMap with type key = IR.Var.t and type value = PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t
type key = IR.Var.t
type value = PulseBasicInterface.AbstractValue.t * PulseBasicInterface.ValueHistory.t
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : F.formatter -> t -> unit
val yojson_of_t : t -> Yojson.Safe.t
val canonicalize : get_var_repr:(PulseBasicInterface.AbstractValue.t -> PulseBasicInterface.AbstractValue.t) -> t -> t

replace each address in the stack by its canonical representative according to the current equality relation, represented by get_var_repr

val subst_var : (PulseBasicInterface.AbstractValue.t * PulseBasicInterface.AbstractValue.t) -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseReport/index.html b/website/static/odoc/next/infer/Pulselib/PulseReport/index.html index 971d094b4..afae6f73b 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseReport/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseReport/index.html @@ -1,2 +1,2 @@ -PulseReport (infer.Pulselib.PulseReport) \ No newline at end of file +PulseReport (infer.Pulselib.PulseReport) \ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html b/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html index a68bf1003..33e62b185 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseTrace/index.html @@ -1,2 +1,2 @@ -PulseTrace (infer.Pulselib.PulseTrace)

Module Pulselib.PulseTrace

module F = Stdlib.Format
module CallEvent = PulseCallEvent
module ValueHistory = PulseValueHistory
type t =
| Immediate of {
location : IBase.Location.t;
history : ValueHistory.t;
}
| ViaCall of {
f : CallEvent.t;
location : IBase.Location.t;

location of the call event

history : ValueHistory.t;

the call involves a value with this prior history

in_call : t;

last step of the trace is in a call to f made at location

}
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : pp_immediate:(F.formatter -> unit) -> F.formatter -> t -> unit
val get_outer_location : t -> IBase.Location.t

skip histories and go straight to the where the action is: either the action itself or the call that leads to the action

val get_start_location : t -> IBase.Location.t

initial step in the history if not empty, or else same as get_outer_location

val add_to_errlog : ?⁠include_value_history:bool -> nesting:int -> pp_immediate:(F.formatter -> unit) -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
\ No newline at end of file +PulseTrace (infer.Pulselib.PulseTrace)

Module Pulselib.PulseTrace

module F = Stdlib.Format
module CallEvent = PulseCallEvent
module ValueHistory = PulseValueHistory
type t =
| Immediate of {
location : IBase.Location.t;
history : ValueHistory.t;
}
| ViaCall of {
f : CallEvent.t;
location : IBase.Location.t;

location of the call event

history : ValueHistory.t;

the call involves a value with this prior history

in_call : t;

last step of the trace is in a call to f made at location

}
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : pp_immediate:(F.formatter -> unit) -> F.formatter -> t -> unit
val get_outer_location : t -> IBase.Location.t

skip histories and go straight to the where the action is: either the action itself or the call that leads to the action

val get_start_location : t -> IBase.Location.t

initial step in the history if not empty, or else same as get_outer_location

val add_to_errlog : ?⁠include_value_history:bool -> nesting:int -> pp_immediate:(F.formatter -> unit) -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
val find_map : f:(ValueHistory.event -> 'a option) -> t -> 'a option

Like List.find_map, but applies to value histories.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html b/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html index e111e4767..c7b409d32 100644 --- a/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html +++ b/website/static/odoc/next/infer/Pulselib/PulseValueHistory/index.html @@ -1,2 +1,2 @@ -PulseValueHistory (infer.Pulselib.PulseValueHistory)

Module Pulselib.PulseValueHistory

module F = Stdlib.Format
module CallEvent = PulseCallEvent
type event =
| Allocation of {
f : CallEvent.t;
location : IBase.Location.t;
}
| Assignment of IBase.Location.t
| Call of {
f : CallEvent.t;
location : IBase.Location.t;
in_call : t;
}
| Capture of {
captured_as : IR.Pvar.t;
mode : IR.Pvar.capture_mode;
location : IBase.Location.t;
}
| Conditional of {
is_then_branch : bool;
if_kind : IR.Sil.if_kind;
location : IBase.Location.t;
}
| CppTemporaryCreated of IBase.Location.t
| FormalDeclared of IR.Pvar.t * IBase.Location.t
| StructFieldAddressCreated of IR.Fieldname.t * IBase.Location.t
| VariableAccessed of IR.Pvar.t * IBase.Location.t
| VariableDeclared of IR.Pvar.t * IBase.Location.t
and t = event list
val compare_event : event -> event -> int
val compare : t -> t -> int
val equal_event : event -> event -> bool
val equal : t -> t -> bool
val yojson_of_event : event -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : F.formatter -> t -> unit
val location_of_event : event -> IBase.Location.t
val add_to_errlog : nesting:int -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
\ No newline at end of file +PulseValueHistory (infer.Pulselib.PulseValueHistory)

Module Pulselib.PulseValueHistory

module F = Stdlib.Format
module CallEvent = PulseCallEvent
type event =
| Allocation of {
f : CallEvent.t;
location : IBase.Location.t;
}
| Assignment of IBase.Location.t
| Call of {
f : CallEvent.t;
location : IBase.Location.t;
in_call : t;
}
| Capture of {
captured_as : IR.Pvar.t;
mode : IR.Pvar.capture_mode;
location : IBase.Location.t;
}
| Conditional of {
is_then_branch : bool;
if_kind : IR.Sil.if_kind;
location : IBase.Location.t;
}
| CppTemporaryCreated of IBase.Location.t
| FormalDeclared of IR.Pvar.t * IBase.Location.t
| StructFieldAddressCreated of IR.Fieldname.t IStdlib.RevList.t * IBase.Location.t
| VariableAccessed of IR.Pvar.t * IBase.Location.t
| VariableDeclared of IR.Pvar.t * IBase.Location.t
and t = event list
val compare_event : event -> event -> int
val compare : t -> t -> int
val equal_event : event -> event -> bool
val equal : t -> t -> bool
val yojson_of_event : event -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : F.formatter -> t -> unit
val pp_fields : F.formatter -> IR.Fieldname.t IStdlib.RevList.t -> unit
val location_of_event : event -> IBase.Location.t
val add_to_errlog : nesting:int -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib/index.html b/website/static/odoc/next/infer/Pulselib/index.html index 793f84895..dc25e2bea 100644 --- a/website/static/odoc/next/infer/Pulselib/index.html +++ b/website/static/odoc/next/infer/Pulselib/index.html @@ -1,2 +1,2 @@ -Pulselib (infer.Pulselib)

Module Pulselib

module Pulse : sig ... end
module PulseAbductiveDomain : sig ... end
module PulseAbstractValue : sig ... end
module PulseArithmetic : sig ... end
module PulseAttribute : sig ... end
module PulseBaseAddressAttributes : sig ... end
module PulseBaseDomain : sig ... end
module PulseBaseMemory : sig ... end
module PulseBaseStack : sig ... end
module PulseBasicInterface : sig ... end
module PulseCItv : sig ... end
module PulseCallEvent : sig ... end
module PulseDiagnostic : sig ... end
module PulseDomainInterface : sig ... end
module PulseExecutionDomain : sig ... end
module PulseFormula : sig ... end
module PulseInterproc : sig ... end
module PulseInvalidation : sig ... end
module PulseLatentIssue : sig ... end
module PulseModels : sig ... end
module PulseOperations : sig ... end
module PulsePathCondition : sig ... end
module PulseReport : sig ... end
module PulseSatUnsat : sig ... end
module PulseSkippedCalls : sig ... end
module PulseSummary : sig ... end
module PulseTopl : sig ... end
module PulseToplShallow : sig ... end
module PulseTrace : sig ... end
module PulseUninitBlocklist : sig ... end
module PulseValueHistory : sig ... end
\ No newline at end of file +Pulselib (infer.Pulselib)

Module Pulselib

module Pulse : sig ... end
module PulseAbductiveDomain : sig ... end
module PulseAbstractValue : sig ... end
module PulseArithmetic : sig ... end
module PulseAttribute : sig ... end
module PulseBaseAddressAttributes : sig ... end
module PulseBaseDomain : sig ... end
module PulseBaseMemory : sig ... end
module PulseBaseStack : sig ... end
module PulseBasicInterface : sig ... end
module PulseCItv : sig ... end
module PulseCallEvent : sig ... end
module PulseDiagnostic : sig ... end
module PulseDomainInterface : sig ... end
module PulseExecutionDomain : sig ... end
module PulseFormula : sig ... end
module PulseInterproc : sig ... end
module PulseInvalidation : sig ... end
module PulseLatentIssue : sig ... end
module PulseModels : sig ... end
module PulseObjectiveCSummary : sig ... end
module PulseOperations : sig ... end
module PulsePathCondition : sig ... end
module PulseReport : sig ... end
module PulseSatUnsat : sig ... end
module PulseSkippedCalls : sig ... end
module PulseSummary : sig ... end
module PulseTopl : sig ... end
module PulseToplShallow : sig ... end
module PulseTrace : sig ... end
module PulseUninitBlocklist : sig ... end
module PulseValueHistory : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PostDomain/index.html b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PostDomain/index.html index 22a30a8a9..4382b16cd 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PostDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PostDomain/index.html @@ -1,2 +1,2 @@ -PostDomain (infer.Pulselib__PulseAbductiveDomain.PostDomain)

Module Pulselib__PulseAbductiveDomain.PostDomain

The post abstract state at each program point, or current state.

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val pp : F.formatter -> t -> unit
\ No newline at end of file +PostDomain (infer.Pulselib__PulseAbductiveDomain.PostDomain)

Module Pulselib__PulseAbductiveDomain.PostDomain

The post abstract state at each program point, or current state.

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PreDomain/index.html b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PreDomain/index.html index efc60ae37..5bd5f68c7 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PreDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/PreDomain/index.html @@ -1,2 +1,2 @@ -PreDomain (infer.Pulselib__PulseAbductiveDomain.PreDomain)

Module Pulselib__PulseAbductiveDomain.PreDomain

The inferred pre-condition at each program point, biabduction style.

NOTE: PreDomain and Domain theoretically differ in that PreDomain should be the inverted lattice of Domain, but since we never actually join states or check implication the two collapse into one. *

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val pp : F.formatter -> t -> unit
\ No newline at end of file +PreDomain (infer.Pulselib__PulseAbductiveDomain.PreDomain)

Module Pulselib__PulseAbductiveDomain.PreDomain

The inferred pre-condition at each program point, biabduction style.

NOTE: PreDomain and Domain theoretically differ in that PreDomain should be the inverted lattice of Domain, but since we never actually join states or check implication the two collapse into one. *

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/index.html b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/index.html index f607c0ce7..acadba488 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseAbductiveDomain (infer.Pulselib__PulseAbductiveDomain)

Module Pulselib__PulseAbductiveDomain

module F = Stdlib.Format
module BaseAddressAttributes = Pulselib.PulseBaseAddressAttributes
module BaseDomain = Pulselib.PulseBaseDomain
module BaseMemory = Pulselib.PulseBaseMemory
module BaseStack = Pulselib.PulseBaseStack
module type BaseDomainSig = sig ... end

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

module PostDomain : BaseDomainSig

The post abstract state at each program point, or current state.

module PreDomain : BaseDomainSig

The inferred pre-condition at each program point, biabduction style.

type isl_status =
| ISLOk

ok triple: the program executes without error

| ISLError

Error specification: an invalid address recorded in the precondition will cause an error

Execution status, similar to PulseExecutionDomain but for ISL (Incorrectness Separation Logic) mode, where PulseExecutionDomain.ContinueProgram can also contain "error specs" that describe what happens when some addresses are invalid explicitly instead of relying on MustBeValid attributes.

val equal_isl_status : isl_status -> isl_status -> bool
type t = private {
post : PostDomain.t;

state at the current program point

pre : PreDomain.t;

inferred procedure pre-condition leading to the current program point

path_condition : Pulselib.PulseBasicInterface.PathCondition.t;

arithmetic facts true along the path (holding for both pre and post since abstract values are immutable)

topl : Pulselib.PulseTopl.state;

state at of the Topl monitor at the current program point, when Topl is enabled

skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t;

metadata: procedure calls for which no summary was found

isl_status : isl_status;
}

pre/post on a single program path

val equal : t -> t -> bool
val leq : lhs:t -> rhs:t -> bool
val pp : Stdlib.Format.formatter -> t -> unit
val set_isl_status : isl_status -> t -> t
val mk_initial : IR.Tenv.t -> IR.Procdesc.t -> t
val get_pre : t -> BaseDomain.t
val get_post : t -> BaseDomain.t
module Stack : sig ... end

stack operations like BaseStack but that also take care of propagating facts to the precondition

module Memory : sig ... end

memory operations like BaseMemory but that also take care of propagating facts to the precondition

module AddressAttributes : sig ... end

attribute operations like BaseAddressAttributes but that also take care of propagating facts to the precondition

val is_local : IR.Var.t -> t -> bool
val find_post_cell_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> BaseDomain.cell option
val discard_unreachable : t -> t * Pulselib.PulseBasicInterface.AbstractValue.Set.t * Pulselib.PulseBasicInterface.AbstractValue.t list

garbage collect unreachable addresses in the state to make it smaller and return the new state, the live addresses, and the discarded addresses that used to have attributes attached

val add_skipped_call : IR.Procname.t -> Pulselib.PulseBasicInterface.Trace.t -> t -> t
val add_skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t -> t -> t
val set_path_condition : Pulselib.PulseBasicInterface.PathCondition.t -> t -> t
type summary = private t

private type to make sure summary_of_post is always called when creating summaries

val compare_summary : summary -> summary -> int
val equal_summary : summary -> summary -> bool
val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
val summary_of_post : IR.Procdesc.t -> t -> summary Pulselib.PulseBasicInterface.SatUnsat.t

trim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state

val set_post_edges : Pulselib.PulseBasicInterface.AbstractValue.t -> BaseMemory.Edges.t -> t -> t

directly set the edges for the given address, bypassing abduction altogether

val set_post_cell : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) -> BaseDomain.cell -> IBase.Location.t -> t -> t

directly set the edges and attributes for the given address, bypassing abduction altogether

val incorporate_new_eqs : t -> (Pulselib.PulseBasicInterface.PathCondition.t * Pulselib.PulseBasicInterface.PathCondition.new_eqs) -> Pulselib.PulseBasicInterface.PathCondition.t

Check that the new equalities discovered are compatible with the current pre and post heaps, e.g. x = 0 is not compatible with x being allocated, and x = y is not compatible with x and y being allocated separately. In those cases, the resulting path condition is PathCondition.false_.

val initialize : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t

Remove "Uninitialized" attribute of the given address

val set_uninitialized : IR.Tenv.t -> [ `LocalDecl of IR.Pvar.t * Pulselib.PulseBasicInterface.AbstractValue.t option | `Malloc of Pulselib.PulseBasicInterface.AbstractValue.t ] -> IR.Typ.t -> IBase.Location.t -> t -> t

Add "Uninitialized" attributes when a variable is declared or a memory is allocated by malloc.

module Topl : sig ... end
\ No newline at end of file +Pulselib__PulseAbductiveDomain (infer.Pulselib__PulseAbductiveDomain)

Module Pulselib__PulseAbductiveDomain

module F = Stdlib.Format
module BaseAddressAttributes = Pulselib.PulseBaseAddressAttributes
module BaseDomain = Pulselib.PulseBaseDomain
module BaseMemory = Pulselib.PulseBaseMemory
module BaseStack = Pulselib.PulseBaseStack
module type BaseDomainSig = sig ... end

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

module PostDomain : BaseDomainSig

The post abstract state at each program point, or current state.

module PreDomain : BaseDomainSig

The inferred pre-condition at each program point, biabduction style.

type isl_status =
| ISLOk

ok triple: the program executes without error

| ISLError

Error specification: an invalid address recorded in the precondition will cause an error

Execution status, similar to PulseExecutionDomain but for ISL (Incorrectness Separation Logic) mode, where PulseExecutionDomain.ContinueProgram can also contain "error specs" that describe what happens when some addresses are invalid explicitly instead of relying on MustBeValid attributes.

val equal_isl_status : isl_status -> isl_status -> bool
type t = private {
post : PostDomain.t;

state at the current program point

pre : PreDomain.t;

inferred procedure pre-condition leading to the current program point

path_condition : Pulselib.PulseBasicInterface.PathCondition.t;

arithmetic facts true along the path (holding for both pre and post since abstract values are immutable)

topl : Pulselib.PulseTopl.state;

state at of the Topl monitor at the current program point, when Topl is enabled

skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t;

metadata: procedure calls for which no summary was found

isl_status : isl_status;
}

pre/post on a single program path

val equal : t -> t -> bool
val leq : lhs:t -> rhs:t -> bool
val pp : Stdlib.Format.formatter -> t -> unit
val set_isl_status : isl_status -> t -> t
val mk_initial : IR.Tenv.t -> IR.Procdesc.t -> t
val get_pre : t -> BaseDomain.t
val get_post : t -> BaseDomain.t
module Stack : sig ... end

stack operations like BaseStack but that also take care of propagating facts to the precondition

module Memory : sig ... end

memory operations like BaseMemory but that also take care of propagating facts to the precondition

module AddressAttributes : sig ... end

attribute operations like BaseAddressAttributes but that also take care of propagating facts to the precondition

val is_local : IR.Var.t -> t -> bool
val find_post_cell_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> BaseDomain.cell option
val discard_unreachable : t -> t * Pulselib.PulseBasicInterface.AbstractValue.Set.t * Pulselib.PulseBasicInterface.AbstractValue.t list

garbage collect unreachable addresses in the state to make it smaller and return the new state, the live addresses, and the discarded addresses that used to have attributes attached

val add_skipped_call : IR.Procname.t -> Pulselib.PulseBasicInterface.Trace.t -> t -> t
val add_skipped_calls : Pulselib.PulseBasicInterface.SkippedCalls.t -> t -> t
val set_path_condition : Pulselib.PulseBasicInterface.PathCondition.t -> t -> t
type summary = private t

private type to make sure summary_of_post is always called when creating summaries

val compare_summary : summary -> summary -> int
val equal_summary : summary -> summary -> bool
val yojson_of_summary : summary -> Ppx_yojson_conv_lib.Yojson.Safe.t
val summary_of_post : IR.Procdesc.t -> t -> summary Pulselib.PulseBasicInterface.SatUnsat.t

trim the state down to just the procedure's interface (formals and globals), and simplify and normalize the state

val set_post_edges : Pulselib.PulseBasicInterface.AbstractValue.t -> BaseMemory.Edges.t -> t -> t

directly set the edges for the given address, bypassing abduction altogether

val set_post_cell : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) -> BaseDomain.cell -> IBase.Location.t -> t -> t

directly set the edges and attributes for the given address, bypassing abduction altogether

val incorporate_new_eqs : Pulselib.PulseBasicInterface.PathCondition.new_eqs -> t -> t

Check that the new equalities discovered are compatible with the current pre and post heaps, e.g. x = 0 is not compatible with x being allocated, and x = y is not compatible with x and y being allocated separately. In those cases, the resulting path condition is PathCondition.false_.

val initialize : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t

Remove "Uninitialized" attribute of the given address

val set_uninitialized : IR.Tenv.t -> [ `LocalDecl of IR.Pvar.t * Pulselib.PulseBasicInterface.AbstractValue.t option | `Malloc of Pulselib.PulseBasicInterface.AbstractValue.t ] -> IR.Typ.t -> IBase.Location.t -> t -> t

Add "Uninitialized" attributes when a variable is declared or a memory is allocated by malloc.

module Topl : sig ... end
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/module-type-BaseDomainSig/index.html b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/module-type-BaseDomainSig/index.html index 0c86b1518..d22d862d0 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/module-type-BaseDomainSig/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseAbductiveDomain/module-type-BaseDomainSig/index.html @@ -1,2 +1,2 @@ -BaseDomainSig (infer.Pulselib__PulseAbductiveDomain.BaseDomainSig)

Module type Pulselib__PulseAbductiveDomain.BaseDomainSig

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val pp : F.formatter -> t -> unit
\ No newline at end of file +BaseDomainSig (infer.Pulselib__PulseAbductiveDomain.BaseDomainSig)

Module type Pulselib__PulseAbductiveDomain.BaseDomainSig

signature common to the "normal" Domain, representing the post at the current program point, and the inverted PreDomain, representing the inferred pre-condition

type t = private BaseDomain.t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Yojson.Safe.t
val empty : t
val update : ?⁠stack:BaseStack.t -> ?⁠heap:BaseMemory.t -> ?⁠attrs:BaseAddressAttributes.t -> t -> t
val filter_addr : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t

filter both heap and attrs

val filter_addr_with_discarded_addrs : f:(Pulselib.PulseBasicInterface.AbstractValue.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list

compute new state containing only reachable addresses in its heap and attributes, as well as the list of discarded unreachable addresses

val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t
val pp : F.formatter -> t -> unit
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseArithmetic/index.html b/website/static/odoc/next/infer/Pulselib__PulseArithmetic/index.html index e67ab4d5c..5713c5ec5 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseArithmetic/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseArithmetic/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseArithmetic (infer.Pulselib__PulseArithmetic) \ No newline at end of file +Pulselib__PulseArithmetic (infer.Pulselib__PulseArithmetic)

Module Pulselib__PulseArithmetic

module AbductiveDomain = Pulselib.PulseAbductiveDomain
val and_nonnegative : Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val and_positive : Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val and_eq_int : Pulselib.PulseBasicInterface.AbstractValue.t -> IR.IntLit.t -> AbductiveDomain.t -> AbductiveDomain.t
type operand = Pulselib.PulseBasicInterface.PathCondition.operand =
| LiteralOperand of IR.IntLit.t
| AbstractValueOperand of Pulselib.PulseBasicInterface.AbstractValue.t
val eval_binop : Pulselib.PulseBasicInterface.AbstractValue.t -> IR.Binop.t -> operand -> operand -> AbductiveDomain.t -> AbductiveDomain.t
val eval_unop : Pulselib.PulseBasicInterface.AbstractValue.t -> IR.Unop.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t
val prune_binop : negated:bool -> IR.Binop.t -> operand -> operand -> AbductiveDomain.t -> AbductiveDomain.t
val prune_eq_zero : Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t

helper function wrapping prune_binop

val prune_positive : Pulselib.PulseBasicInterface.AbstractValue.t -> AbductiveDomain.t -> AbductiveDomain.t

helper function wrapping prune_binop

val is_known_zero : AbductiveDomain.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> bool
val is_unsat_cheap : AbductiveDomain.t -> bool
val has_no_assumptions : AbductiveDomain.t -> bool
val and_equal_instanceof : Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> IR.Typ.t -> AbductiveDomain.t -> AbductiveDomain.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseBaseAddressAttributes/index.html b/website/static/odoc/next/infer/Pulselib__PulseBaseAddressAttributes/index.html index 8ee9ba43e..d414762b9 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseBaseAddressAttributes/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseBaseAddressAttributes/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseBaseAddressAttributes (infer.Pulselib__PulseBaseAddressAttributes)

Module Pulselib__PulseBaseAddressAttributes

module F = Stdlib.Format
type t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val empty : t
val filter : (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
val filter_with_discarded_addrs : (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list
val find_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Attributes.t option
val add_one : Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attribute.t -> t -> t
val add : Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> t -> t
val allocate : IR.Procname.t -> (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) -> IBase.Location.t -> t -> t
val add_dynamic_type : IR.Typ.Name.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val fold : (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> 'a -> 'a) -> t -> 'a -> 'a
val check_valid : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> (unit, Pulselib.PulseBasicInterface.Invalidation.t * Pulselib.PulseBasicInterface.Trace.t) IStdlib.IStd.result
val check_initialized : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> (unit, unit) IStdlib.IStd.result
val invalidate : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) -> Pulselib.PulseBasicInterface.Invalidation.t -> IBase.Location.t -> t -> t
val get_closure_proc_name : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> IR.Procname.t option
val get_invalid : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> (Pulselib.PulseBasicInterface.Invalidation.t * Pulselib.PulseBasicInterface.Trace.t) option
val get_must_be_valid : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Trace.t option
val get_must_be_valid_or_allocated_isl : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Trace.t option
val get_must_be_initialized : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Trace.t option
val std_vector_reserve : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_std_vector_reserved : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val mark_as_end_of_collection : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_end_of_collection : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val pp : F.formatter -> t -> unit
val remove_allocation_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_must_be_valid_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_isl_abduced_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val initialize : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val canonicalize : get_var_repr:(Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t

merge the attributes of all the variables that are equal according to get_var_repr and remove non-canonical variables in favor of their rerpresentative

\ No newline at end of file +Pulselib__PulseBaseAddressAttributes (infer.Pulselib__PulseBaseAddressAttributes)

Module Pulselib__PulseBaseAddressAttributes

module F = Stdlib.Format
type t
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val empty : t
val filter : (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t
val filter_with_discarded_addrs : (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> bool) -> t -> t * Pulselib.PulseBasicInterface.AbstractValue.t list
val find_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Attributes.t option
val add_one : Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attribute.t -> t -> t
val add : Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> t -> t
val allocate : IR.Procname.t -> (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) -> IBase.Location.t -> t -> t
val add_dynamic_type : IR.Typ.Name.t -> Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val fold : (Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.Attributes.t -> 'a -> 'a) -> t -> 'a -> 'a
val check_valid : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> (unit, Pulselib.PulseBasicInterface.Invalidation.t * Pulselib.PulseBasicInterface.Trace.t) IStdlib.IStd.result
val check_initialized : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> (unit, unit) IStdlib.IStd.result
val invalidate : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t) -> Pulselib.PulseBasicInterface.Invalidation.t -> IBase.Location.t -> t -> t
val get_closure_proc_name : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> IR.Procname.t option
val get_invalid : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> (Pulselib.PulseBasicInterface.Invalidation.t * Pulselib.PulseBasicInterface.Trace.t) option
val get_must_be_valid : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Trace.t option
val get_must_be_valid_or_allocated_isl : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Trace.t option
val get_must_be_initialized : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> Pulselib.PulseBasicInterface.Trace.t option
val std_vector_reserve : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_std_vector_reserved : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val mark_as_end_of_collection : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val is_end_of_collection : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> bool
val pp : F.formatter -> t -> unit
val remove_allocation_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_must_be_valid_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val remove_isl_abduced_attr : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val initialize : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val canonicalize : get_var_repr:(Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t

merge the attributes of all the variables that are equal according to get_var_repr and remove non-canonical variables in favor of their rerpresentative

val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseBaseDomain/index.html b/website/static/odoc/next/infer/Pulselib__PulseBaseDomain/index.html index 5781e45d9..0bc40379b 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseBaseDomain/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseBaseDomain/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseBaseDomain (infer.Pulselib__PulseBaseDomain)

Module Pulselib__PulseBaseDomain

module F = Stdlib.Format
type t = {
heap : Pulselib.PulseBaseMemory.t;
stack : Pulselib.PulseBaseStack.t;
attrs : Pulselib.PulseBaseAddressAttributes.t;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
type cell = Pulselib.PulseBaseMemory.Edges.t * Pulselib.PulseBasicInterface.Attributes.t
val empty : t
val reachable_addresses : t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are "used" in the abstract state, i.e. reachable from the stack variables

val reachable_addresses_from : Pulselib.PulseBasicInterface.AbstractValue.t list -> t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are reachable from given abstract addresses

type mapping
val empty_mapping : mapping
type isograph_relation =
| NotIsomorphic

no mapping was found that can make LHS the same as the RHS

| IsomorphicUpTo of mapping

mapping(lhs) is isomorphic to rhs

val isograph_map : lhs:t -> rhs:t -> mapping -> isograph_relation
val is_isograph : lhs:t -> rhs:t -> mapping -> bool
val find_cell_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> cell option
val pp : F.formatter -> t -> unit
\ No newline at end of file +Pulselib__PulseBaseDomain (infer.Pulselib__PulseBaseDomain)

Module Pulselib__PulseBaseDomain

module F = Stdlib.Format
type t = {
heap : Pulselib.PulseBaseMemory.t;
stack : Pulselib.PulseBaseStack.t;
attrs : Pulselib.PulseBaseAddressAttributes.t;
}
val compare : t -> t -> int
val equal : t -> t -> bool
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
type cell = Pulselib.PulseBaseMemory.Edges.t * Pulselib.PulseBasicInterface.Attributes.t
val empty : t
val reachable_addresses : t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are "used" in the abstract state, i.e. reachable from the stack variables

val reachable_addresses_from : Pulselib.PulseBasicInterface.AbstractValue.t list -> t -> Pulselib.PulseBasicInterface.AbstractValue.Set.t

compute the set of abstract addresses that are reachable from given abstract addresses

type mapping
val empty_mapping : mapping
type isograph_relation =
| NotIsomorphic

no mapping was found that can make LHS the same as the RHS

| IsomorphicUpTo of mapping

mapping(lhs) is isomorphic to rhs

val isograph_map : lhs:t -> rhs:t -> mapping -> isograph_relation
val is_isograph : lhs:t -> rhs:t -> mapping -> bool
val find_cell_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> cell option
val pp : F.formatter -> t -> unit
val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/Edges/index.html b/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/Edges/index.html index 03cff6bb1..2016bb9fc 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/Edges/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/Edges/index.html @@ -1,2 +1,2 @@ -Edges (infer.Pulselib__PulseBaseMemory.Edges)

Module Pulselib__PulseBaseMemory.Edges

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Access.t
type value = AddrTrace.t
val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file +Edges (infer.Pulselib__PulseBaseMemory.Edges)

Module Pulselib__PulseBaseMemory.Edges

type t

Note that the derived compare and equal functions are sensitive to the underlying implementation and in particular won't equate some objects that denote the same map.

val compare : t -> t -> int
val equal : t -> t -> bool
type key = Access.t
type value = AddrTrace.t
val pp : IStdlib.RecencyMap.F.formatter -> t -> unit
val empty : t
val add : key -> value -> t -> t
val bindings : t -> (key * value) list
val exists : t -> f:((key * value) -> bool) -> bool
val filter : t -> f:((key * value) -> bool) -> t
val find_opt : key -> t -> value option
val fold : t -> init:'acc -> f:('acc -> (key * value) -> 'acc) -> 'acc
val fold_map : t -> init:'acc -> f:('acc -> value -> 'acc * value) -> 'acc * t
val is_empty : t -> bool
val map : t -> f:(value -> value) -> t
val mem : t -> key -> bool
val union_left_biased : t -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/index.html b/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/index.html index bb5fb0543..9c03410c5 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseBaseMemory/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseBaseMemory (infer.Pulselib__PulseBaseMemory)

Module Pulselib__PulseBaseMemory

module Access : sig ... end
module AccessSet : IStdlib.IStd.Caml.Set.S with type AccessSet.elt = Access.t
module AddrTrace : sig ... end
module Edges : IStdlib.RecencyMap.S with type key = Access.t and type value = AddrTrace.t
include IStdlib.PrettyPrintable.PPMonoMap with type key = Pulselib.PulseBasicInterface.AbstractValue.t and type value = Edges.t
include IStdlib.PrettyPrintable.MonoMap
type key
type value
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
include IStdlib.PrettyPrintable.PrintableType with type t := t
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
val compare : t -> t -> int
val equal : t -> t -> bool
val register_address : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val add_edge : Pulselib.PulseBasicInterface.AbstractValue.t -> Access.t -> AddrTrace.t -> t -> t
val find_edge_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> Access.t -> t -> AddrTrace.t option
val yojson_of_t : t -> Yojson.Safe.t
val is_allocated : t -> Pulselib.PulseBasicInterface.AbstractValue.t -> bool

whether the address has a non-empty set of edges

val canonicalize : get_var_repr:(Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t

replace each address in the heap by its canonical representative according to the current equality relation, represented by get_var_repr; also remove addresses that point to empty edges

\ No newline at end of file +Pulselib__PulseBaseMemory (infer.Pulselib__PulseBaseMemory)

Module Pulselib__PulseBaseMemory

module Access : sig ... end
module AccessSet : IStdlib.IStd.Caml.Set.S with type AccessSet.elt = Access.t
module AddrTrace : sig ... end
module Edges : IStdlib.RecencyMap.S with type key = Access.t and type value = AddrTrace.t
include IStdlib.PrettyPrintable.PPMonoMap with type key = Pulselib.PulseBasicInterface.AbstractValue.t and type value = Edges.t
include IStdlib.PrettyPrintable.MonoMap
type key
type value
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
include IStdlib.PrettyPrintable.PrintableType with type t := t
type t
val pp : IStdlib.PrettyPrintable.F.formatter -> t -> unit
val pp_key : IStdlib.PrettyPrintable.F.formatter -> key -> unit
val compare : t -> t -> int
val equal : t -> t -> bool
val register_address : Pulselib.PulseBasicInterface.AbstractValue.t -> t -> t
val add_edge : Pulselib.PulseBasicInterface.AbstractValue.t -> Access.t -> AddrTrace.t -> t -> t
val find_edge_opt : Pulselib.PulseBasicInterface.AbstractValue.t -> Access.t -> t -> AddrTrace.t option
val yojson_of_t : t -> Yojson.Safe.t
val is_allocated : t -> Pulselib.PulseBasicInterface.AbstractValue.t -> bool

whether the address has a non-empty set of edges

val canonicalize : get_var_repr:(Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t

replace each address in the heap by its canonical representative according to the current equality relation, represented by get_var_repr; also remove addresses that point to empty edges

val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t Pulselib.PulseBasicInterface.SatUnsat.t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseBaseStack/index.html b/website/static/odoc/next/infer/Pulselib__PulseBaseStack/index.html index af4a46947..dc75ad282 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseBaseStack/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseBaseStack/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseBaseStack (infer.Pulselib__PulseBaseStack)

Module Pulselib__PulseBaseStack

module F = Stdlib.Format
include IStdlib.PrettyPrintable.MonoMap with type key = IR.Var.t and type value = Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t
type key = IR.Var.t
type value = Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : F.formatter -> t -> unit
val yojson_of_t : t -> Yojson.Safe.t
val canonicalize : get_var_repr:(Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t

replace each address in the stack by its canonical representative according to the current equality relation, represented by get_var_repr

\ No newline at end of file +Pulselib__PulseBaseStack (infer.Pulselib__PulseBaseStack)

Module Pulselib__PulseBaseStack

module F = Stdlib.Format
include IStdlib.PrettyPrintable.MonoMap with type key = IR.Var.t and type value = Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t
type key = IR.Var.t
type value = Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.ValueHistory.t
type t
val empty : t
val is_empty : t -> bool
val mem : key -> t -> bool
val add : key -> value -> t -> t
val update : key -> (value option -> value option) -> t -> t
val singleton : key -> value -> t
val remove : key -> t -> t
val merge : (key -> value option -> value option -> value option) -> t -> t -> t
val union : (key -> value -> value -> value option) -> t -> t -> t
val compare : (value -> value -> int) -> t -> t -> int
val equal : (value -> value -> bool) -> t -> t -> bool
val iter : (key -> value -> unit) -> t -> unit
val fold : (key -> value -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (key -> value -> bool) -> t -> bool
val exists : (key -> value -> bool) -> t -> bool
val filter : (key -> value -> bool) -> t -> t
val partition : (key -> value -> bool) -> t -> t * t
val cardinal : t -> int
val bindings : t -> (key * value) list
val min_binding : t -> key * value
val min_binding_opt : t -> (key * value) option
val max_binding : t -> key * value
val max_binding_opt : t -> (key * value) option
val choose : t -> key * value
val choose_opt : t -> (key * value) option
val split : key -> t -> t * value option * t
val find : key -> t -> value
val find_opt : key -> t -> value option
val find_first : (key -> bool) -> t -> key * value
val find_first_opt : (key -> bool) -> t -> (key * value) option
val find_last : (key -> bool) -> t -> key * value
val find_last_opt : (key -> bool) -> t -> (key * value) option
val map : (value -> value) -> t -> t
val mapi : (key -> value -> value) -> t -> t
val is_singleton_or_more : t -> (key * value) IStdlib.IContainer.singleton_or_more
val fold_map : t -> init:'a -> f:('a -> value -> 'a * value) -> 'a * t
val of_seq : (key * value) Stdlib.Seq.t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : F.formatter -> t -> unit
val yojson_of_t : t -> Yojson.Safe.t
val canonicalize : get_var_repr:(Pulselib.PulseBasicInterface.AbstractValue.t -> Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t

replace each address in the stack by its canonical representative according to the current equality relation, represented by get_var_repr

val subst_var : (Pulselib.PulseBasicInterface.AbstractValue.t * Pulselib.PulseBasicInterface.AbstractValue.t) -> t -> t
\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseReport/index.html b/website/static/odoc/next/infer/Pulselib__PulseReport/index.html index dec93cfcf..11997200f 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseReport/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseReport/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseReport (infer.Pulselib__PulseReport) \ No newline at end of file +Pulselib__PulseReport (infer.Pulselib__PulseReport) \ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseTrace/index.html b/website/static/odoc/next/infer/Pulselib__PulseTrace/index.html index 85955613d..b116dbe64 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseTrace/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseTrace/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseTrace (infer.Pulselib__PulseTrace)

Module Pulselib__PulseTrace

module F = Stdlib.Format
module CallEvent = Pulselib.PulseCallEvent
module ValueHistory = Pulselib.PulseValueHistory
type t =
| Immediate of {
location : IBase.Location.t;
history : ValueHistory.t;
}
| ViaCall of {
f : CallEvent.t;
location : IBase.Location.t;

location of the call event

history : ValueHistory.t;

the call involves a value with this prior history

in_call : t;

last step of the trace is in a call to f made at location

}
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : pp_immediate:(F.formatter -> unit) -> F.formatter -> t -> unit
val get_outer_location : t -> IBase.Location.t

skip histories and go straight to the where the action is: either the action itself or the call that leads to the action

val get_start_location : t -> IBase.Location.t

initial step in the history if not empty, or else same as get_outer_location

val add_to_errlog : ?⁠include_value_history:bool -> nesting:int -> pp_immediate:(F.formatter -> unit) -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
\ No newline at end of file +Pulselib__PulseTrace (infer.Pulselib__PulseTrace)

Module Pulselib__PulseTrace

module F = Stdlib.Format
module CallEvent = Pulselib.PulseCallEvent
module ValueHistory = Pulselib.PulseValueHistory
type t =
| Immediate of {
location : IBase.Location.t;
history : ValueHistory.t;
}
| ViaCall of {
f : CallEvent.t;
location : IBase.Location.t;

location of the call event

history : ValueHistory.t;

the call involves a value with this prior history

in_call : t;

last step of the trace is in a call to f made at location

}
val compare : t -> t -> int
val equal : t -> t -> bool
val pp : pp_immediate:(F.formatter -> unit) -> F.formatter -> t -> unit
val get_outer_location : t -> IBase.Location.t

skip histories and go straight to the where the action is: either the action itself or the call that leads to the action

val get_start_location : t -> IBase.Location.t

initial step in the history if not empty, or else same as get_outer_location

val add_to_errlog : ?⁠include_value_history:bool -> nesting:int -> pp_immediate:(F.formatter -> unit) -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
val find_map : f:(ValueHistory.event -> 'a option) -> t -> 'a option

Like List.find_map, but applies to value histories.

\ No newline at end of file diff --git a/website/static/odoc/next/infer/Pulselib__PulseValueHistory/index.html b/website/static/odoc/next/infer/Pulselib__PulseValueHistory/index.html index 10ab40f35..07915f042 100644 --- a/website/static/odoc/next/infer/Pulselib__PulseValueHistory/index.html +++ b/website/static/odoc/next/infer/Pulselib__PulseValueHistory/index.html @@ -1,2 +1,2 @@ -Pulselib__PulseValueHistory (infer.Pulselib__PulseValueHistory)

Module Pulselib__PulseValueHistory

module F = Stdlib.Format
module CallEvent = Pulselib.PulseCallEvent
type event =
| Allocation of {
f : CallEvent.t;
location : IBase.Location.t;
}
| Assignment of IBase.Location.t
| Call of {
f : CallEvent.t;
location : IBase.Location.t;
in_call : t;
}
| Capture of {
captured_as : IR.Pvar.t;
mode : IR.Pvar.capture_mode;
location : IBase.Location.t;
}
| Conditional of {
is_then_branch : bool;
if_kind : IR.Sil.if_kind;
location : IBase.Location.t;
}
| CppTemporaryCreated of IBase.Location.t
| FormalDeclared of IR.Pvar.t * IBase.Location.t
| StructFieldAddressCreated of IR.Fieldname.t * IBase.Location.t
| VariableAccessed of IR.Pvar.t * IBase.Location.t
| VariableDeclared of IR.Pvar.t * IBase.Location.t
and t = event list
val compare_event : event -> event -> int
val compare : t -> t -> int
val equal_event : event -> event -> bool
val equal : t -> t -> bool
val yojson_of_event : event -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : F.formatter -> t -> unit
val location_of_event : event -> IBase.Location.t
val add_to_errlog : nesting:int -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
\ No newline at end of file +Pulselib__PulseValueHistory (infer.Pulselib__PulseValueHistory)

Module Pulselib__PulseValueHistory

module F = Stdlib.Format
module CallEvent = Pulselib.PulseCallEvent
type event =
| Allocation of {
f : CallEvent.t;
location : IBase.Location.t;
}
| Assignment of IBase.Location.t
| Call of {
f : CallEvent.t;
location : IBase.Location.t;
in_call : t;
}
| Capture of {
captured_as : IR.Pvar.t;
mode : IR.Pvar.capture_mode;
location : IBase.Location.t;
}
| Conditional of {
is_then_branch : bool;
if_kind : IR.Sil.if_kind;
location : IBase.Location.t;
}
| CppTemporaryCreated of IBase.Location.t
| FormalDeclared of IR.Pvar.t * IBase.Location.t
| StructFieldAddressCreated of IR.Fieldname.t IStdlib.RevList.t * IBase.Location.t
| VariableAccessed of IR.Pvar.t * IBase.Location.t
| VariableDeclared of IR.Pvar.t * IBase.Location.t
and t = event list
val compare_event : event -> event -> int
val compare : t -> t -> int
val equal_event : event -> event -> bool
val equal : t -> t -> bool
val yojson_of_event : event -> Ppx_yojson_conv_lib.Yojson.Safe.t
val yojson_of_t : t -> Ppx_yojson_conv_lib.Yojson.Safe.t
val pp : F.formatter -> t -> unit
val pp_fields : F.formatter -> IR.Fieldname.t IStdlib.RevList.t -> unit
val location_of_event : event -> IBase.Location.t
val add_to_errlog : nesting:int -> t -> Absint.Errlog.loc_trace_elem list -> Absint.Errlog.loc_trace_elem list
\ No newline at end of file