[website] add remaining issue types

Summary:
Better API for creating issue types:
- distinguish hidden/normal/dynamic issue types
- normal issue types should always be documented
  - add "TODO" to missing documentation
- dynamic issue types are the only ones that can be created outside of
  IssueType.ml

I had to document the new CCBM and the resource leak lab exercise to
keep Help.ml happy, did `make doc-publish`.

Reviewed By: ngorogiannis

Differential Revision: D22118766

fbshipit-source-id: 3d0194518
master
Jules Villard 5 years ago committed by Facebook GitHub Bot
parent 3846fbd3ee
commit f5993b7254

@ -0,0 +1,3 @@
Reported when the class either:
- has at least one nullability issue, or
- has at least one (currently possibly hidden) issue preventing it from being marked `@Nullsafe`.

@ -1740,7 +1740,8 @@ INTERNAL OPTIONS
empty (see linters-def-folder). empty (see linters-def-folder).
--resource-leak-lab --resource-leak-lab
Activates: checker resource-leak-lab: (Conversely: Activates: checker resource-leak-lab: Toy checker for the
"resource leak" write-your-own-checker exercise. (Conversely:
--no-resource-leak-lab) --no-resource-leak-lab)
--scheduler { file | restart | callgraph } --scheduler { file | restart | callgraph }

@ -262,8 +262,8 @@ let create_parsed_linters linters_def_file checkers : linter list =
(Config.get_linter_doc_url ~linter_id:checker.id) (Config.get_linter_doc_url ~linter_id:checker.id)
issue_desc.issue_type_doc_url issue_desc.issue_type_doc_url
in in
IssueType.register_from_string ~id:checker.id ?hum:issue_desc.issue_type_name ?doc_url IssueType.register_dynamic ~id:checker.id ?hum:issue_desc.issue_type_name ?doc_url
~linters_def_file issue_desc.severity Linters ~linters_def_file:(Some linters_def_file) issue_desc.severity Linters
in in
let issue_desc = let issue_desc =
{ CIssue.issue_type { CIssue.issue_type

@ -125,7 +125,10 @@ let config_unsafe checker =
; activates= [BufferOverrunAnalysis] } ; activates= [BufferOverrunAnalysis] }
| ConfigChecksBetweenMarkers -> | ConfigChecksBetweenMarkers ->
{ id= "config-checks-between-markers" { id= "config-checks-between-markers"
; kind= Internal ; kind=
UserFacing
{ title= "Config Checks between Markers"
; markdown_body= "This checker is currently only useful for certain Facebook code." }
; support= supports_java_experimental ; support= supports_java_experimental
; short_documentation= "[EXPERIMENTAL] Collects config checks between marker start and end." ; short_documentation= "[EXPERIMENTAL] Collects config checks between marker start and end."
; cli_flags= Some {deprecated= []; show_in_help= true} ; cli_flags= Some {deprecated= []; show_in_help= true}
@ -320,9 +323,17 @@ let config_unsafe checker =
; activates= [] } ; activates= [] }
| ResourceLeakLabExercise -> | ResourceLeakLabExercise ->
{ id= "resource-leak-lab" { id= "resource-leak-lab"
; kind= Exercise ; kind=
; support= (fun _ -> Support) UserFacing
; short_documentation= "" { title= "Resource Leak Lab Exercise"
; markdown_body=
"This toy checker does nothing by default. Hack on it to make it report resource \
leaks! See the [lab \
instructions](https://github.com/facebook/infer/blob/master/infer/src/labs/README.md)."
}
; support= (function Clang -> NoSupport | Java -> Support)
; short_documentation=
"Toy checker for the \"resource leak\" write-your-own-checker exercise."
; cli_flags= Some {deprecated= []; show_in_help= false} ; cli_flags= Some {deprecated= []; show_in_help= false}
; enabled_by_default= false ; enabled_by_default= false
; activates= [] } ; activates= [] }

@ -1177,7 +1177,7 @@ and () =
issue issue
| None -> | None ->
(* unknown issue type: assume it will be defined in AL *) (* unknown issue type: assume it will be defined in AL *)
IssueType.register_from_string ~id:issue_id Warning Linters IssueType.register_dynamic ~id:issue_id Warning ~linters_def_file:None Linters
in in
IssueType.set_enabled issue b ; IssueType.set_enabled issue b ;
issue_id ) issue_id )

File diff suppressed because it is too large Load Diff

@ -45,14 +45,12 @@ val pp : Format.formatter -> t -> unit
val find_from_string : id:string -> t option val find_from_string : id:string -> t option
(** return the issue type if it was previously registered *) (** return the issue type if it was previously registered *)
val register_from_string : val register_dynamic :
?enabled:bool ?enabled:bool
-> ?is_cost_issue:bool
-> ?hum:string -> ?hum:string
-> ?doc_url:string -> ?doc_url:string
-> ?linters_def_file:string -> linters_def_file:string option
-> id:string -> id:string
-> ?visibility:visibility
-> ?user_documentation:string -> ?user_documentation:string
-> severity -> severity
-> Checker.t -> Checker.t

@ -111,7 +111,8 @@ let recognize_exception exn : IssueToReport.t =
| Class_cast_exception (desc, ocaml_pos) -> | Class_cast_exception (desc, ocaml_pos) ->
{issue_type= IssueType.class_cast_exception; description= desc; ocaml_pos= Some ocaml_pos} {issue_type= IssueType.class_cast_exception; description= desc; ocaml_pos= Some ocaml_pos}
| Custom_error (error_msg, severity, desc) -> | Custom_error (error_msg, severity, desc) ->
{ issue_type= IssueType.register_from_string ~id:error_msg severity Biabduction { issue_type=
IssueType.register_dynamic ~linters_def_file:None ~id:error_msg severity Biabduction
; description= desc ; description= desc
; ocaml_pos= None } ; ocaml_pos= None }
| Dangling_pointer_dereference (user_visible, desc, ocaml_pos) -> | Dangling_pointer_dereference (user_visible, desc, ocaml_pos) ->

@ -331,8 +331,8 @@ module CxxAnnotationSpecs = struct
(List.Assoc.find ~equal:String.equal spec_cfg "doc_url") (List.Assoc.find ~equal:String.equal spec_cfg "doc_url")
in in
let linters_def_file = Option.value_map ~default:"" ~f:Fn.id Config.inferconfig_file in let linters_def_file = Option.value_map ~default:"" ~f:Fn.id Config.inferconfig_file in
IssueType.register_from_string ~id:spec_name ~doc_url ~linters_def_file Error IssueType.register_dynamic ~id:spec_name ~doc_url ~linters_def_file:(Some linters_def_file)
AnnotationReachability Error AnnotationReachability
in in
Reporting.log_issue proc_desc err_log ~loc ~ltr:final_trace AnnotationReachability issue_type Reporting.log_issue proc_desc err_log ~loc ~ltr:final_trace AnnotationReachability issue_type
description description

@ -98,13 +98,11 @@ let all_issues_header =
title: List of all issue types title: List of all issue types
--- ---
Here is an overview of the issue types currently reported by Infer. Currently outdated and being worked on! Here is an overview of the issue types currently reported by Infer.
|} |}
(* TODO: instead of just taking issues that have documentation, enforce that (some, eg enabled
by default) issue types always have documentation *)
let all_issues = let all_issues =
lazy lazy
( IssueType.all_issues () ( IssueType.all_issues ()

@ -3,14 +3,15 @@
"This is a @generated file, run `make doc-publish` from the root of the infer repository to generate it", "This is a @generated file, run `make doc-publish` from the root of the infer repository to generate it",
"doc_entries": [ "doc_entries": [
"all-issue-types", "checker-annotation-reachability", "all-issue-types", "checker-annotation-reachability",
"checker-biabduction", "checker-bufferoverrun", "checker-cost", "checker-biabduction", "checker-bufferoverrun",
"checker-config-checks-between-markers", "checker-cost",
"checker-eradicate", "checker-fragment-retains-view", "checker-eradicate", "checker-fragment-retains-view",
"checker-immutable-cast", "checker-impurity", "checker-immutable-cast", "checker-impurity",
"checker-inefficient-keyset-iterator", "checker-linters", "checker-inefficient-keyset-iterator", "checker-linters",
"checker-litho-required-props", "checker-liveness", "checker-litho-required-props", "checker-liveness",
"checker-loop-hoisting", "checker-printf-args", "checker-pulse", "checker-loop-hoisting", "checker-printf-args", "checker-pulse",
"checker-purity", "checker-quandary", "checker-racerd", "checker-siof", "checker-purity", "checker-quandary", "checker-racerd",
"checker-self-in-block", "checker-starvation", "checker-topl", "checker-resource-leak-lab", "checker-siof", "checker-self-in-block",
"checker-uninit" "checker-starvation", "checker-topl", "checker-uninit"
] ]
} }

@ -2,7 +2,7 @@
title: List of all issue types title: List of all issue types
--- ---
Here is an overview of the issue types currently reported by Infer. Currently outdated and being worked on! Here is an overview of the issue types currently reported by Infer.
## ASSIGN_POINTER_WARNING ## ASSIGN_POINTER_WARNING
@ -33,6 +33,11 @@ integer pointed to by `n` is nonzero (e.g., she may have meant to call an
accessor like `[n intValue]` instead). Infer will ask the programmer explicitly accessor like `[n intValue]` instead). Infer will ask the programmer explicitly
compare `n` to `nil` or call an accessor to clarify her intention. compare `n` to `nil` or call an accessor to clarify her intention.
## BIABDUCTION_MEMORY_LEAK
Reported as "Memory Leak" by [biabduction](/docs/next/checker-biabduction).
See [MEMORY_LEAK](#memory_leak).
## BUFFER_OVERRUN_L1 ## BUFFER_OVERRUN_L1
Reported as "Buffer Overrun L1" by [bufferoverrun](/docs/next/checker-bufferoverrun). Reported as "Buffer Overrun L1" by [bufferoverrun](/docs/next/checker-bufferoverrun).
@ -55,30 +60,9 @@ report. The higher the number, the more likely it is to be a false positive.
* `L3`: The reports that are not included in the above cases. * `L3`: The reports that are not included in the above cases.
Other than them, there are some specific-purpose buffer overrun reports as follows.
* `R2`: An array access is unsafe by *risky* array values from `strndup`. For example, suppose
there is a `strndup` call as follows.
```c
char* s1 = (char*)malloc(sizeof(char) * size);
for (int i = 0; i < size; i++) {
s1[i] = 'a';
}
s1[5] = '\0';
char* s2 = strndup(s1, size - 1);
s2[size - 1] = 'a';
```
Even if the second parameter of `strndup` is `size - 1`, the length of `s2` can be shorter than
`size` if there is the null character in the middle of `s1`.
* `S2`: An array access is unsafe by symbolic values. For example, array size: `[n,n]`, offset * `S2`: An array access is unsafe by symbolic values. For example, array size: `[n,n]`, offset
`[n,+oo]`. `[n,+oo]`.
* `T1`: An array access is unsafe by tainted external values. This is experimental and will be
removed sooner or later.
* `U5`: An array access is unsafe by unknown values, which are usually from unknown function * `U5`: An array access is unsafe by unknown values, which are usually from unknown function
calls. calls.
@ -101,21 +85,11 @@ See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
Reported as "Buffer Overrun L5" by [bufferoverrun](/docs/next/checker-bufferoverrun). Reported as "Buffer Overrun L5" by [bufferoverrun](/docs/next/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_R2
Reported as "Buffer Overrun R2" by [bufferoverrun](/docs/next/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1) See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_S2 ## BUFFER_OVERRUN_S2
Reported as "Buffer Overrun S2" by [bufferoverrun](/docs/next/checker-bufferoverrun). Reported as "Buffer Overrun S2" by [bufferoverrun](/docs/next/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_T1
Reported as "Buffer Overrun T1" by [bufferoverrun](/docs/next/checker-bufferoverrun).
See [BUFFER_OVERRUN_L1](#buffer_overrun_l1) See [BUFFER_OVERRUN_L1](#buffer_overrun_l1)
## BUFFER_OVERRUN_U5 ## BUFFER_OVERRUN_U5
@ -250,6 +224,16 @@ Action: fix the mismatch between format string and argument types.
Reported as "Component Factory Function" by [linters](/docs/next/checker-linters). Reported as "Component Factory Function" by [linters](/docs/next/checker-linters).
## COMPONENT_FILE_CYCLOMATIC_COMPLEXITY
Reported as "Component File Cyclomatic Complexity" by [linters](/docs/next/checker-linters).
## COMPONENT_FILE_LINE_COUNT
Reported as "Component File Line Count" by [linters](/docs/next/checker-linters).
## COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS ## COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS
Reported as "Component Initializer With Side Effects" by [linters](/docs/next/checker-linters). Reported as "Component Initializer With Side Effects" by [linters](/docs/next/checker-linters).
@ -276,6 +260,11 @@ A condition expression is **always** evaluated to false.
Reported as "Condition Always True" by [bufferoverrun](/docs/next/checker-bufferoverrun). Reported as "Condition Always True" by [bufferoverrun](/docs/next/checker-bufferoverrun).
A condition expression is **always** evaluated to true. A condition expression is **always** evaluated to true.
## CONFIG_CHECKS_BETWEEN_MARKERS
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
## CONSTANT_ADDRESS_DEREFERENCE ## CONSTANT_ADDRESS_DEREFERENCE
Reported as "Constant Address Dereference" by [pulse](/docs/next/checker-pulse). Reported as "Constant Address Dereference" by [pulse](/docs/next/checker-pulse).
@ -316,6 +305,11 @@ const int copied_v = v;
}; };
``` ```
## DANGLING_POINTER_DEREFERENCE
Reported as "Dangling Pointer Dereference" by [biabduction](/docs/next/checker-biabduction).
## DEADLOCK ## DEADLOCK
Reported as "Deadlock" by [starvation](/docs/next/checker-starvation). Reported as "Deadlock" by [starvation](/docs/next/checker-starvation).
@ -467,6 +461,11 @@ I work for (null)
Note that the custom setter was only invoked once. Note that the custom setter was only invoked once.
## DIVIDE_BY_ZERO
Reported as "Divide By Zero" by [biabduction](/docs/next/checker-biabduction).
## EMPTY_VECTOR_ACCESS ## EMPTY_VECTOR_ACCESS
Reported as "Empty Vector Access" by [biabduction](/docs/next/checker-biabduction). Reported as "Empty Vector Access" by [biabduction](/docs/next/checker-biabduction).
@ -484,6 +483,11 @@ int foo(){
} }
``` ```
## ERADICATE_BAD_NESTED_CLASS_ANNOTATION
Reported as "@Nullsafe annotation is inconsistent with outer class" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_CONDITION_REDUNDANT ## ERADICATE_CONDITION_REDUNDANT
Reported as "Condition Redundant" by [eradicate](/docs/next/checker-eradicate). Reported as "Condition Redundant" by [eradicate](/docs/next/checker-eradicate).
@ -558,6 +562,11 @@ add a @Nullable annotation to the field. This annotation might trigger more
warnings in other code that uses the field, as that code must now deal with null warnings in other code that uses the field, as that code must now deal with null
values. values.
## ERADICATE_FIELD_OVER_ANNOTATED
Reported as "Field Over Annotated" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION ## ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION
Reported as "Inconsistent Subclass Parameter Annotation" by [eradicate](/docs/next/checker-eradicate). Reported as "Inconsistent Subclass Parameter Annotation" by [eradicate](/docs/next/checker-eradicate).
@ -647,6 +656,29 @@ class Main {
} }
``` ```
## ERADICATE_META_CLASS_CAN_BE_NULLSAFE
Reported as "Class has 0 issues and can be marked @Nullsafe" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_META_CLASS_IS_NULLSAFE
Reported as "Class is marked @Nullsafe and has 0 issues" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_META_CLASS_NEEDS_IMPROVEMENT
Reported as "Class needs improvement to become @Nullsafe" by [eradicate](/docs/next/checker-eradicate).
Reported when the class either:
- has at least one nullability issue, or
- has at least one (currently possibly hidden) issue preventing it from being marked `@Nullsafe`.
## ERADICATE_NULLABLE_DEREFERENCE
Reported as "Nullable Dereference" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_PARAMETER_NOT_NULLABLE ## ERADICATE_PARAMETER_NOT_NULLABLE
Reported as "Parameter Not Nullable" by [eradicate](/docs/next/checker-eradicate). Reported as "Parameter Not Nullable" by [eradicate](/docs/next/checker-eradicate).
@ -674,6 +706,11 @@ done, add a @Nullable annotation to the relevant parameter in the method
declaration. This annotation might trigger more warnings in the implementation declaration. This annotation might trigger more warnings in the implementation
of method m, as that code must now deal with null values. of method m, as that code must now deal with null values.
## ERADICATE_REDUNDANT_NESTED_CLASS_ANNOTATION
Reported as "@Nullsafe annotation is redundant" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_RETURN_NOT_NULLABLE ## ERADICATE_RETURN_NOT_NULLABLE
Reported as "Return Not Nullable" by [eradicate](/docs/next/checker-eradicate). Reported as "Return Not Nullable" by [eradicate](/docs/next/checker-eradicate).
@ -722,6 +759,16 @@ the annotations of any method called directly by the current method, if
relevant. If the annotations are correct, you can remove the @Nullable relevant. If the annotations are correct, you can remove the @Nullable
annotation. annotation.
## ERADICATE_UNCHECKED_USAGE_IN_NULLSAFE
Reported as "Nullsafe mode: unchecked usage of a value" by [eradicate](/docs/next/checker-eradicate).
## ERADICATE_UNVETTED_THIRD_PARTY_IN_NULLSAFE
Reported as "Nullsafe mode: unchecked usage of unvetted third-party" by [eradicate](/docs/next/checker-eradicate).
## EXECUTION_TIME_COMPLEXITY_INCREASE ## EXECUTION_TIME_COMPLEXITY_INCREASE
Reported as "Execution Time Complexity Increase" by [cost](/docs/next/checker-cost). Reported as "Execution Time Complexity Increase" by [cost](/docs/next/checker-cost).
@ -904,11 +951,6 @@ Reported as "Inferbo Alloc May Be Big" by [bufferoverrun](/docs/next/checker-buf
Reported as "Inferbo Alloc May Be Negative" by [bufferoverrun](/docs/next/checker-bufferoverrun). Reported as "Inferbo Alloc May Be Negative" by [bufferoverrun](/docs/next/checker-bufferoverrun).
`malloc` *may* be called with a negative value. `malloc` *may* be called with a negative value.
## INFERBO_ALLOC_MAY_BE_TAINTED
Reported as "Inferbo Alloc May Be Tainted" by [bufferoverrun](/docs/next/checker-bufferoverrun).
`malloc` *may* be called with a tainted value from external sources. This is experimental and will be removed sooner or later.
## INFINITE_EXECUTION_TIME ## INFINITE_EXECUTION_TIME
Reported as "Infinite Execution Time" by [cost](/docs/next/checker-cost). Reported as "Infinite Execution Time" by [cost](/docs/next/checker-cost).
@ -954,10 +996,6 @@ report. The higher the number, the more likely it is to be a false positive.
* `L5`: The reports that are not included in the above cases. * `L5`: The reports that are not included in the above cases.
Other than them, there as some specific-purpose buffer overrun reports as follows.
* `R2`: A binary integer operation is unsafe by *risky* return values from `strndup`.
* `U5`: A binary integer operation is unsafe by unknown values, which are usually from unknown * `U5`: A binary integer operation is unsafe by unknown values, which are usually from unknown
function calls. function calls.
@ -970,11 +1008,6 @@ See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
Reported as "Integer Overflow L5" by [bufferoverrun](/docs/next/checker-bufferoverrun). Reported as "Integer Overflow L5" by [bufferoverrun](/docs/next/checker-bufferoverrun).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_R2
Reported as "Integer Overflow R2" by [bufferoverrun](/docs/next/checker-bufferoverrun).
See [INTEGER_OVERFLOW_L1](#integer_overflow_l1) See [INTEGER_OVERFLOW_L1](#integer_overflow_l1)
## INTEGER_OVERFLOW_U5 ## INTEGER_OVERFLOW_U5
@ -1040,6 +1073,11 @@ is not called with `nil`.
Reported as "Javascript Injection" by [quandary](/docs/next/checker-quandary). Reported as "Javascript Injection" by [quandary](/docs/next/checker-quandary).
Untrusted data flows into JavaScript. Untrusted data flows into JavaScript.
## LAB_RESOURCE_LEAK
Reported as "Lab Resource Leak" by [resource-leak-lab](/docs/next/checker-resource-leak-lab).
Toy issue.
## LOCKLESS_VIOLATION ## LOCKLESS_VIOLATION
Reported as "Lockless Violation" by [starvation](/docs/next/checker-starvation). Reported as "Lockless Violation" by [starvation](/docs/next/checker-starvation).
@ -1288,6 +1326,11 @@ is not called with `nil`. When an argument will never be `nil`, you can add the
annotation `nonnull` to the argument's type, to tell Infer (and the type annotation `nonnull` to the argument's type, to tell Infer (and the type
system), that the argument won't be `nil`. This will silence the warning. system), that the argument won't be `nil`. This will silence the warning.
## POINTER_SIZE_MISMATCH
Reported as "Pointer Size Mismatch" by [biabduction](/docs/next/checker-biabduction).
## POINTER_TO_CONST_OBJC_CLASS ## POINTER_TO_CONST_OBJC_CLASS
Reported as "Pointer To Const Objc Class" by [linters](/docs/next/checker-linters). Reported as "Pointer To Const Objc Class" by [linters](/docs/next/checker-linters).
@ -1693,6 +1736,11 @@ Environment variable or file data flowing to shell.
Reported as "Shell Injection Risk" by [quandary](/docs/next/checker-quandary). Reported as "Shell Injection Risk" by [quandary](/docs/next/checker-quandary).
Code injection if the caller of the endpoint doesn't sanitize on its end. Code injection if the caller of the endpoint doesn't sanitize on its end.
## SKIP_POINTER_DEREFERENCE
Reported as "Skip Pointer Dereference" by [biabduction](/docs/next/checker-biabduction).
## SQL_INJECTION ## SQL_INJECTION
Reported as "Sql Injection" by [quandary](/docs/next/checker-quandary). Reported as "Sql Injection" by [quandary](/docs/next/checker-quandary).
@ -1928,6 +1976,16 @@ These annotations can be found at `com.facebook.infer.annotation.*`.
other threads. The main utility of this annotation is in interfaces, where other threads. The main utility of this annotation is in interfaces, where
Infer cannot look up the implementation and decide for itself. Infer cannot look up the implementation and decide for itself.
## TOPL_ERROR
Reported as "Topl Error" by [topl](/docs/next/checker-topl).
Experimental.
## UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION
Reported as "Unary Minus Applied To Unsigned Expression" by [biabduction](/docs/next/checker-biabduction).
## UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK ## UNAVAILABLE_API_IN_SUPPORTED_IOS_SDK
Reported as "Unavailable Api In Supported Ios Sdk" by [linters](/docs/next/checker-linters). Reported as "Unavailable Api In Supported Ios Sdk" by [linters](/docs/next/checker-linters).
@ -2068,6 +2126,29 @@ void foo() {
} }
``` ```
## VECTOR_INVALIDATION
Reported as "Vector Invalidation" by [pulse](/docs/next/checker-pulse).
An address pointing into a C++ `std::vector` might have become
invalid. This can happen when an address is taken into a vector, then
the vector is mutated in a way that might invalidate the address, for
example by adding elements to the vector, which might trigger a
re-allocation of the entire vector contents (thereby invalidating the
pointers into the previous location of the contents).
For example:
```C++
void deref_vector_element_after_push_back_bad(std::vector<int>& vec) {
int* elt = &vec[1];
vec.push_back(42); // if the array backing the vector was full already, this
// will re-allocate it and copy the previous contents
// into the new array, then delete the previous array
std::cout << *y << "\n"; // bad: elt might be invalid
}
```
## WEAK_SELF_IN_NO_ESCAPE_BLOCK ## WEAK_SELF_IN_NO_ESCAPE_BLOCK
Reported as "Weak Self In No Escape Block" by [self-in-block](/docs/next/checker-self-in-block). Reported as "Weak Self In No Escape Block" by [self-in-block](/docs/next/checker-self-in-block).

@ -16,10 +16,16 @@ Read more about its foundations in the [Separation Logic and Biabduction page](s
## List of Issue Types ## List of Issue Types
The following issue types are reported by this checker: The following issue types are reported by this checker:
- [BIABDUCTION_MEMORY_LEAK](/docs/next/all-issue-types#biabduction_memory_leak)
- [DANGLING_POINTER_DEREFERENCE](/docs/next/all-issue-types#dangling_pointer_dereference)
- [DIVIDE_BY_ZERO](/docs/next/all-issue-types#divide_by_zero)
- [EMPTY_VECTOR_ACCESS](/docs/next/all-issue-types#empty_vector_access) - [EMPTY_VECTOR_ACCESS](/docs/next/all-issue-types#empty_vector_access)
- [IVAR_NOT_NULL_CHECKED](/docs/next/all-issue-types#ivar_not_null_checked) - [IVAR_NOT_NULL_CHECKED](/docs/next/all-issue-types#ivar_not_null_checked)
- [NULL_DEREFERENCE](/docs/next/all-issue-types#null_dereference) - [NULL_DEREFERENCE](/docs/next/all-issue-types#null_dereference)
- [PARAMETER_NOT_NULL_CHECKED](/docs/next/all-issue-types#parameter_not_null_checked) - [PARAMETER_NOT_NULL_CHECKED](/docs/next/all-issue-types#parameter_not_null_checked)
- [POINTER_SIZE_MISMATCH](/docs/next/all-issue-types#pointer_size_mismatch)
- [PREMATURE_NIL_TERMINATION_ARGUMENT](/docs/next/all-issue-types#premature_nil_termination_argument) - [PREMATURE_NIL_TERMINATION_ARGUMENT](/docs/next/all-issue-types#premature_nil_termination_argument)
- [RESOURCE_LEAK](/docs/next/all-issue-types#resource_leak) - [RESOURCE_LEAK](/docs/next/all-issue-types#resource_leak)
- [RETAIN_CYCLE](/docs/next/all-issue-types#retain_cycle) - [RETAIN_CYCLE](/docs/next/all-issue-types#retain_cycle)
- [SKIP_POINTER_DEREFERENCE](/docs/next/all-issue-types#skip_pointer_dereference)
- [UNARY_MINUS_APPLIED_TO_UNSIGNED_EXPRESSION](/docs/next/all-issue-types#unary_minus_applied_to_unsigned_expression)

@ -21,9 +21,7 @@ The following issue types are reported by this checker:
- [BUFFER_OVERRUN_L3](/docs/next/all-issue-types#buffer_overrun_l3) - [BUFFER_OVERRUN_L3](/docs/next/all-issue-types#buffer_overrun_l3)
- [BUFFER_OVERRUN_L4](/docs/next/all-issue-types#buffer_overrun_l4) - [BUFFER_OVERRUN_L4](/docs/next/all-issue-types#buffer_overrun_l4)
- [BUFFER_OVERRUN_L5](/docs/next/all-issue-types#buffer_overrun_l5) - [BUFFER_OVERRUN_L5](/docs/next/all-issue-types#buffer_overrun_l5)
- [BUFFER_OVERRUN_R2](/docs/next/all-issue-types#buffer_overrun_r2)
- [BUFFER_OVERRUN_S2](/docs/next/all-issue-types#buffer_overrun_s2) - [BUFFER_OVERRUN_S2](/docs/next/all-issue-types#buffer_overrun_s2)
- [BUFFER_OVERRUN_T1](/docs/next/all-issue-types#buffer_overrun_t1)
- [BUFFER_OVERRUN_U5](/docs/next/all-issue-types#buffer_overrun_u5) - [BUFFER_OVERRUN_U5](/docs/next/all-issue-types#buffer_overrun_u5)
- [CONDITION_ALWAYS_FALSE](/docs/next/all-issue-types#condition_always_false) - [CONDITION_ALWAYS_FALSE](/docs/next/all-issue-types#condition_always_false)
- [CONDITION_ALWAYS_TRUE](/docs/next/all-issue-types#condition_always_true) - [CONDITION_ALWAYS_TRUE](/docs/next/all-issue-types#condition_always_true)
@ -32,10 +30,8 @@ The following issue types are reported by this checker:
- [INFERBO_ALLOC_IS_ZERO](/docs/next/all-issue-types#inferbo_alloc_is_zero) - [INFERBO_ALLOC_IS_ZERO](/docs/next/all-issue-types#inferbo_alloc_is_zero)
- [INFERBO_ALLOC_MAY_BE_BIG](/docs/next/all-issue-types#inferbo_alloc_may_be_big) - [INFERBO_ALLOC_MAY_BE_BIG](/docs/next/all-issue-types#inferbo_alloc_may_be_big)
- [INFERBO_ALLOC_MAY_BE_NEGATIVE](/docs/next/all-issue-types#inferbo_alloc_may_be_negative) - [INFERBO_ALLOC_MAY_BE_NEGATIVE](/docs/next/all-issue-types#inferbo_alloc_may_be_negative)
- [INFERBO_ALLOC_MAY_BE_TAINTED](/docs/next/all-issue-types#inferbo_alloc_may_be_tainted)
- [INTEGER_OVERFLOW_L1](/docs/next/all-issue-types#integer_overflow_l1) - [INTEGER_OVERFLOW_L1](/docs/next/all-issue-types#integer_overflow_l1)
- [INTEGER_OVERFLOW_L2](/docs/next/all-issue-types#integer_overflow_l2) - [INTEGER_OVERFLOW_L2](/docs/next/all-issue-types#integer_overflow_l2)
- [INTEGER_OVERFLOW_L5](/docs/next/all-issue-types#integer_overflow_l5) - [INTEGER_OVERFLOW_L5](/docs/next/all-issue-types#integer_overflow_l5)
- [INTEGER_OVERFLOW_R2](/docs/next/all-issue-types#integer_overflow_r2)
- [INTEGER_OVERFLOW_U5](/docs/next/all-issue-types#integer_overflow_u5) - [INTEGER_OVERFLOW_U5](/docs/next/all-issue-types#integer_overflow_u5)
- [UNREACHABLE_CODE](/docs/next/all-issue-types#unreachable_code) - [UNREACHABLE_CODE](/docs/next/all-issue-types#unreachable_code)

@ -0,0 +1,19 @@
---
title: "Config Checks between Markers"
description: "[EXPERIMENTAL] Collects config checks between marker start and end."
---
[EXPERIMENTAL] Collects config checks between marker start and end.
Activate with `--config-checks-between-markers`.
Supported languages:
- C/C++/ObjC: No
- Java: Experimental
This checker is currently only useful for certain Facebook code.
## List of Issue Types
The following issue types are reported by this checker:
- [CONFIG_CHECKS_BETWEEN_MARKERS](/docs/next/all-issue-types#config_checks_between_markers)

@ -91,11 +91,20 @@ class C {
## List of Issue Types ## List of Issue Types
The following issue types are reported by this checker: The following issue types are reported by this checker:
- [ERADICATE_BAD_NESTED_CLASS_ANNOTATION](/docs/next/all-issue-types#eradicate_bad_nested_class_annotation)
- [ERADICATE_CONDITION_REDUNDANT](/docs/next/all-issue-types#eradicate_condition_redundant) - [ERADICATE_CONDITION_REDUNDANT](/docs/next/all-issue-types#eradicate_condition_redundant)
- [ERADICATE_FIELD_NOT_INITIALIZED](/docs/next/all-issue-types#eradicate_field_not_initialized) - [ERADICATE_FIELD_NOT_INITIALIZED](/docs/next/all-issue-types#eradicate_field_not_initialized)
- [ERADICATE_FIELD_NOT_NULLABLE](/docs/next/all-issue-types#eradicate_field_not_nullable) - [ERADICATE_FIELD_NOT_NULLABLE](/docs/next/all-issue-types#eradicate_field_not_nullable)
- [ERADICATE_FIELD_OVER_ANNOTATED](/docs/next/all-issue-types#eradicate_field_over_annotated)
- [ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION](/docs/next/all-issue-types#eradicate_inconsistent_subclass_parameter_annotation) - [ERADICATE_INCONSISTENT_SUBCLASS_PARAMETER_ANNOTATION](/docs/next/all-issue-types#eradicate_inconsistent_subclass_parameter_annotation)
- [ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION](/docs/next/all-issue-types#eradicate_inconsistent_subclass_return_annotation) - [ERADICATE_INCONSISTENT_SUBCLASS_RETURN_ANNOTATION](/docs/next/all-issue-types#eradicate_inconsistent_subclass_return_annotation)
- [ERADICATE_META_CLASS_CAN_BE_NULLSAFE](/docs/next/all-issue-types#eradicate_meta_class_can_be_nullsafe)
- [ERADICATE_META_CLASS_IS_NULLSAFE](/docs/next/all-issue-types#eradicate_meta_class_is_nullsafe)
- [ERADICATE_META_CLASS_NEEDS_IMPROVEMENT](/docs/next/all-issue-types#eradicate_meta_class_needs_improvement)
- [ERADICATE_NULLABLE_DEREFERENCE](/docs/next/all-issue-types#eradicate_nullable_dereference)
- [ERADICATE_PARAMETER_NOT_NULLABLE](/docs/next/all-issue-types#eradicate_parameter_not_nullable) - [ERADICATE_PARAMETER_NOT_NULLABLE](/docs/next/all-issue-types#eradicate_parameter_not_nullable)
- [ERADICATE_REDUNDANT_NESTED_CLASS_ANNOTATION](/docs/next/all-issue-types#eradicate_redundant_nested_class_annotation)
- [ERADICATE_RETURN_NOT_NULLABLE](/docs/next/all-issue-types#eradicate_return_not_nullable) - [ERADICATE_RETURN_NOT_NULLABLE](/docs/next/all-issue-types#eradicate_return_not_nullable)
- [ERADICATE_RETURN_OVER_ANNOTATED](/docs/next/all-issue-types#eradicate_return_over_annotated) - [ERADICATE_RETURN_OVER_ANNOTATED](/docs/next/all-issue-types#eradicate_return_over_annotated)
- [ERADICATE_UNCHECKED_USAGE_IN_NULLSAFE](/docs/next/all-issue-types#eradicate_unchecked_usage_in_nullsafe)
- [ERADICATE_UNVETTED_THIRD_PARTY_IN_NULLSAFE](/docs/next/all-issue-types#eradicate_unvetted_third_party_in_nullsafe)

@ -710,6 +710,8 @@ The following issue types are reported by this checker:
- [ASSIGN_POINTER_WARNING](/docs/next/all-issue-types#assign_pointer_warning) - [ASSIGN_POINTER_WARNING](/docs/next/all-issue-types#assign_pointer_warning)
- [BAD_POINTER_COMPARISON](/docs/next/all-issue-types#bad_pointer_comparison) - [BAD_POINTER_COMPARISON](/docs/next/all-issue-types#bad_pointer_comparison)
- [COMPONENT_FACTORY_FUNCTION](/docs/next/all-issue-types#component_factory_function) - [COMPONENT_FACTORY_FUNCTION](/docs/next/all-issue-types#component_factory_function)
- [COMPONENT_FILE_CYCLOMATIC_COMPLEXITY](/docs/next/all-issue-types#component_file_cyclomatic_complexity)
- [COMPONENT_FILE_LINE_COUNT](/docs/next/all-issue-types#component_file_line_count)
- [COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS](/docs/next/all-issue-types#component_initializer_with_side_effects) - [COMPONENT_INITIALIZER_WITH_SIDE_EFFECTS](/docs/next/all-issue-types#component_initializer_with_side_effects)
- [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](/docs/next/all-issue-types#component_with_multiple_factory_methods) - [COMPONENT_WITH_MULTIPLE_FACTORY_METHODS](/docs/next/all-issue-types#component_with_multiple_factory_methods)
- [COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS](/docs/next/all-issue-types#component_with_unconventional_superclass) - [COMPONENT_WITH_UNCONVENTIONAL_SUPERCLASS](/docs/next/all-issue-types#component_with_unconventional_superclass)

@ -23,3 +23,4 @@ The following issue types are reported by this checker:
- [USE_AFTER_DELETE](/docs/next/all-issue-types#use_after_delete) - [USE_AFTER_DELETE](/docs/next/all-issue-types#use_after_delete)
- [USE_AFTER_FREE](/docs/next/all-issue-types#use_after_free) - [USE_AFTER_FREE](/docs/next/all-issue-types#use_after_free)
- [USE_AFTER_LIFETIME](/docs/next/all-issue-types#use_after_lifetime) - [USE_AFTER_LIFETIME](/docs/next/all-issue-types#use_after_lifetime)
- [VECTOR_INVALIDATION](/docs/next/all-issue-types#vector_invalidation)

@ -0,0 +1,19 @@
---
title: "Resource Leak Lab Exercise"
description: "Toy checker for the \"resource leak\" write-your-own-checker exercise."
---
Toy checker for the "resource leak" write-your-own-checker exercise.
Activate with `--resource-leak-lab`.
Supported languages:
- C/C++/ObjC: No
- Java: Yes
This toy checker does nothing by default. Hack on it to make it report resource leaks! See the [lab instructions](https://github.com/facebook/infer/blob/master/infer/src/labs/README.md).
## List of Issue Types
The following issue types are reported by this checker:
- [LAB_RESOURCE_LEAK](/docs/next/all-issue-types#lab_resource_leak)

@ -11,3 +11,9 @@ Supported languages:
- C/C++/ObjC: Experimental - C/C++/ObjC: Experimental
- Java: Experimental - Java: Experimental
## List of Issue Types
The following issue types are reported by this checker:
- [TOPL_ERROR](/docs/next/all-issue-types#topl_error)

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:58 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>
@ -665,14 +665,6 @@ checker (0-4)</p>
<p style="margin-left:17%;">Limit of field depth of <p style="margin-left:17%;">Limit of field depth of
abstract location in buffer-overrun checker</p> abstract location in buffer-overrun checker</p>
<p style="margin-left:11%;"><b>--bo-service-handler-request</b></p>
<p style="margin-left:17%;">Activates: [EXPERIMENTAL] Use
taint flow of service handler requests in buffer overflow
checking. (Conversely:
<b>--no-bo-service-handler-request</b>)</p>
<h2>CLANG OPTIONS <h2>CLANG OPTIONS
<a name="CLANG OPTIONS"></a> <a name="CLANG OPTIONS"></a>
</h2> </h2>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:58 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:58 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:59 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:59 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:59 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>
@ -181,9 +181,7 @@ BUFFER_OVERRUN_L2 (enabled by default), <br>
BUFFER_OVERRUN_L3 (enabled by default), <br> BUFFER_OVERRUN_L3 (enabled by default), <br>
BUFFER_OVERRUN_L4 (disabled by default), <br> BUFFER_OVERRUN_L4 (disabled by default), <br>
BUFFER_OVERRUN_L5 (disabled by default), <br> BUFFER_OVERRUN_L5 (disabled by default), <br>
BUFFER_OVERRUN_R2 (enabled by default), <br>
BUFFER_OVERRUN_S2 (enabled by default), <br> BUFFER_OVERRUN_S2 (enabled by default), <br>
BUFFER_OVERRUN_T1 (enabled by default), <br>
BUFFER_OVERRUN_U5 (disabled by default), <br> BUFFER_OVERRUN_U5 (disabled by default), <br>
Bad_footprint (enabled by default), <br> Bad_footprint (enabled by default), <br>
CAPTURED_STRONG_SELF (enabled by default), <br> CAPTURED_STRONG_SELF (enabled by default), <br>
@ -230,8 +228,6 @@ EMPTY_VECTOR_ACCESS (enabled by default), <br>
ERADICATE_BAD_NESTED_CLASS_ANNOTATION (enabled by default), ERADICATE_BAD_NESTED_CLASS_ANNOTATION (enabled by default),
<br> <br>
ERADICATE_CONDITION_REDUNDANT (enabled by default), <br> ERADICATE_CONDITION_REDUNDANT (enabled by default), <br>
ERADICATE_CONDITION_REDUNDANT_NONNULL (enabled by default),
<br>
ERADICATE_FIELD_NOT_INITIALIZED (enabled by default), <br> ERADICATE_FIELD_NOT_INITIALIZED (enabled by default), <br>
ERADICATE_FIELD_NOT_NULLABLE (enabled by default), <br> ERADICATE_FIELD_NOT_NULLABLE (enabled by default), <br>
ERADICATE_FIELD_OVER_ANNOTATED (enabled by default), <br> ERADICATE_FIELD_OVER_ANNOTATED (enabled by default), <br>
@ -277,14 +273,12 @@ INFERBO_ALLOC_IS_NEGATIVE (enabled by default), <br>
INFERBO_ALLOC_IS_ZERO (enabled by default), <br> INFERBO_ALLOC_IS_ZERO (enabled by default), <br>
INFERBO_ALLOC_MAY_BE_BIG (enabled by default), <br> INFERBO_ALLOC_MAY_BE_BIG (enabled by default), <br>
INFERBO_ALLOC_MAY_BE_NEGATIVE (enabled by default), <br> INFERBO_ALLOC_MAY_BE_NEGATIVE (enabled by default), <br>
INFERBO_ALLOC_MAY_BE_TAINTED (enabled by default), <br>
INFINITE_EXECUTION_TIME (disabled by default), <br> INFINITE_EXECUTION_TIME (disabled by default), <br>
INHERENTLY_DANGEROUS_FUNCTION (enabled by default), <br> INHERENTLY_DANGEROUS_FUNCTION (enabled by default), <br>
INSECURE_INTENT_HANDLING (enabled by default), <br> INSECURE_INTENT_HANDLING (enabled by default), <br>
INTEGER_OVERFLOW_L1 (enabled by default), <br> INTEGER_OVERFLOW_L1 (enabled by default), <br>
INTEGER_OVERFLOW_L2 (enabled by default), <br> INTEGER_OVERFLOW_L2 (enabled by default), <br>
INTEGER_OVERFLOW_L5 (disabled by default), <br> INTEGER_OVERFLOW_L5 (disabled by default), <br>
INTEGER_OVERFLOW_R2 (enabled by default), <br>
INTEGER_OVERFLOW_U5 (disabled by default), <br> INTEGER_OVERFLOW_U5 (disabled by default), <br>
INTERFACE_NOT_THREAD_SAFE (enabled by default), <br> INTERFACE_NOT_THREAD_SAFE (enabled by default), <br>
INVARIANT_CALL (disabled by default), <br> INVARIANT_CALL (disabled by default), <br>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:59 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:09 2020 --> <!-- CreationDate: Fri Jun 19 10:50:59 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>

@ -1,5 +1,5 @@
<!-- Creator : groff version 1.22.4 --> <!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Thu Jun 18 15:37:10 2020 --> <!-- CreationDate: Fri Jun 19 10:50:59 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> "http://www.w3.org/TR/html4/loose.dtd">
<html> <html>
@ -235,15 +235,6 @@ checker (0-4)</p>
<p style="margin-left:17%;">Limit of field depth of <p style="margin-left:17%;">Limit of field depth of
abstract location in buffer-overrun checker</p> abstract location in buffer-overrun checker</p>
<p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br>
--bo-service-handler-request</b></p>
<p style="margin-left:17%;">Activates: [EXPERIMENTAL] Use
taint flow of service handler requests in buffer overflow
checking. (Conversely:
<b>--no-bo-service-handler-request</b>)</p>
<p style="margin-left:11%;">See also <p style="margin-left:11%;">See also
<b>infer-analyze</b>(1). <b><br> <b>infer-analyze</b>(1). <b><br>
--bootclasspath</b> <i>string</i></p> --bootclasspath</b> <i>string</i></p>
@ -668,9 +659,7 @@ BUFFER_OVERRUN_L2 (enabled by default), <br>
BUFFER_OVERRUN_L3 (enabled by default), <br> BUFFER_OVERRUN_L3 (enabled by default), <br>
BUFFER_OVERRUN_L4 (disabled by default), <br> BUFFER_OVERRUN_L4 (disabled by default), <br>
BUFFER_OVERRUN_L5 (disabled by default), <br> BUFFER_OVERRUN_L5 (disabled by default), <br>
BUFFER_OVERRUN_R2 (enabled by default), <br>
BUFFER_OVERRUN_S2 (enabled by default), <br> BUFFER_OVERRUN_S2 (enabled by default), <br>
BUFFER_OVERRUN_T1 (enabled by default), <br>
BUFFER_OVERRUN_U5 (disabled by default), <br> BUFFER_OVERRUN_U5 (disabled by default), <br>
Bad_footprint (enabled by default), <br> Bad_footprint (enabled by default), <br>
CAPTURED_STRONG_SELF (enabled by default), <br> CAPTURED_STRONG_SELF (enabled by default), <br>
@ -717,8 +706,6 @@ EMPTY_VECTOR_ACCESS (enabled by default), <br>
ERADICATE_BAD_NESTED_CLASS_ANNOTATION (enabled by default), ERADICATE_BAD_NESTED_CLASS_ANNOTATION (enabled by default),
<br> <br>
ERADICATE_CONDITION_REDUNDANT (enabled by default), <br> ERADICATE_CONDITION_REDUNDANT (enabled by default), <br>
ERADICATE_CONDITION_REDUNDANT_NONNULL (enabled by default),
<br>
ERADICATE_FIELD_NOT_INITIALIZED (enabled by default), <br> ERADICATE_FIELD_NOT_INITIALIZED (enabled by default), <br>
ERADICATE_FIELD_NOT_NULLABLE (enabled by default), <br> ERADICATE_FIELD_NOT_NULLABLE (enabled by default), <br>
ERADICATE_FIELD_OVER_ANNOTATED (enabled by default), <br> ERADICATE_FIELD_OVER_ANNOTATED (enabled by default), <br>
@ -764,14 +751,12 @@ INFERBO_ALLOC_IS_NEGATIVE (enabled by default), <br>
INFERBO_ALLOC_IS_ZERO (enabled by default), <br> INFERBO_ALLOC_IS_ZERO (enabled by default), <br>
INFERBO_ALLOC_MAY_BE_BIG (enabled by default), <br> INFERBO_ALLOC_MAY_BE_BIG (enabled by default), <br>
INFERBO_ALLOC_MAY_BE_NEGATIVE (enabled by default), <br> INFERBO_ALLOC_MAY_BE_NEGATIVE (enabled by default), <br>
INFERBO_ALLOC_MAY_BE_TAINTED (enabled by default), <br>
INFINITE_EXECUTION_TIME (disabled by default), <br> INFINITE_EXECUTION_TIME (disabled by default), <br>
INHERENTLY_DANGEROUS_FUNCTION (enabled by default), <br> INHERENTLY_DANGEROUS_FUNCTION (enabled by default), <br>
INSECURE_INTENT_HANDLING (enabled by default), <br> INSECURE_INTENT_HANDLING (enabled by default), <br>
INTEGER_OVERFLOW_L1 (enabled by default), <br> INTEGER_OVERFLOW_L1 (enabled by default), <br>
INTEGER_OVERFLOW_L2 (enabled by default), <br> INTEGER_OVERFLOW_L2 (enabled by default), <br>
INTEGER_OVERFLOW_L5 (disabled by default), <br> INTEGER_OVERFLOW_L5 (disabled by default), <br>
INTEGER_OVERFLOW_R2 (enabled by default), <br>
INTEGER_OVERFLOW_U5 (disabled by default), <br> INTEGER_OVERFLOW_U5 (disabled by default), <br>
INTERFACE_NOT_THREAD_SAFE (enabled by default), <br> INTERFACE_NOT_THREAD_SAFE (enabled by default), <br>
INVARIANT_CALL (disabled by default), <br> INVARIANT_CALL (disabled by default), <br>

@ -1,2 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>FbPatternMatch (infer.Absint.FbPatternMatch)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">Absint</a> &#x00BB; FbPatternMatch</nav><h1>Module <code>Absint.FbPatternMatch</code></h1></header><dl><dt class="spec value" id="val-is_subtype_of_fb_service_handler"><a href="#val-is_subtype_of_fb_service_handler" class="anchor"></a><code><span class="keyword">val</span> is_subtype_of_fb_service_handler : <a href="../../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>&#45;&gt;</span> bool</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

@ -1,2 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Absint__FbPatternMatch (infer.Absint__FbPatternMatch)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../index.html">infer</a> &#x00BB; Absint__FbPatternMatch</nav><h1>Module <code>Absint__FbPatternMatch</code></h1></header><dl><dt class="spec value" id="val-is_subtype_of_fb_service_handler"><a href="#val-is_subtype_of_fb_service_handler" class="anchor"></a><code><span class="keyword">val</span> is_subtype_of_fb_service_handler : <a href="../IR/Tenv/index.html#type-t">IR.Tenv.t</a> <span>&#45;&gt;</span> <a href="../IR/Typ/Name/index.html#type-t">IR.Typ.Name.t</a> <span>&#45;&gt;</span> bool</code></dt></dl></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Symb (infer.BO.Symb)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">BO</a> &#x00BB; Symb</nav><h1>Module <code>BO.Symb</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><div class="spec module" id="module-BoundEnd"><a href="#module-BoundEnd" class="anchor"></a><code><span class="keyword">module</span> <a href="BoundEnd/index.html">BoundEnd</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolPath"><a href="#module-SymbolPath" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolPath/index.html">SymbolPath</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Symbol"><a href="#module-Symbol" class="anchor"></a><code><span class="keyword">module</span> <a href="Symbol/index.html">Symbol</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolSet"><a href="#module-SymbolSet" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolSet/index.html">SymbolSet</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolMap"><a href="#module-SymbolMap" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolMap/index.html">SymbolMap</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolPathSet"><a href="#module-SymbolPathSet" class="anchor"></a><code><span class="keyword">module</span> SymbolPathSet : <a href="../../IStdlib/PrettyPrintable/index.html#module-type-PPSet">IStdlib.PrettyPrintable.PPSet</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../../IStdlib/PrettyPrintable/index.html#module-type-PPSet">PPSet</a>.elt = <a href="SymbolPath/index.html#type-partial">SymbolPath.partial</a></code></div></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Symb (infer.BO.Symb)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../../index.html">infer</a> &#x00BB; <a href="../index.html">BO</a> &#x00BB; Symb</nav><h1>Module <code>BO.Symb</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><div class="spec module" id="module-BoundEnd"><a href="#module-BoundEnd" class="anchor"></a><code><span class="keyword">module</span> <a href="BoundEnd/index.html">BoundEnd</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolPath"><a href="#module-SymbolPath" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolPath/index.html">SymbolPath</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Symbol"><a href="#module-Symbol" class="anchor"></a><code><span class="keyword">module</span> <a href="Symbol/index.html">Symbol</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolSet"><a href="#module-SymbolSet" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolSet/index.html">SymbolSet</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolMap"><a href="#module-SymbolMap" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolMap/index.html">SymbolMap</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,2 +1,2 @@
<!DOCTYPE html> <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>BO__Symb (infer.BO__Symb)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../index.html">infer</a> &#x00BB; BO__Symb</nav><h1>Module <code>BO__Symb</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><div class="spec module" id="module-BoundEnd"><a href="#module-BoundEnd" class="anchor"></a><code><span class="keyword">module</span> <a href="BoundEnd/index.html">BoundEnd</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolPath"><a href="#module-SymbolPath" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolPath/index.html">SymbolPath</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Symbol"><a href="#module-Symbol" class="anchor"></a><code><span class="keyword">module</span> <a href="Symbol/index.html">Symbol</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolSet"><a href="#module-SymbolSet" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolSet/index.html">SymbolSet</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolMap"><a href="#module-SymbolMap" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolMap/index.html">SymbolMap</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolPathSet"><a href="#module-SymbolPathSet" class="anchor"></a><code><span class="keyword">module</span> SymbolPathSet : <a href="../IStdlib/PrettyPrintable/index.html#module-type-PPSet">IStdlib.PrettyPrintable.PPSet</a> <span class="keyword">with</span> <span class="keyword">type</span> <a href="../IStdlib/PrettyPrintable/index.html#module-type-PPSet">PPSet</a>.elt = <a href="SymbolPath/index.html#type-partial">SymbolPath.partial</a></code></div></div></body></html> <html xmlns="http://www.w3.org/1999/xhtml"><head><title>BO__Symb (infer.BO__Symb)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> <a href="../index.html">infer</a> &#x00BB; BO__Symb</nav><h1>Module <code>BO__Symb</code></h1></header><div class="spec module" id="module-F"><a href="#module-F" class="anchor"></a><code><span class="keyword">module</span> F = Stdlib.Format</code></div><div class="spec module" id="module-BoundEnd"><a href="#module-BoundEnd" class="anchor"></a><code><span class="keyword">module</span> <a href="BoundEnd/index.html">BoundEnd</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolPath"><a href="#module-SymbolPath" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolPath/index.html">SymbolPath</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-Symbol"><a href="#module-Symbol" class="anchor"></a><code><span class="keyword">module</span> <a href="Symbol/index.html">Symbol</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolSet"><a href="#module-SymbolSet" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolSet/index.html">SymbolSet</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="spec module" id="module-SymbolMap"><a href="#module-SymbolMap" class="anchor"></a><code><span class="keyword">module</span> <a href="SymbolMap/index.html">SymbolMap</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save