Merge branch 'main' into redsun82/kotlin

This commit is contained in:
Paolo Tranquilli
2024-04-10 16:57:30 +02:00
293 changed files with 18445 additions and 2467 deletions

View File

@@ -9,6 +9,7 @@ dependencies:
codeql/dataflow: ${workspace}
codeql/rangeanalysis: ${workspace}
codeql/ssa: ${workspace}
codeql/typeflow: ${workspace}
codeql/tutorial: ${workspace}
codeql/util: ${workspace}
codeql/xml: ${workspace}

View File

@@ -6,6 +6,7 @@ private import DataFlowImplCommon as DataFlowImplCommon
private import DataFlowUtil
private import semmle.code.cpp.models.interfaces.PointerWrapper
private import DataFlowPrivate
private import TypeFlow
private import semmle.code.cpp.ir.ValueNumbering
/**
@@ -955,11 +956,7 @@ private module Cached {
* Holds if the address computed by `operand` is guaranteed to write
* to a specific address.
*/
private predicate isCertainAddress(Operand operand) {
valueNumberOfOperand(operand).getAnInstruction() instanceof VariableAddressInstruction
or
operand.getType() instanceof Cpp::ReferenceType
}
private predicate isCertainAddress(Operand operand) { isPointerToSingleObject(operand.getDef()) }
/**
* Holds if `address` is a use of an SSA variable rooted at `base`, and the

View File

@@ -0,0 +1,278 @@
private import cpp
private import semmle.code.cpp.ir.IR
private import codeql.typeflow.TypeFlow
private module Input implements TypeFlowInput<Location> {
/** Holds if `alloc` dynamically allocates a single object. */
private predicate isSingleObjectAllocation(AllocationExpr alloc) {
// i.e., `new int`;
alloc instanceof NewExpr
or
// i.e., `malloc(sizeof(int))`
exists(SizeofTypeOperator sizeOf | sizeOf = alloc.getSizeExpr() |
not sizeOf.getTypeOperand().getUnspecifiedType() instanceof ArrayType
)
}
/**
* Holds if `i` is the result of a dynamic allocation.
*
* `isObject` is `true` if the allocation allocated a single object,
* and `false` otherwise.
*/
private predicate isAllocation(Instruction i, boolean isObject) {
exists(AllocationExpr alloc | alloc = i.getUnconvertedResultExpression() |
if isSingleObjectAllocation(alloc) then isObject = true else isObject = false
)
}
private predicate hasExactSingleType(Instruction i) {
// The address of a variable is always a single object
i instanceof VariableAddressInstruction
or
// A reference always points to a single object
i.getResultLanguageType().hasUnspecifiedType(any(ReferenceType rt), false)
or
// `this` is never an array
i instanceof InitializeThisInstruction
or
// An allocation of a non-array object
isAllocation(i, true)
}
private predicate hasExactBufferType(Instruction i) {
// Anything with an array type is a buffer
i.getResultLanguageType().hasUnspecifiedType(any(ArrayType at), false)
or
// An allocation expression that we couldn't conclude allocated a single
// expression is assigned a buffer type.
isAllocation(i, false)
}
private newtype TTypeFlowNode =
TInstructionNode(Instruction i) or
TFunctionNode(IRFunction func)
abstract class TypeFlowNode extends TTypeFlowNode {
/** Gets a textual representation of this node. */
abstract string toString();
/**
* Gets the type of this node. This type may not be the most precise
* possible type, but will be used as a starting point of the analysis.
*/
abstract Type getType();
/** Gets the location of this node. */
abstract Location getLocation();
/** Gets the underlying `Instruction` of this node, if any. */
Instruction asInstruction() { none() }
/** Gets the underlying `IRFunction` of this node, if any. */
IRFunction asFunction() { none() }
/** Holds if the value of this node is always null. */
abstract predicate isNullValue();
}
private class InstructionNode extends TypeFlowNode, TInstructionNode {
Instruction instr;
InstructionNode() { this = TInstructionNode(instr) }
override string toString() { result = instr.toString() }
override Type getType() {
if hasExactSingleType(instr) then result.isSingle() else result.isBuffer()
}
override Location getLocation() { result = instr.getLocation() }
override Instruction asInstruction() { result = instr }
override predicate isNullValue() {
instr.(ConstantInstruction).getValue() = "0" and
instr.getResultIRType() instanceof IRAddressType
}
}
/** Gets the `TypeFlowNode` corresponding to `i`. */
additional InstructionNode instructionNode(Instruction i) { result.asInstruction() = i }
private class FunctionNode extends TypeFlowNode, TFunctionNode {
IRFunction func;
FunctionNode() { this = TFunctionNode(func) }
override string toString() { result = func.toString() }
Instruction getReturnValueInstruction() {
result = func.getReturnInstruction().(ReturnValueInstruction).getReturnValue()
}
override Type getType() { result = instructionNode(this.getReturnValueInstruction()).getType() }
override Location getLocation() { result = func.getLocation() }
override IRFunction asFunction() { result = func }
override predicate isNullValue() {
instructionNode(this.getReturnValueInstruction()).isNullValue()
}
}
/**
* Gets an ultimiate definition of `phi`. That is, an input to `phi` that is
* not itself a `PhiInstruction`.
*/
private Instruction getAnUltimateLocalDefinition(PhiInstruction phi) {
result = phi.getAnInput*() and not result instanceof PhiInstruction
}
/**
* Holds if this function is private (i.e., cannot be accessed outside its
* compilation unit). This means we can use a closed-world assumption about
* calls to this function.
*/
private predicate isPrivate(Function func) {
// static functions have internal linkage
func.isStatic()
or
// anonymous namespaces have internal linkage
func.getNamespace().getParentNamespace*().isAnonymous()
or
// private member functions are only called internally from inside the class
func.(MemberFunction).isPrivate()
}
/**
* Holds if `arg` is an argument for the parameter `p` in a private callable.
*/
pragma[nomagic]
private predicate privateParamArg(InitializeParameterInstruction p, Instruction arg) {
exists(CallInstruction call, int i, Function func |
call.getArgument(pragma[only_bind_into](i)) = arg and
func = call.getStaticCallTarget() and
func.getParameter(pragma[only_bind_into](i)) = p.getParameter() and
isPrivate(func)
)
}
predicate joinStep(TypeFlowNode n1, TypeFlowNode n2) {
// instruction -> phi
getAnUltimateLocalDefinition(n2.asInstruction()) = n1.asInstruction()
or
// return value -> function
n2.(FunctionNode).getReturnValueInstruction() = n1.asInstruction()
or
// function -> call
exists(Function func | func = n1.asFunction().getFunction() |
not func.isVirtual() and
n2.asInstruction().(CallInstruction).getStaticCallTarget() = func
)
or
// Argument -> parameter where the parameter's enclosing function
// is "private".
exists(Instruction arg, Instruction p |
privateParamArg(p, arg) and
n1.asInstruction() = arg and
n2.asInstruction() = p
)
}
/**
* Holds if knowing whether `i1` points to a single object or buffer implies
* knowing whether `i2` points to a single object or buffer.
*/
private predicate instructionStep(Instruction i1, Instruction i2) {
i2.(CopyInstruction).getSourceValue() = i1
or
i2.(CopyValueInstruction).getSourceValue() = i1
or
i2.(ConvertInstruction).getUnary() = i1
or
i2.(CheckedConvertOrNullInstruction).getUnary() = i1
or
i2.(InheritanceConversionInstruction).getUnary() = i1
or
i2.(PointerArithmeticInstruction).getLeft() = i1
}
predicate step(TypeFlowNode n1, TypeFlowNode n2) {
instructionStep(n1.asInstruction(), n2.asInstruction())
}
predicate isNullValue(TypeFlowNode n) { n.isNullValue() }
private newtype TType =
TSingle() or
TBuffer()
class Type extends TType {
string toString() {
this.isSingle() and
result = "Single"
or
this.isBuffer() and
result = "Buffer"
}
/** Holds if this type is the type that represents a single object. */
predicate isSingle() { this = TSingle() }
/** Holds if this type is the type that represents a buffer. */
predicate isBuffer() { this = TBuffer() }
/**
* Gets a super type of this type, if any.
*
* The type relation is `Single <: Buffer`.
*/
Type getASupertype() {
this.isSingle() and
result.isBuffer()
}
}
predicate exactTypeBase(TypeFlowNode n, Type t) {
exists(Instruction instr | instr = n.asInstruction() |
hasExactSingleType(instr) and t.isSingle()
or
hasExactBufferType(instr) and t.isBuffer()
)
}
pragma[nomagic]
private predicate upcastCand(TypeFlowNode n, Type t1, Type t2) {
exists(TypeFlowNode next |
step(n, next)
or
joinStep(n, next)
|
n.getType() = t1 and
next.getType() = t2 and
t1 != t2
)
}
private predicate upcast(TypeFlowNode n, Type t1) {
exists(Type t2 | upcastCand(n, t1, t2) |
// No need for transitive closure since the subtyping relation is just `Single <: Buffer`
t1.getASupertype() = t2
)
}
predicate typeFlowBaseCand(TypeFlowNode n, Type t) { upcast(n, t) }
}
private module TypeFlow = Make<Location, Input>;
/**
* Holds if `i` is an instruction that computes an address that points to a
* single object (as opposed to pointing into a buffer).
*/
pragma[nomagic]
predicate isPointerToSingleObject(Instruction i) {
TypeFlow::bestTypeFlow(Input::instructionNode(i), any(Input::Type t | t.isSingle()), _)
}

View File

@@ -41,3 +41,4 @@ private import implementations.SqLite3
private import implementations.PostgreSql
private import implementations.System
private import implementations.StructuredExceptionHandling
private import implementations.Fopen

View File

@@ -0,0 +1,50 @@
/**
* Provides implementation classes modeling `fopen` and various similar
* functions. See `semmle.code.cpp.models.Models` for usage information.
*/
import semmle.code.cpp.models.interfaces.Alias
import semmle.code.cpp.models.interfaces.SideEffect
/** The function `fopen` and friends. */
private class Fopen extends Function, AliasFunction, SideEffectFunction {
Fopen() {
this.hasGlobalOrStdName(["fopen", "fopen_s", "freopen"])
or
this.hasGlobalName(["_open", "_wfopen", "_fsopen", "_wfsopen", "_wopen"])
}
override predicate hasOnlySpecificWriteSideEffects() { any() }
override predicate hasOnlySpecificReadSideEffects() { any() }
override predicate parameterEscapesOnlyViaReturn(int i) { none() }
override predicate parameterNeverEscapes(int index) {
// None of the parameters escape
this.getParameter(index).getUnspecifiedType() instanceof PointerType
}
override predicate hasSpecificReadSideEffect(ParameterIndex i, boolean buffer) {
(
this.hasGlobalOrStdName(["fopen", "fopen_s"])
or
this.hasGlobalName(["_wfopen", "_fsopen", "_wfsopen"])
) and
i = [0, 1] and
buffer = true
or
this.hasGlobalOrStdName("freopen") and
(
i = [0, 1] and
buffer = true
or
i = 2 and
buffer = false
)
or
this.hasGlobalName(["_open", "_wopen"]) and
i = 0 and
buffer = true
}
}

View File

@@ -33,6 +33,7 @@ argHasPostUpdate
| test.cpp:67:29:67:35 | source1 | ArgumentNode is missing PostUpdateNode. |
| test.cpp:813:19:813:35 | * ... | ArgumentNode is missing PostUpdateNode. |
| test.cpp:848:23:848:25 | rpx | ArgumentNode is missing PostUpdateNode. |
| test.cpp:1057:19:1057:21 | * ... | ArgumentNode is missing PostUpdateNode. |
postWithInFlow
| BarrierGuard.cpp:49:6:49:6 | x [post update] | PostUpdateNode should not be the target of local flow. |
| BarrierGuard.cpp:60:7:60:7 | x [post update] | PostUpdateNode should not be the target of local flow. |
@@ -168,6 +169,13 @@ postWithInFlow
| test.cpp:1045:9:1045:11 | ref arg buf | PostUpdateNode should not be the target of local flow. |
| test.cpp:1051:5:1051:11 | content [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1052:9:1052:9 | a [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1056:5:1056:7 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1056:6:1056:7 | pp [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1062:53:1062:53 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1072:3:1072:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1072:4:1072:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1073:3:1073:4 | * ... [post update] | PostUpdateNode should not be the target of local flow. |
| test.cpp:1073:4:1073:4 | p [inner post update] | PostUpdateNode should not be the target of local flow. |
viableImplInCallContextTooLarge
uniqueParameterNodeAtPosition
uniqueParameterNodePosition

View File

@@ -1050,4 +1050,26 @@ void flow_out_of_address_with_local_flow() {
MyStruct a;
a.content = nullptr;
sink(&a); // $ SPURIOUS: ast
}
}
static void static_func_that_reassigns_pointer_before_sink(char** pp) { // $ ast-def=pp ir-def=*pp ir-def=**pp
*pp = "";
indirect_sink(*pp); // clean
}
void test_static_func_that_reassigns_pointer_before_sink() {
char* p = (char*)indirect_source();
static_func_that_reassigns_pointer_before_sink(&p);
}
void single_object_in_both_cases(bool b, int x, int y) {
int* p;
if(b) {
p = &x;
} else {
p = &y;
}
*p = source();
*p = 0;
sink(*p); // clean
}

View File

@@ -15,4 +15,5 @@ incorrectBaseType
| test.cpp:848:23:848:25 | (reference dereference) | Expected 'Node.getType()' to be int, but it was int * |
| test.cpp:854:10:854:36 | * ... | Expected 'Node.getType()' to be const int, but it was int |
| test.cpp:867:10:867:30 | * ... | Expected 'Node.getType()' to be const int, but it was int |
| test.cpp:1062:52:1062:53 | *& ... | Expected 'Node.getType()' to be char, but it was char * |
failures

View File

@@ -20163,6 +20163,30 @@ ir.cpp:
# 2430| Type = [ClassTemplateInstantiation,Struct] iterator<random_access_iterator_tag, char, ptrdiff_t, char *, char &>
# 2430| ValueCategory = lvalue
# 2432| getStmt(6): [ReturnStmt] return ...
# 2434| [TopLevelFunction] void param_with_destructor_by_value(ClassWithDestructor)
# 2434| <params>:
# 2434| getParameter(0): [Parameter] c
# 2434| Type = [Class] ClassWithDestructor
# 2434| getEntryPoint(): [BlockStmt] { ... }
# 2436| getStmt(0): [ReturnStmt] return ...
# 2438| [TopLevelFunction] void param_with_destructor_by_pointer(ClassWithDestructor*)
# 2438| <params>:
# 2438| getParameter(0): [Parameter] c
# 2438| Type = [PointerType] ClassWithDestructor *
# 2438| getEntryPoint(): [BlockStmt] { ... }
# 2440| getStmt(0): [ReturnStmt] return ...
# 2442| [TopLevelFunction] void param_with_destructor_by_ref(ClassWithDestructor&)
# 2442| <params>:
# 2442| getParameter(0): [Parameter] c
# 2442| Type = [LValueReferenceType] ClassWithDestructor &
# 2442| getEntryPoint(): [BlockStmt] { ... }
# 2444| getStmt(0): [ReturnStmt] return ...
# 2446| [TopLevelFunction] void param_with_destructor_by_rref(ClassWithDestructor&&)
# 2446| <params>:
# 2446| getParameter(0): [Parameter] c
# 2446| Type = [RValueReferenceType] ClassWithDestructor &&
# 2446| getEntryPoint(): [BlockStmt] { ... }
# 2448| getStmt(0): [ReturnStmt] return ...
perf-regression.cpp:
# 4| [CopyAssignmentOperator] Big& Big::operator=(Big const&)
# 4| <params>:

View File

@@ -15583,6 +15583,67 @@ ir.cpp:
# 2410| Block 13
# 2410| v2410_8(void) = Unreached :
# 2434| void param_with_destructor_by_value(ClassWithDestructor)
# 2434| Block 0
# 2434| v2434_1(void) = EnterFunction :
# 2434| m2434_2(unknown) = AliasedDefinition :
# 2434| m2434_3(unknown) = InitializeNonLocal :
# 2434| m2434_4(unknown) = Chi : total:m2434_2, partial:m2434_3
# 2434| r2434_5(glval<ClassWithDestructor>) = VariableAddress[c] :
# 2434| m2434_6(ClassWithDestructor) = InitializeParameter[c] : &:r2434_5
# 2436| v2436_1(void) = NoOp :
# 2434| v2434_7(void) = ReturnVoid :
# 2434| v2434_8(void) = AliasedUse : m2434_3
# 2434| v2434_9(void) = ExitFunction :
# 2438| void param_with_destructor_by_pointer(ClassWithDestructor*)
# 2438| Block 0
# 2438| v2438_1(void) = EnterFunction :
# 2438| m2438_2(unknown) = AliasedDefinition :
# 2438| m2438_3(unknown) = InitializeNonLocal :
# 2438| m2438_4(unknown) = Chi : total:m2438_2, partial:m2438_3
# 2438| r2438_5(glval<ClassWithDestructor *>) = VariableAddress[c] :
# 2438| m2438_6(ClassWithDestructor *) = InitializeParameter[c] : &:r2438_5
# 2438| r2438_7(ClassWithDestructor *) = Load[c] : &:r2438_5, m2438_6
# 2438| m2438_8(unknown) = InitializeIndirection[c] : &:r2438_7
# 2440| v2440_1(void) = NoOp :
# 2438| v2438_9(void) = ReturnIndirection[c] : &:r2438_7, m2438_8
# 2438| v2438_10(void) = ReturnVoid :
# 2438| v2438_11(void) = AliasedUse : m2438_3
# 2438| v2438_12(void) = ExitFunction :
# 2442| void param_with_destructor_by_ref(ClassWithDestructor&)
# 2442| Block 0
# 2442| v2442_1(void) = EnterFunction :
# 2442| m2442_2(unknown) = AliasedDefinition :
# 2442| m2442_3(unknown) = InitializeNonLocal :
# 2442| m2442_4(unknown) = Chi : total:m2442_2, partial:m2442_3
# 2442| r2442_5(glval<ClassWithDestructor &>) = VariableAddress[c] :
# 2442| m2442_6(ClassWithDestructor &) = InitializeParameter[c] : &:r2442_5
# 2442| r2442_7(ClassWithDestructor &) = Load[c] : &:r2442_5, m2442_6
# 2442| m2442_8(unknown) = InitializeIndirection[c] : &:r2442_7
# 2444| v2444_1(void) = NoOp :
# 2442| v2442_9(void) = ReturnIndirection[c] : &:r2442_7, m2442_8
# 2442| v2442_10(void) = ReturnVoid :
# 2442| v2442_11(void) = AliasedUse : m2442_3
# 2442| v2442_12(void) = ExitFunction :
# 2446| void param_with_destructor_by_rref(ClassWithDestructor&&)
# 2446| Block 0
# 2446| v2446_1(void) = EnterFunction :
# 2446| m2446_2(unknown) = AliasedDefinition :
# 2446| m2446_3(unknown) = InitializeNonLocal :
# 2446| m2446_4(unknown) = Chi : total:m2446_2, partial:m2446_3
# 2446| r2446_5(glval<ClassWithDestructor &&>) = VariableAddress[c] :
# 2446| m2446_6(ClassWithDestructor &&) = InitializeParameter[c] : &:r2446_5
# 2446| r2446_7(ClassWithDestructor &&) = Load[c] : &:r2446_5, m2446_6
# 2446| m2446_8(unknown) = InitializeIndirection[c] : &:r2446_7
# 2448| v2448_1(void) = NoOp :
# 2446| v2446_9(void) = ReturnIndirection[c] : &:r2446_7, m2446_8
# 2446| v2446_10(void) = ReturnVoid :
# 2446| v2446_11(void) = AliasedUse : m2446_3
# 2446| v2446_12(void) = ExitFunction :
perf-regression.cpp:
# 6| void Big::Big()
# 6| Block 0

View File

@@ -2431,4 +2431,20 @@ void initialization_with_temp_destructor() {
y += x;
}
void param_with_destructor_by_value(ClassWithDestructor c) {
// The call to ~ClassWithDestructor::ClassWithDestructor() seems to be missing here.
}
void param_with_destructor_by_pointer(ClassWithDestructor* c) {
// No destructor call should be here
}
void param_with_destructor_by_ref(ClassWithDestructor& c) {
// No destructor call should be here
}
void param_with_destructor_by_rref(ClassWithDestructor&& c) {
// No destructor call should be here
}
// semmle-extractor-options: -std=c++20 --clang

View File

@@ -12968,6 +12968,37 @@
| ir.cpp:2431:14:2431:14 | Load | m2430_17 |
| ir.cpp:2431:14:2431:14 | Right | r2431_3 |
| ir.cpp:2431:14:2431:14 | Unary | r2431_2 |
| ir.cpp:2434:6:2434:35 | ChiPartial | partial:m2434_3 |
| ir.cpp:2434:6:2434:35 | ChiTotal | total:m2434_2 |
| ir.cpp:2434:6:2434:35 | SideEffect | m2434_3 |
| ir.cpp:2434:57:2434:57 | Address | &:r2434_5 |
| ir.cpp:2438:6:2438:37 | ChiPartial | partial:m2438_3 |
| ir.cpp:2438:6:2438:37 | ChiTotal | total:m2438_2 |
| ir.cpp:2438:6:2438:37 | SideEffect | m2438_3 |
| ir.cpp:2438:60:2438:60 | Address | &:r2438_5 |
| ir.cpp:2438:60:2438:60 | Address | &:r2438_5 |
| ir.cpp:2438:60:2438:60 | Address | &:r2438_7 |
| ir.cpp:2438:60:2438:60 | Address | &:r2438_7 |
| ir.cpp:2438:60:2438:60 | Load | m2438_6 |
| ir.cpp:2438:60:2438:60 | SideEffect | m2438_8 |
| ir.cpp:2442:6:2442:33 | ChiPartial | partial:m2442_3 |
| ir.cpp:2442:6:2442:33 | ChiTotal | total:m2442_2 |
| ir.cpp:2442:6:2442:33 | SideEffect | m2442_3 |
| ir.cpp:2442:56:2442:56 | Address | &:r2442_5 |
| ir.cpp:2442:56:2442:56 | Address | &:r2442_5 |
| ir.cpp:2442:56:2442:56 | Address | &:r2442_7 |
| ir.cpp:2442:56:2442:56 | Address | &:r2442_7 |
| ir.cpp:2442:56:2442:56 | Load | m2442_6 |
| ir.cpp:2442:56:2442:56 | SideEffect | m2442_8 |
| ir.cpp:2446:6:2446:34 | ChiPartial | partial:m2446_3 |
| ir.cpp:2446:6:2446:34 | ChiTotal | total:m2446_2 |
| ir.cpp:2446:6:2446:34 | SideEffect | m2446_3 |
| ir.cpp:2446:58:2446:58 | Address | &:r2446_5 |
| ir.cpp:2446:58:2446:58 | Address | &:r2446_5 |
| ir.cpp:2446:58:2446:58 | Address | &:r2446_7 |
| ir.cpp:2446:58:2446:58 | Address | &:r2446_7 |
| ir.cpp:2446:58:2446:58 | Load | m2446_6 |
| ir.cpp:2446:58:2446:58 | SideEffect | m2446_8 |
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
| perf-regression.cpp:6:3:6:5 | Address | &:r6_5 |
| perf-regression.cpp:6:3:6:5 | Address | &:r6_7 |

View File

@@ -14362,6 +14362,63 @@ ir.cpp:
# 2410| v2410_5(void) = AliasedUse : ~m?
# 2410| v2410_6(void) = ExitFunction :
# 2434| void param_with_destructor_by_value(ClassWithDestructor)
# 2434| Block 0
# 2434| v2434_1(void) = EnterFunction :
# 2434| mu2434_2(unknown) = AliasedDefinition :
# 2434| mu2434_3(unknown) = InitializeNonLocal :
# 2434| r2434_4(glval<ClassWithDestructor>) = VariableAddress[c] :
# 2434| mu2434_5(ClassWithDestructor) = InitializeParameter[c] : &:r2434_4
# 2436| v2436_1(void) = NoOp :
# 2434| v2434_6(void) = ReturnVoid :
# 2434| v2434_7(void) = AliasedUse : ~m?
# 2434| v2434_8(void) = ExitFunction :
# 2438| void param_with_destructor_by_pointer(ClassWithDestructor*)
# 2438| Block 0
# 2438| v2438_1(void) = EnterFunction :
# 2438| mu2438_2(unknown) = AliasedDefinition :
# 2438| mu2438_3(unknown) = InitializeNonLocal :
# 2438| r2438_4(glval<ClassWithDestructor *>) = VariableAddress[c] :
# 2438| mu2438_5(ClassWithDestructor *) = InitializeParameter[c] : &:r2438_4
# 2438| r2438_6(ClassWithDestructor *) = Load[c] : &:r2438_4, ~m?
# 2438| mu2438_7(unknown) = InitializeIndirection[c] : &:r2438_6
# 2440| v2440_1(void) = NoOp :
# 2438| v2438_8(void) = ReturnIndirection[c] : &:r2438_6, ~m?
# 2438| v2438_9(void) = ReturnVoid :
# 2438| v2438_10(void) = AliasedUse : ~m?
# 2438| v2438_11(void) = ExitFunction :
# 2442| void param_with_destructor_by_ref(ClassWithDestructor&)
# 2442| Block 0
# 2442| v2442_1(void) = EnterFunction :
# 2442| mu2442_2(unknown) = AliasedDefinition :
# 2442| mu2442_3(unknown) = InitializeNonLocal :
# 2442| r2442_4(glval<ClassWithDestructor &>) = VariableAddress[c] :
# 2442| mu2442_5(ClassWithDestructor &) = InitializeParameter[c] : &:r2442_4
# 2442| r2442_6(ClassWithDestructor &) = Load[c] : &:r2442_4, ~m?
# 2442| mu2442_7(unknown) = InitializeIndirection[c] : &:r2442_6
# 2444| v2444_1(void) = NoOp :
# 2442| v2442_8(void) = ReturnIndirection[c] : &:r2442_6, ~m?
# 2442| v2442_9(void) = ReturnVoid :
# 2442| v2442_10(void) = AliasedUse : ~m?
# 2442| v2442_11(void) = ExitFunction :
# 2446| void param_with_destructor_by_rref(ClassWithDestructor&&)
# 2446| Block 0
# 2446| v2446_1(void) = EnterFunction :
# 2446| mu2446_2(unknown) = AliasedDefinition :
# 2446| mu2446_3(unknown) = InitializeNonLocal :
# 2446| r2446_4(glval<ClassWithDestructor &&>) = VariableAddress[c] :
# 2446| mu2446_5(ClassWithDestructor &&) = InitializeParameter[c] : &:r2446_4
# 2446| r2446_6(ClassWithDestructor &&) = Load[c] : &:r2446_4, ~m?
# 2446| mu2446_7(unknown) = InitializeIndirection[c] : &:r2446_6
# 2448| v2448_1(void) = NoOp :
# 2446| v2446_8(void) = ReturnIndirection[c] : &:r2446_6, ~m?
# 2446| v2446_9(void) = ReturnVoid :
# 2446| v2446_10(void) = AliasedUse : ~m?
# 2446| v2446_11(void) = ExitFunction :
perf-regression.cpp:
# 6| void Big::Big()
# 6| Block 0

View File

@@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Semmle.Util.Logging;
@@ -20,44 +19,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// assembly cache.
/// </param>
/// <param name="logger">Callback for progress.</param>
public AssemblyCache(IEnumerable<string> paths, IEnumerable<string> frameworkPaths, ILogger logger)
public AssemblyCache(IEnumerable<AssemblyLookupLocation> paths, IEnumerable<string> frameworkPaths, ILogger logger)
{
this.logger = logger;
foreach (var path in paths)
{
if (File.Exists(path))
{
dllsToIndex.Add(path);
continue;
}
if (Directory.Exists(path))
{
logger.LogInfo($"Finding reference DLLs in {path}...");
AddReferenceDirectory(path);
}
else
{
logger.LogInfo("AssemblyCache: Path not found: " + path);
}
dllsToIndex.AddRange(path.GetDlls(logger));
}
IndexReferences(frameworkPaths);
}
/// <summary>
/// Finds all assemblies nested within a directory
/// and adds them to its index.
/// (Indexing is performed at a later stage by IndexReferences()).
/// </summary>
/// <param name="dir">The directory to index.</param>
private void AddReferenceDirectory(string dir)
{
foreach (var dll in new DirectoryInfo(dir).EnumerateFiles("*.dll", SearchOption.AllDirectories))
{
dllsToIndex.Add(dll.FullName);
}
}
/// <summary>
/// Indexes all DLLs we have located.
/// Because this is a potentially time-consuming operation, it is put into a separate stage.

View File

@@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Semmle.Util.Logging;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
/// <summary>
/// Used to represent a path to an assembly or a directory containing assemblies
/// and a selector function to determine which files to include, when indexing the assemblies.
/// </summary>
internal sealed class AssemblyLookupLocation(string path, Func<string, bool> includeFileName, bool indexSubdirectories = true)
{
public string Path => path;
public AssemblyLookupLocation(string path) : this(path, _ => true) { }
public static implicit operator AssemblyLookupLocation(string path) => new(path);
/// <summary>
/// Finds all assemblies nested within the directory `path`
/// and adds them to the a list of assembly names to index.
/// Indexing is performed at a later stage. This only collects the names.
/// </summary>
/// <param name="dllsToIndex">List of dlls to index.</param>
/// <param name="logger">Logger.</param>
private void AddReferenceDirectory(List<string> dllsToIndex, ILogger logger)
{
try
{
var dlls = new DirectoryInfo(path).EnumerateFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = indexSubdirectories, MatchCasing = MatchCasing.CaseInsensitive, AttributesToSkip = FileAttributes.None });
if (!dlls.Any())
{
logger.LogWarning($"AssemblyLookupLocation: No DLLs found in the path '{path}'.");
return;
}
foreach (var dll in dlls)
{
if (includeFileName(dll.Name))
{
dllsToIndex.Add(dll.FullName);
}
else
{
logger.LogInfo($"AssemblyLookupLocation: Skipping {dll.FullName}.");
}
}
}
catch (Exception e)
{
logger.LogError($"AssemblyLookupLocation: Error while searching for DLLs in '{path}': {e.Message}");
}
}
/// <summary>
/// Returns a list of paths to all assemblies in `path` that should be indexed.
/// </summary>
/// <param name="logger">Logger</param>
public List<string> GetDlls(ILogger logger)
{
var dllsToIndex = new List<string>();
if (File.Exists(path))
{
if (includeFileName(System.IO.Path.GetFileName(path)))
{
dllsToIndex.Add(path);
}
else
{
logger.LogInfo($"AssemblyLookupLocation: Skipping {path}.");
}
return dllsToIndex;
}
if (Directory.Exists(path))
{
logger.LogInfo($"AssemblyLookupLocation: Finding reference DLLs in {path}...");
AddReferenceDirectory(dllsToIndex, logger);
}
else
{
logger.LogInfo("AssemblyLookupLocation: Path not found: " + path);
}
return dllsToIndex;
}
public override bool Equals(object? obj) =>
obj is AssemblyLookupLocation ap && path.Equals(ap.Path);
public override int GetHashCode() => path.GetHashCode();
public override string ToString() => path;
}
}

View File

@@ -0,0 +1,514 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using Semmle.Util;
namespace Semmle.Extraction.CSharp.DependencyFetching
{
public sealed partial class DependencyManager
{
private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable<string> allProjects, IEnumerable<string> allSolutions, HashSet<AssemblyLookupLocation> dllLocations)
{
try
{
var checkNugetFeedResponsiveness = EnvironmentVariables.GetBoolean(EnvironmentVariableNames.CheckNugetFeedResponsiveness);
if (checkNugetFeedResponsiveness && !CheckFeeds(allNonBinaryFiles))
{
DownloadMissingPackages(allNonBinaryFiles, dllLocations, withNugetConfig: false);
return;
}
using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger))
{
var count = nuget.InstallPackages();
if (nuget.PackageCount > 0)
{
CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString()));
CompilationInfos.Add(("Successfully restored packages.config files", count.ToString()));
}
}
var nugetPackageDlls = legacyPackageDirectory.DirInfo.GetFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = true });
var nugetPackageDllPaths = nugetPackageDlls.Select(f => f.FullName).ToHashSet();
var excludedPaths = nugetPackageDllPaths
.Where(path => IsPathInSubfolder(path, legacyPackageDirectory.DirInfo.FullName, "tools"))
.ToList();
if (nugetPackageDllPaths.Count > 0)
{
logger.LogInfo($"Restored {nugetPackageDllPaths.Count} Nuget DLLs.");
}
if (excludedPaths.Count > 0)
{
logger.LogInfo($"Excluding {excludedPaths.Count} Nuget DLLs.");
}
foreach (var excludedPath in excludedPaths)
{
logger.LogInfo($"Excluded Nuget DLL: {excludedPath}");
}
nugetPackageDllPaths.ExceptWith(excludedPaths);
dllLocations.UnionWith(nugetPackageDllPaths.Select(p => new AssemblyLookupLocation(p)));
}
catch (Exception exc)
{
logger.LogError($"Failed to restore Nuget packages with nuget.exe: {exc.Message}");
}
var restoredProjects = RestoreSolutions(allSolutions, out var assets1);
var projects = allProjects.Except(restoredProjects);
RestoreProjects(projects, out var assets2);
var dependencies = Assets.GetCompilationDependencies(logger, assets1.Union(assets2));
var paths = dependencies
.Paths
.Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d))
.ToList();
dllLocations.UnionWith(paths.Select(p => new AssemblyLookupLocation(p)));
LogAllUnusedPackages(dependencies);
DownloadMissingPackages(allNonBinaryFiles, dllLocations);
}
/// <summary>
/// Executes `dotnet restore` on all solution files in solutions.
/// As opposed to RestoreProjects this is not run in parallel using PLINQ
/// as `dotnet restore` on a solution already uses multiple threads for restoring
/// the projects (this can be disabled with the `--disable-parallel` flag).
/// Populates assets with the relative paths to the assets files generated by the restore.
/// Returns a list of projects that are up to date with respect to restore.
/// </summary>
/// <param name="solutions">A list of paths to solution files.</param>
private IEnumerable<string> RestoreSolutions(IEnumerable<string> solutions, out IEnumerable<string> assets)
{
var successCount = 0;
var nugetSourceFailures = 0;
var assetFiles = new List<string>();
var projects = solutions.SelectMany(solution =>
{
logger.LogInfo($"Restoring solution {solution}...");
var res = dotnet.Restore(new(solution, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
if (res.Success)
{
successCount++;
}
if (res.HasNugetPackageSourceError)
{
nugetSourceFailures++;
}
assetFiles.AddRange(res.AssetsFilePaths);
return res.RestoredProjects;
}).ToList();
assets = assetFiles;
CompilationInfos.Add(("Successfully restored solution files", successCount.ToString()));
CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString()));
CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString()));
return projects;
}
/// <summary>
/// Executes `dotnet restore` on all projects in projects.
/// This is done in parallel for performance reasons.
/// Populates assets with the relative paths to the assets files generated by the restore.
/// </summary>
/// <param name="projects">A list of paths to project files.</param>
private void RestoreProjects(IEnumerable<string> projects, out IEnumerable<string> assets)
{
var successCount = 0;
var nugetSourceFailures = 0;
var assetFiles = new List<string>();
var sync = new object();
Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = threads }, project =>
{
logger.LogInfo($"Restoring project {project}...");
var res = dotnet.Restore(new(project, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
lock (sync)
{
if (res.Success)
{
successCount++;
}
if (res.HasNugetPackageSourceError)
{
nugetSourceFailures++;
}
assetFiles.AddRange(res.AssetsFilePaths);
}
});
assets = assetFiles;
CompilationInfos.Add(("Successfully restored project files", successCount.ToString()));
CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString()));
}
private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<AssemblyLookupLocation> dllLocations, bool withNugetConfig = true)
{
var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(packageDirectory.DirInfo);
var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames();
var notYetDownloadedPackages = new HashSet<PackageReference>(fileContent.AllPackages);
foreach (var alreadyDownloadedPackage in alreadyDownloadedPackages)
{
notYetDownloadedPackages.Remove(new(alreadyDownloadedPackage, PackageReferenceSource.SdkCsProj));
}
foreach (var alreadyDownloadedLegacyPackage in alreadyDownloadedLegacyPackages)
{
notYetDownloadedPackages.Remove(new(alreadyDownloadedLegacyPackage, PackageReferenceSource.PackagesConfig));
}
if (notYetDownloadedPackages.Count == 0)
{
return;
}
var multipleVersions = notYetDownloadedPackages
.GroupBy(p => p.Name)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToList();
foreach (var package in multipleVersions)
{
logger.LogWarning($"Found multiple not yet restored packages with name '{package}'.");
notYetDownloadedPackages.Remove(new(package, PackageReferenceSource.PackagesConfig));
}
logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored");
var nugetConfig = withNugetConfig
? GetNugetConfig(allFiles)
: null;
CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString()));
var successCount = 0;
var sync = new object();
Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = threads }, package =>
{
var success = TryRestorePackageManually(package.Name, nugetConfig, package.PackageReferenceSource);
if (!success)
{
return;
}
lock (sync)
{
successCount++;
}
});
CompilationInfos.Add(("Successfully ran fallback nuget restore", successCount.ToString()));
dllLocations.Add(missingPackageDirectory.DirInfo.FullName);
}
private string[] GetAllNugetConfigs(List<FileInfo> allFiles) => allFiles.SelectFileNamesByName("nuget.config").ToArray();
private string? GetNugetConfig(List<FileInfo> allFiles)
{
var nugetConfigs = GetAllNugetConfigs(allFiles);
string? nugetConfig;
if (nugetConfigs.Length > 1)
{
logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}.");
nugetConfig = allFiles
.SelectRootFiles(sourceDir)
.SelectFileNamesByName("nuget.config")
.FirstOrDefault();
if (nugetConfig == null)
{
logger.LogInfo("Could not find a top-level nuget.config file.");
}
}
else
{
nugetConfig = nugetConfigs.FirstOrDefault();
}
if (nugetConfig != null)
{
logger.LogInfo($"Using nuget.config file {nugetConfig}.");
}
return nugetConfig;
}
private void LogAllUnusedPackages(DependencyContainer dependencies)
{
var allPackageDirectories = GetAllPackageDirectories();
logger.LogInfo($"Restored {allPackageDirectories.Count} packages");
logger.LogInfo($"Found {dependencies.Packages.Count} packages in project.assets.json files");
allPackageDirectories
.Where(package => !dependencies.Packages.Contains(package))
.Order()
.ForEach(package => logger.LogInfo($"Unused package: {package}"));
}
private ICollection<string> GetAllPackageDirectories()
{
return new DirectoryInfo(packageDirectory.DirInfo.FullName)
.EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false })
.Select(d => d.Name)
.ToList();
}
private static bool IsPathInSubfolder(string path, string rootFolder, string subFolder)
{
return path.IndexOf(
$"{Path.DirectorySeparatorChar}{subFolder}{Path.DirectorySeparatorChar}",
rootFolder.Length,
StringComparison.InvariantCultureIgnoreCase) >= 0;
}
private IEnumerable<string> GetRestoredLegacyPackageNames()
{
var oldPackageDirectories = GetRestoredPackageDirectoryNames(legacyPackageDirectory.DirInfo);
foreach (var oldPackageDirectory in oldPackageDirectories)
{
// nuget install restores packages to 'packagename.version' folders (dotnet restore to 'packagename/version' folders)
// typical folder names look like:
// newtonsoft.json.13.0.3
// there are more complex ones too, such as:
// runtime.tizen.4.0.0-armel.Microsoft.NETCore.DotNetHostResolver.2.0.0-preview2-25407-01
var match = LegacyNugetPackage().Match(oldPackageDirectory);
if (!match.Success)
{
logger.LogWarning($"Package directory '{oldPackageDirectory}' doesn't match the expected pattern.");
continue;
}
yield return match.Groups[1].Value.ToLowerInvariant();
}
}
private static IEnumerable<string> GetRestoredPackageDirectoryNames(DirectoryInfo root)
{
return Directory.GetDirectories(root.FullName)
.Select(d => Path.GetFileName(d).ToLowerInvariant());
}
private bool TryRestorePackageManually(string package, string? nugetConfig, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj)
{
logger.LogInfo($"Restoring package {package}...");
using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package, "missingpackages_workingdir"));
var success = dotnet.New(tempDir.DirInfo.FullName);
if (!success)
{
return false;
}
if (packageReferenceSource == PackageReferenceSource.PackagesConfig)
{
TryChangeTargetFrameworkMoniker(tempDir.DirInfo);
}
success = dotnet.AddPackage(tempDir.DirInfo.FullName, package);
if (!success)
{
return false;
}
var res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: nugetConfig));
if (!res.Success)
{
if (res.HasNugetPackageSourceError && nugetConfig is not null)
{
// Restore could not be completed because the listed source is unavailable. Try without the nuget.config:
res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: null, ForceReevaluation: true));
}
// TODO: the restore might fail, we could retry with
// - a prerelease (*-* instead of *) version of the package,
// - a different target framework moniker.
if (!res.Success)
{
logger.LogInfo($"Failed to restore nuget package {package}");
return false;
}
}
return true;
}
private void TryChangeTargetFrameworkMoniker(DirectoryInfo tempDir)
{
try
{
logger.LogInfo($"Changing the target framework moniker in {tempDir.FullName}...");
var csprojs = tempDir.GetFiles("*.csproj", new EnumerationOptions { RecurseSubdirectories = false, MatchCasing = MatchCasing.CaseInsensitive });
if (csprojs.Length != 1)
{
logger.LogError($"Could not find the .csproj file in {tempDir.FullName}, count = {csprojs.Length}");
return;
}
var csproj = csprojs[0];
var content = File.ReadAllText(csproj.FullName);
var matches = TargetFramework().Matches(content);
if (matches.Count == 0)
{
logger.LogError($"Could not find target framework in {csproj.FullName}");
}
else
{
content = TargetFramework().Replace(content, $"<TargetFramework>{FrameworkPackageNames.LatestNetFrameworkMoniker}</TargetFramework>", 1);
File.WriteAllText(csproj.FullName, content);
}
}
catch (Exception exc)
{
logger.LogError($"Failed to update target framework in {tempDir.FullName}: {exc}");
}
}
private static async Task ExecuteGetRequest(string address, HttpClient httpClient, CancellationToken cancellationToken)
{
using var stream = await httpClient.GetStreamAsync(address, cancellationToken);
var buffer = new byte[1024];
int bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
// do nothing
}
}
private bool IsFeedReachable(string feed)
{
logger.LogInfo($"Checking if Nuget feed '{feed}' is reachable...");
using HttpClient client = new();
int timeoutMilliSeconds = int.TryParse(Environment.GetEnvironmentVariable(EnvironmentVariableNames.NugetFeedResponsivenessInitialTimeout), out timeoutMilliSeconds)
? timeoutMilliSeconds
: 1000;
int tryCount = int.TryParse(Environment.GetEnvironmentVariable(EnvironmentVariableNames.NugetFeedResponsivenessRequestCount), out tryCount)
? tryCount
: 4;
for (var i = 0; i < tryCount; i++)
{
using var cts = new CancellationTokenSource();
cts.CancelAfter(timeoutMilliSeconds);
try
{
ExecuteGetRequest(feed, client, cts.Token).GetAwaiter().GetResult();
return true;
}
catch (Exception exc)
{
if (exc is TaskCanceledException tce &&
tce.CancellationToken == cts.Token &&
cts.Token.IsCancellationRequested)
{
logger.LogWarning($"Didn't receive answer from Nuget feed '{feed}' in {timeoutMilliSeconds}ms.");
timeoutMilliSeconds *= 2;
continue;
}
// We're only interested in timeouts.
logger.LogWarning($"Querying Nuget feed '{feed}' failed: {exc}");
return true;
}
}
logger.LogWarning($"Didn't receive answer from Nuget feed '{feed}'. Tried it {tryCount} times.");
return false;
}
private bool CheckFeeds(List<FileInfo> allFiles)
{
logger.LogInfo("Checking Nuget feeds...");
var feeds = GetAllFeeds(allFiles);
var excludedFeeds = Environment.GetEnvironmentVariable(EnvironmentVariableNames.ExcludedNugetFeedsFromResponsivenessCheck)
?.Split(" ", StringSplitOptions.RemoveEmptyEntries)
.ToHashSet() ?? [];
if (excludedFeeds.Count > 0)
{
logger.LogInfo($"Excluded Nuget feeds from responsiveness check: {string.Join(", ", excludedFeeds.OrderBy(f => f))}");
}
var allFeedsReachable = feeds.All(feed => excludedFeeds.Contains(feed) || IsFeedReachable(feed));
if (!allFeedsReachable)
{
logger.LogWarning("Found unreachable Nuget feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis.");
diagnosticsWriter.AddEntry(new DiagnosticMessage(
Language.CSharp,
"buildless/unreachable-feed",
"Found unreachable Nuget feed in C# analysis with build-mode 'none'",
visibility: new DiagnosticMessage.TspVisibility(statusPage: true, cliSummaryTable: true, telemetry: true),
markdownMessage: "Found unreachable Nuget feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis.",
severity: DiagnosticMessage.TspSeverity.Warning
));
}
CompilationInfos.Add(("All Nuget feeds reachable", allFeedsReachable ? "1" : "0"));
return allFeedsReachable;
}
private IEnumerable<string> GetFeeds(string nugetConfig)
{
logger.LogInfo($"Getting Nuget feeds from '{nugetConfig}'...");
var results = dotnet.GetNugetFeeds(nugetConfig);
var regex = EnabledNugetFeed();
foreach (var result in results)
{
var match = regex.Match(result);
if (!match.Success)
{
logger.LogError($"Failed to parse feed from '{result}'");
continue;
}
var url = match.Groups[1].Value;
if (!url.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase) &&
!url.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase))
{
logger.LogInfo($"Skipping feed '{url}' as it is not a valid URL.");
continue;
}
yield return url;
}
}
private HashSet<string> GetAllFeeds(List<FileInfo> allFiles)
{
var nugetConfigs = GetAllNugetConfigs(allFiles);
var feeds = nugetConfigs
.SelectMany(GetFeeds)
.Where(str => !string.IsNullOrWhiteSpace(str))
.ToHashSet();
if (feeds.Count > 0)
{
logger.LogInfo($"Found {feeds.Count} Nuget feeds in nuget.config files: {string.Join(", ", feeds.OrderBy(f => f))}");
}
else
{
logger.LogDebug("No Nuget feeds found in nuget.config files.");
}
return feeds;
}
[GeneratedRegex(@"<TargetFramework>.*</TargetFramework>", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex TargetFramework();
[GeneratedRegex(@"^(.+)\.(\d+\.\d+\.\d+(-(.+))?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex LegacyNugetPackage();
[GeneratedRegex(@"^E\s(.*)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex EnabledNugetFeed();
}
}

View File

@@ -5,7 +5,6 @@ using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Semmle.Util;
@@ -20,6 +19,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
{
private readonly AssemblyCache assemblyCache;
private readonly ILogger logger;
private readonly IDiagnosticsWriter diagnosticsWriter;
// Only used as a set, but ConcurrentDictionary is the only concurrent set in .NET.
private readonly IDictionary<string, bool> usedReferences = new ConcurrentDictionary<string, bool>();
@@ -45,13 +45,32 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// <summary>
/// Performs C# dependency fetching.
/// </summary>
/// <param name="options">Dependency fetching options</param>
/// <param name="srcDir">Path to directory containing source code.</param>
/// <param name="logger">Logger for dependency fetching progress.</param>
public DependencyManager(string srcDir, ILogger logger)
{
var startTime = DateTime.Now;
this.logger = logger;
var diagDirEnv = Environment.GetEnvironmentVariable(EnvironmentVariableNames.DiagnosticDir);
if (!string.IsNullOrWhiteSpace(diagDirEnv) &&
!Directory.Exists(diagDirEnv))
{
try
{
Directory.CreateDirectory(diagDirEnv);
}
catch (Exception e)
{
logger.LogError($"Failed to create diagnostic directory {diagDirEnv}: {e.Message}");
diagDirEnv = null;
}
}
this.diagnosticsWriter = new DiagnosticsStream(Path.Combine(
diagDirEnv ?? "",
$"dependency-manager-{DateTime.UtcNow:yyyyMMddHHmm}-{Environment.ProcessId}.jsonc"));
this.sourceDir = new DirectoryInfo(srcDir);
packageDirectory = new TemporaryDirectory(ComputeTempDirectory(sourceDir.FullName, "packages"));
@@ -71,9 +90,9 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
this.generatedSources = new();
var allProjects = allNonBinaryFiles.SelectFileNamesByExtension(".csproj").ToList();
var allSolutions = allNonBinaryFiles.SelectFileNamesByExtension(".sln").ToList();
var dllPaths = allFiles.SelectFileNamesByExtension(".dll").ToHashSet();
var dllLocations = allFiles.SelectFileNamesByExtension(".dll").Select(x => new AssemblyLookupLocation(x)).ToHashSet();
logger.LogInfo($"Found {allFiles.Count} files, {nonGeneratedSources.Count} source files, {allProjects.Count} project files, {allSolutions.Count} solution files, {dllPaths.Count} DLLs.");
logger.LogInfo($"Found {allFiles.Count} files, {nonGeneratedSources.Count} source files, {allProjects.Count} project files, {allSolutions.Count} solution files, {dllLocations.Count} DLLs.");
void startCallback(string s, bool silent)
{
@@ -102,12 +121,12 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
throw;
}
RestoreNugetPackages(allNonBinaryFiles, allProjects, allSolutions, dllPaths);
RestoreNugetPackages(allNonBinaryFiles, allProjects, allSolutions, dllLocations);
// Find DLLs in the .Net / Asp.Net Framework
// This needs to come after the nuget restore, because the nuget restore might fetch the .NET Core/Framework reference assemblies.
var frameworkLocations = AddFrameworkDlls(dllPaths);
var frameworkLocations = AddFrameworkDlls(dllLocations);
assemblyCache = new AssemblyCache(dllPaths, frameworkLocations, logger);
assemblyCache = new AssemblyCache(dllLocations, frameworkLocations, logger);
AnalyseSolutions(allSolutions);
foreach (var filename in assemblyCache.AllAssemblies.Select(a => a.Filename))
@@ -172,18 +191,17 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
]);
}
private HashSet<string> AddFrameworkDlls(HashSet<string> dllPaths)
private HashSet<string> AddFrameworkDlls(HashSet<AssemblyLookupLocation> dllLocations)
{
var frameworkLocations = new HashSet<string>();
var frameworkReferences = Environment.GetEnvironmentVariable(EnvironmentVariableNames.DotnetFrameworkReferences);
var frameworkReferencesUseSubfolders = Environment.GetEnvironmentVariable(EnvironmentVariableNames.DotnetFrameworkReferencesUseSubfolders);
_ = bool.TryParse(frameworkReferencesUseSubfolders, out var useSubfolders);
var useSubfolders = EnvironmentVariables.GetBoolean(EnvironmentVariableNames.DotnetFrameworkReferencesUseSubfolders);
if (!string.IsNullOrWhiteSpace(frameworkReferences))
{
RemoveFrameworkNugetPackages(dllPaths);
RemoveNugetPackageReference(FrameworkPackageNames.AspNetCoreFramework, dllPaths);
RemoveNugetPackageReference(FrameworkPackageNames.WindowsDesktopFramework, dllPaths);
RemoveFrameworkNugetPackages(dllLocations);
RemoveNugetPackageReference(FrameworkPackageNames.AspNetCoreFramework, dllLocations);
RemoveNugetPackageReference(FrameworkPackageNames.WindowsDesktopFramework, dllLocations);
var frameworkPaths = frameworkReferences.Split(Path.PathSeparator, StringSplitOptions.RemoveEmptyEntries);
@@ -195,108 +213,20 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
continue;
}
if (useSubfolders)
{
dllPaths.Add(path);
frameworkLocations.Add(path);
continue;
}
try
{
var dlls = Directory.GetFiles(path, "*.dll", new EnumerationOptions { RecurseSubdirectories = false, MatchCasing = MatchCasing.CaseInsensitive });
if (dlls.Length == 0)
{
logger.LogError($"No DLLs found in specified framework reference path '{path}'.");
continue;
}
dllPaths.UnionWith(dlls);
frameworkLocations.UnionWith(dlls);
}
catch (Exception e)
{
logger.LogError($"Error while searching for DLLs in '{path}': {e.Message}");
}
dllLocations.Add(new AssemblyLookupLocation(path, _ => true, useSubfolders));
frameworkLocations.Add(path);
}
return frameworkLocations;
}
AddNetFrameworkDlls(dllPaths, frameworkLocations);
AddAspNetCoreFrameworkDlls(dllPaths, frameworkLocations);
AddMicrosoftWindowsDesktopDlls(dllPaths, frameworkLocations);
AddNetFrameworkDlls(dllLocations, frameworkLocations);
AddAspNetCoreFrameworkDlls(dllLocations, frameworkLocations);
AddMicrosoftWindowsDesktopDlls(dllLocations, frameworkLocations);
return frameworkLocations;
}
private void RestoreNugetPackages(List<FileInfo> allNonBinaryFiles, IEnumerable<string> allProjects, IEnumerable<string> allSolutions, HashSet<string> dllPaths)
{
try
{
using (var nuget = new NugetPackages(sourceDir.FullName, legacyPackageDirectory, logger))
{
var count = nuget.InstallPackages();
if (nuget.PackageCount > 0)
{
CompilationInfos.Add(("packages.config files", nuget.PackageCount.ToString()));
CompilationInfos.Add(("Successfully restored packages.config files", count.ToString()));
}
}
var nugetPackageDlls = legacyPackageDirectory.DirInfo.GetFiles("*.dll", new EnumerationOptions { RecurseSubdirectories = true });
var nugetPackageDllPaths = nugetPackageDlls.Select(f => f.FullName).ToHashSet();
var excludedPaths = nugetPackageDllPaths
.Where(path => IsPathInSubfolder(path, legacyPackageDirectory.DirInfo.FullName, "tools"))
.ToList();
if (nugetPackageDllPaths.Count > 0)
{
logger.LogInfo($"Restored {nugetPackageDllPaths.Count} Nuget DLLs.");
}
if (excludedPaths.Count > 0)
{
logger.LogInfo($"Excluding {excludedPaths.Count} Nuget DLLs.");
}
foreach (var excludedPath in excludedPaths)
{
logger.LogInfo($"Excluded Nuget DLL: {excludedPath}");
}
nugetPackageDllPaths.ExceptWith(excludedPaths);
dllPaths.UnionWith(nugetPackageDllPaths);
}
catch (Exception exc)
{
logger.LogError($"Failed to restore Nuget packages with nuget.exe: {exc.Message}");
}
var restoredProjects = RestoreSolutions(allSolutions, out var assets1);
var projects = allProjects.Except(restoredProjects);
RestoreProjects(projects, out var assets2);
var dependencies = Assets.GetCompilationDependencies(logger, assets1.Union(assets2));
var paths = dependencies
.Paths
.Select(d => Path.Combine(packageDirectory.DirInfo.FullName, d))
.ToList();
dllPaths.UnionWith(paths);
LogAllUnusedPackages(dependencies);
DownloadMissingPackages(allNonBinaryFiles, dllPaths);
}
private static bool IsPathInSubfolder(string path, string rootFolder, string subFolder)
{
return path.IndexOf(
$"{Path.DirectorySeparatorChar}{subFolder}{Path.DirectorySeparatorChar}",
rootFolder.Length,
StringComparison.InvariantCultureIgnoreCase) >= 0;
}
private void RemoveNugetAnalyzerReferences()
{
var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant();
@@ -332,7 +262,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
private void SelectNewestFrameworkPath(string frameworkPath, string frameworkType, ISet<string> dllPaths, ISet<string> frameworkLocations)
private void SelectNewestFrameworkPath(string frameworkPath, string frameworkType, ISet<AssemblyLookupLocation> dllLocations, ISet<string> frameworkLocations)
{
var versionFolders = GetPackageVersionSubDirectories(frameworkPath);
if (versionFolders.Length > 1)
@@ -348,7 +278,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
selectedFrameworkFolder = frameworkPath;
}
dllPaths.Add(selectedFrameworkFolder);
dllLocations.Add(selectedFrameworkFolder);
frameworkLocations.Add(selectedFrameworkFolder);
logger.LogInfo($"Found {frameworkType} DLLs in NuGet packages at {selectedFrameworkFolder}.");
}
@@ -361,16 +291,16 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
.ToArray();
}
private void RemoveFrameworkNugetPackages(ISet<string> dllPaths, int fromIndex = 0)
private void RemoveFrameworkNugetPackages(ISet<AssemblyLookupLocation> dllLocations, int fromIndex = 0)
{
var packagesInPrioOrder = FrameworkPackageNames.NetFrameworks;
for (var i = fromIndex; i < packagesInPrioOrder.Length; i++)
{
RemoveNugetPackageReference(packagesInPrioOrder[i], dllPaths);
RemoveNugetPackageReference(packagesInPrioOrder[i], dllLocations);
}
}
private void AddNetFrameworkDlls(ISet<string> dllPaths, ISet<string> frameworkLocations)
private void AddNetFrameworkDlls(ISet<AssemblyLookupLocation> dllLocations, ISet<string> frameworkLocations)
{
// Multiple dotnet framework packages could be present.
// The order of the packages is important, we're adding the first one that is present in the nuget cache.
@@ -390,8 +320,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
dotnetFrameworkVersionVariantCount += GetPackageVersionSubDirectories(fp.Path!).Length;
}
SelectNewestFrameworkPath(frameworkPath.Path, ".NET Framework", dllPaths, frameworkLocations);
RemoveFrameworkNugetPackages(dllPaths, frameworkPath.Index + 1);
SelectNewestFrameworkPath(frameworkPath.Path, ".NET Framework", dllLocations, frameworkLocations);
RemoveFrameworkNugetPackages(dllLocations, frameworkPath.Index + 1);
return;
}
@@ -416,14 +346,21 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
runtimeLocation ??= Runtime.ExecutingRuntime;
if (runtimeLocation is null)
{
runtimeLocation ??= Runtime.ExecutingRuntime;
dllLocations.Add(new AssemblyLookupLocation(runtimeLocation, name => !name.StartsWith("Semmle.")));
}
else
{
dllLocations.Add(runtimeLocation);
}
logger.LogInfo($".NET runtime location selected: {runtimeLocation}");
dllPaths.Add(runtimeLocation);
frameworkLocations.Add(runtimeLocation);
}
private void RemoveNugetPackageReference(string packagePrefix, ISet<string> dllPaths)
private void RemoveNugetPackageReference(string packagePrefix, ISet<AssemblyLookupLocation> dllLocations)
{
var packageFolder = packageDirectory.DirInfo.FullName.ToLowerInvariant();
if (packageFolder == null)
@@ -432,10 +369,10 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
var packagePathPrefix = Path.Combine(packageFolder, packagePrefix.ToLowerInvariant());
var toRemove = dllPaths.Where(s => s.StartsWith(packagePathPrefix, StringComparison.InvariantCultureIgnoreCase));
var toRemove = dllLocations.Where(s => s.Path.StartsWith(packagePathPrefix, StringComparison.InvariantCultureIgnoreCase));
foreach (var path in toRemove)
{
dllPaths.Remove(path);
dllLocations.Remove(path);
logger.LogInfo($"Removed reference {path}");
}
}
@@ -445,7 +382,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return fileContent.IsNewProjectStructureUsed && fileContent.UseAspNetCoreDlls;
}
private void AddAspNetCoreFrameworkDlls(ISet<string> dllPaths, ISet<string> frameworkLocations)
private void AddAspNetCoreFrameworkDlls(ISet<AssemblyLookupLocation> dllLocations, ISet<string> frameworkLocations)
{
if (!IsAspNetCoreDetected())
{
@@ -455,23 +392,23 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
// First try to find ASP.NET Core assemblies in the NuGet packages
if (GetPackageDirectory(FrameworkPackageNames.AspNetCoreFramework, packageDirectory) is string aspNetCorePackage)
{
SelectNewestFrameworkPath(aspNetCorePackage, "ASP.NET Core", dllPaths, frameworkLocations);
SelectNewestFrameworkPath(aspNetCorePackage, "ASP.NET Core", dllLocations, frameworkLocations);
return;
}
if (Runtime.AspNetCoreRuntime is string aspNetCoreRuntime)
{
logger.LogInfo($"ASP.NET runtime location selected: {aspNetCoreRuntime}");
dllPaths.Add(aspNetCoreRuntime);
dllLocations.Add(aspNetCoreRuntime);
frameworkLocations.Add(aspNetCoreRuntime);
}
}
private void AddMicrosoftWindowsDesktopDlls(ISet<string> dllPaths, ISet<string> frameworkLocations)
private void AddMicrosoftWindowsDesktopDlls(ISet<AssemblyLookupLocation> dllLocations, ISet<string> frameworkLocations)
{
if (GetPackageDirectory(FrameworkPackageNames.WindowsDesktopFramework, packageDirectory) is string windowsDesktopApp)
{
SelectNewestFrameworkPath(windowsDesktopApp, "Windows Desktop App", dllPaths, frameworkLocations);
SelectNewestFrameworkPath(windowsDesktopApp, "Windows Desktop App", dllLocations, frameworkLocations);
}
}
@@ -483,27 +420,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
.FullName;
}
private ICollection<string> GetAllPackageDirectories()
{
return new DirectoryInfo(packageDirectory.DirInfo.FullName)
.EnumerateDirectories("*", new EnumerationOptions { MatchCasing = MatchCasing.CaseInsensitive, RecurseSubdirectories = false })
.Select(d => d.Name)
.ToList();
}
private void LogAllUnusedPackages(DependencyContainer dependencies)
{
var allPackageDirectories = GetAllPackageDirectories();
logger.LogInfo($"Restored {allPackageDirectories.Count} packages");
logger.LogInfo($"Found {dependencies.Packages.Count} packages in project.assets.json files");
allPackageDirectories
.Where(package => !dependencies.Packages.Contains(package))
.Order()
.ForEach(package => logger.LogInfo($"Unused package: {package}"));
}
private void GenerateSourceFileFromImplicitUsings()
{
var usings = new HashSet<string>();
@@ -807,269 +723,6 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
}
}
/// <summary>
/// Executes `dotnet restore` on all solution files in solutions.
/// As opposed to RestoreProjects this is not run in parallel using PLINQ
/// as `dotnet restore` on a solution already uses multiple threads for restoring
/// the projects (this can be disabled with the `--disable-parallel` flag).
/// Populates assets with the relative paths to the assets files generated by the restore.
/// Returns a list of projects that are up to date with respect to restore.
/// </summary>
/// <param name="solutions">A list of paths to solution files.</param>
private IEnumerable<string> RestoreSolutions(IEnumerable<string> solutions, out IEnumerable<string> assets)
{
var successCount = 0;
var nugetSourceFailures = 0;
var assetFiles = new List<string>();
var projects = solutions.SelectMany(solution =>
{
logger.LogInfo($"Restoring solution {solution}...");
var res = dotnet.Restore(new(solution, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
if (res.Success)
{
successCount++;
}
if (res.HasNugetPackageSourceError)
{
nugetSourceFailures++;
}
assetFiles.AddRange(res.AssetsFilePaths);
return res.RestoredProjects;
}).ToList();
assets = assetFiles;
CompilationInfos.Add(("Successfully restored solution files", successCount.ToString()));
CompilationInfos.Add(("Failed solution restore with package source error", nugetSourceFailures.ToString()));
CompilationInfos.Add(("Restored projects through solution files", projects.Count.ToString()));
return projects;
}
/// <summary>
/// Executes `dotnet restore` on all projects in projects.
/// This is done in parallel for performance reasons.
/// Populates assets with the relative paths to the assets files generated by the restore.
/// </summary>
/// <param name="projects">A list of paths to project files.</param>
private void RestoreProjects(IEnumerable<string> projects, out IEnumerable<string> assets)
{
var successCount = 0;
var nugetSourceFailures = 0;
var assetFiles = new List<string>();
var sync = new object();
Parallel.ForEach(projects, new ParallelOptions { MaxDegreeOfParallelism = threads }, project =>
{
logger.LogInfo($"Restoring project {project}...");
var res = dotnet.Restore(new(project, packageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: true));
lock (sync)
{
if (res.Success)
{
successCount++;
}
if (res.HasNugetPackageSourceError)
{
nugetSourceFailures++;
}
assetFiles.AddRange(res.AssetsFilePaths);
}
});
assets = assetFiles;
CompilationInfos.Add(("Successfully restored project files", successCount.ToString()));
CompilationInfos.Add(("Failed project restore with package source error", nugetSourceFailures.ToString()));
}
[GeneratedRegex(@"^(.+)\.(\d+\.\d+\.\d+(-(.+))?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex LegacyNugetPackage();
private static IEnumerable<string> GetRestoredPackageDirectoryNames(DirectoryInfo root)
{
return Directory.GetDirectories(root.FullName)
.Select(d => Path.GetFileName(d).ToLowerInvariant());
}
private IEnumerable<string> GetRestoredLegacyPackageNames()
{
var oldPackageDirectories = GetRestoredPackageDirectoryNames(legacyPackageDirectory.DirInfo);
foreach (var oldPackageDirectory in oldPackageDirectories)
{
// nuget install restores packages to 'packagename.version' folders (dotnet restore to 'packagename/version' folders)
// typical folder names look like:
// newtonsoft.json.13.0.3
// there are more complex ones too, such as:
// runtime.tizen.4.0.0-armel.Microsoft.NETCore.DotNetHostResolver.2.0.0-preview2-25407-01
var match = LegacyNugetPackage().Match(oldPackageDirectory);
if (!match.Success)
{
logger.LogWarning($"Package directory '{oldPackageDirectory}' doesn't match the expected pattern.");
continue;
}
yield return match.Groups[1].Value.ToLowerInvariant();
}
}
private void DownloadMissingPackages(List<FileInfo> allFiles, ISet<string> dllPaths)
{
var alreadyDownloadedPackages = GetRestoredPackageDirectoryNames(packageDirectory.DirInfo);
var alreadyDownloadedLegacyPackages = GetRestoredLegacyPackageNames();
var notYetDownloadedPackages = new HashSet<PackageReference>(fileContent.AllPackages);
foreach (var alreadyDownloadedPackage in alreadyDownloadedPackages)
{
notYetDownloadedPackages.Remove(new(alreadyDownloadedPackage, PackageReferenceSource.SdkCsProj));
}
foreach (var alreadyDownloadedLegacyPackage in alreadyDownloadedLegacyPackages)
{
notYetDownloadedPackages.Remove(new(alreadyDownloadedLegacyPackage, PackageReferenceSource.PackagesConfig));
}
if (notYetDownloadedPackages.Count == 0)
{
return;
}
var multipleVersions = notYetDownloadedPackages
.GroupBy(p => p.Name)
.Where(g => g.Count() > 1)
.Select(g => g.Key)
.ToList();
foreach (var package in multipleVersions)
{
logger.LogWarning($"Found multiple not yet restored packages with name '{package}'.");
notYetDownloadedPackages.Remove(new(package, PackageReferenceSource.PackagesConfig));
}
logger.LogInfo($"Found {notYetDownloadedPackages.Count} packages that are not yet restored");
var nugetConfigs = allFiles.SelectFileNamesByName("nuget.config").ToArray();
string? nugetConfig = null;
if (nugetConfigs.Length > 1)
{
logger.LogInfo($"Found multiple nuget.config files: {string.Join(", ", nugetConfigs)}.");
nugetConfig = allFiles
.SelectRootFiles(sourceDir)
.SelectFileNamesByName("nuget.config")
.FirstOrDefault();
if (nugetConfig == null)
{
logger.LogInfo("Could not find a top-level nuget.config file.");
}
}
else
{
nugetConfig = nugetConfigs.FirstOrDefault();
}
if (nugetConfig != null)
{
logger.LogInfo($"Using nuget.config file {nugetConfig}.");
}
CompilationInfos.Add(("Fallback nuget restore", notYetDownloadedPackages.Count.ToString()));
var successCount = 0;
var sync = new object();
Parallel.ForEach(notYetDownloadedPackages, new ParallelOptions { MaxDegreeOfParallelism = threads }, package =>
{
var success = TryRestorePackageManually(package.Name, nugetConfig, package.PackageReferenceSource);
if (!success)
{
return;
}
lock (sync)
{
successCount++;
}
});
CompilationInfos.Add(("Successfully ran fallback nuget restore", successCount.ToString()));
dllPaths.Add(missingPackageDirectory.DirInfo.FullName);
}
[GeneratedRegex(@"<TargetFramework>.*</TargetFramework>", RegexOptions.IgnoreCase | RegexOptions.Compiled | RegexOptions.Singleline)]
private static partial Regex TargetFramework();
private bool TryRestorePackageManually(string package, string? nugetConfig, PackageReferenceSource packageReferenceSource = PackageReferenceSource.SdkCsProj)
{
logger.LogInfo($"Restoring package {package}...");
using var tempDir = new TemporaryDirectory(ComputeTempDirectory(package, "missingpackages_workingdir"));
var success = dotnet.New(tempDir.DirInfo.FullName);
if (!success)
{
return false;
}
if (packageReferenceSource == PackageReferenceSource.PackagesConfig)
{
TryChangeTargetFrameworkMoniker(tempDir.DirInfo);
}
success = dotnet.AddPackage(tempDir.DirInfo.FullName, package);
if (!success)
{
return false;
}
var res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: nugetConfig));
if (!res.Success)
{
if (res.HasNugetPackageSourceError && nugetConfig is not null)
{
// Restore could not be completed because the listed source is unavailable. Try without the nuget.config:
res = dotnet.Restore(new(tempDir.DirInfo.FullName, missingPackageDirectory.DirInfo.FullName, ForceDotnetRefAssemblyFetching: false, PathToNugetConfig: null, ForceReevaluation: true));
}
// TODO: the restore might fail, we could retry with
// - a prerelease (*-* instead of *) version of the package,
// - a different target framework moniker.
if (!res.Success)
{
logger.LogInfo($"Failed to restore nuget package {package}");
return false;
}
}
return true;
}
private void TryChangeTargetFrameworkMoniker(DirectoryInfo tempDir)
{
try
{
logger.LogInfo($"Changing the target framework moniker in {tempDir.FullName}...");
var csprojs = tempDir.GetFiles("*.csproj", new EnumerationOptions { RecurseSubdirectories = false, MatchCasing = MatchCasing.CaseInsensitive });
if (csprojs.Length != 1)
{
logger.LogError($"Could not find the .csproj file in {tempDir.FullName}, count = {csprojs.Length}");
return;
}
var csproj = csprojs[0];
var content = File.ReadAllText(csproj.FullName);
var matches = TargetFramework().Matches(content);
if (matches.Count == 0)
{
logger.LogError($"Could not find target framework in {csproj.FullName}");
}
else
{
content = TargetFramework().Replace(content, $"<TargetFramework>{FrameworkPackageNames.LatestNetFrameworkMoniker}</TargetFramework>", 1);
File.WriteAllText(csproj.FullName, content);
}
}
catch (Exception exc)
{
logger.LogError($"Failed to update target framework in {tempDir.FullName}: {exc}");
}
}
public void Dispose(TemporaryDirectory? dir, string name)
{
try
@@ -1091,6 +744,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
{
Dispose(tempWorkingDirectory, "temporary working");
}
diagnosticsWriter?.Dispose();
}
}
}

View File

@@ -16,12 +16,14 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
public partial class DotNet : IDotNet
{
private readonly IDotNetCliInvoker dotnetCliInvoker;
private readonly ILogger logger;
private readonly TemporaryDirectory? tempWorkingDirectory;
private DotNet(IDotNetCliInvoker dotnetCliInvoker, ILogger logger, TemporaryDirectory? tempWorkingDirectory = null)
{
this.tempWorkingDirectory = tempWorkingDirectory;
this.dotnetCliInvoker = dotnetCliInvoker;
this.logger = logger;
Info();
}
@@ -89,17 +91,18 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return dotnetCliInvoker.RunCommand(args);
}
public IList<string> GetListedRuntimes() => GetListed("--list-runtimes");
public IList<string> GetListedRuntimes() => GetResultList("--list-runtimes");
public IList<string> GetListedSdks() => GetListed("--list-sdks");
public IList<string> GetListedSdks() => GetResultList("--list-sdks");
private IList<string> GetListed(string args)
private IList<string> GetResultList(string args)
{
if (dotnetCliInvoker.RunCommand(args, out var artifacts))
if (dotnetCliInvoker.RunCommand(args, out var results))
{
return artifacts;
return results;
}
return new List<string>();
logger.LogWarning($"Running 'dotnet {args}' failed.");
return [];
}
public bool Exec(string execArgs)
@@ -108,6 +111,8 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
return dotnetCliInvoker.RunCommand(args);
}
public IList<string> GetNugetFeeds(string nugetConfig) => GetResultList($"nuget list source --format Short --configfile \"{nugetConfig}\"");
// The version number should be kept in sync with the version .NET version used for building the application.
public const string LatestDotNetSdkVersion = "8.0.101";

View File

@@ -16,5 +16,30 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
/// Controls whether to use framework dependencies from subfolders.
/// </summary>
public const string DotnetFrameworkReferencesUseSubfolders = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_DOTNET_FRAMEWORK_REFERENCES_USE_SUBFOLDERS";
/// <summary>
/// Controls whether to check the responsiveness of NuGet feeds.
/// </summary>
public const string CheckNugetFeedResponsiveness = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK";
/// <summary>
/// Specifies the NuGet feeds to exclude from the responsiveness check. The value is a space-separated list of feed URLs.
/// </summary>
public const string ExcludedNugetFeedsFromResponsivenessCheck = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_EXCLUDED";
/// <summary>
/// Specifies the timeout (as an integer) in milliseconds for the initial check of NuGet feeds responsiveness. The value is then doubled for each subsequent check.
/// </summary>
public const string NugetFeedResponsivenessInitialTimeout = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_TIMEOUT";
/// <summary>
/// Specifies how many requests to make to the NuGet feed to check its responsiveness.
/// </summary>
public const string NugetFeedResponsivenessRequestCount = "CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_LIMIT";
/// <summary>
/// Specifies the location of the diagnostic directory.
/// </summary>
public const string DiagnosticDir = "CODEQL_EXTRACTOR_CSHARP_DIAGNOSTIC_DIR";
}
}

View File

@@ -13,6 +13,7 @@ namespace Semmle.Extraction.CSharp.DependencyFetching
IList<string> GetListedRuntimes();
IList<string> GetListedSdks();
bool Exec(string execArgs);
IList<string> GetNugetFeeds(string nugetConfig);
}
public record class RestoreSettings(string File, string PackageDirectory, bool ForceDotnetRefAssemblyFetching, string? PathToNugetConfig = null, bool ForceReevaluation = false);

View File

@@ -26,6 +26,8 @@ namespace Semmle.Extraction.Tests
public IList<string> GetListedSdks() => sdks;
public bool Exec(string execArgs) => true;
public IList<string> GetNugetFeeds(string nugetConfig) => [];
}
public class RuntimeTests

View File

@@ -27,5 +27,12 @@ namespace Semmle.Util
}
return threads;
}
public static bool GetBoolean(string name)
{
var env = Environment.GetEnvironmentVariable(name);
var _ = bool.TryParse(env, out var value);
return value;
}
}
}

View File

@@ -102,8 +102,7 @@ namespace Semmle.Util
private static async Task DownloadFileAsync(string address, string filename)
{
using var httpClient = new HttpClient();
using var request = new HttpRequestMessage(HttpMethod.Get, address);
using var contentStream = await (await httpClient.SendAsync(request)).Content.ReadAsStreamAsync();
using var contentStream = await httpClient.GetStreamAsync(address);
using var stream = new FileStream(filename, FileMode.Create, FileAccess.Write, FileShare.None, 4096, true);
await contentStream.CopyToAsync(stream);
}
@@ -112,7 +111,7 @@ namespace Semmle.Util
/// Downloads the file at <paramref name="address"/> to <paramref name="fileName"/>.
/// </summary>
public static void DownloadFile(string address, string fileName) =>
DownloadFileAsync(address, fileName).Wait();
DownloadFileAsync(address, fileName).GetAwaiter().GetResult();
public static string NestPaths(ILogger logger, string? outerpath, string innerpath)
{

View File

@@ -2,4 +2,4 @@ import csharp
from Class c
where c.fromSource()
select c, c.getBaseClass().getFullyQualifiedName()
select c, c.getBaseClass().getFullyQualifiedNameDebug()

View File

@@ -0,0 +1,201 @@
| [...]/Humanizer.dll |
| [...]/Microsoft.Bcl.AsyncInterfaces.dll |
| [...]/Microsoft.Build.Framework.dll |
| [...]/Microsoft.Build.dll |
| [...]/Microsoft.CSharp.dll |
| [...]/Microsoft.CodeAnalysis.CSharp.Workspaces.dll |
| [...]/Microsoft.CodeAnalysis.CSharp.dll |
| [...]/Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll |
| [...]/Microsoft.CodeAnalysis.VisualBasic.dll |
| [...]/Microsoft.CodeAnalysis.Workspaces.dll |
| [...]/Microsoft.CodeAnalysis.dll |
| [...]/Microsoft.NET.StringTools.dll |
| [...]/Microsoft.VisualBasic.Core.dll |
| [...]/Microsoft.VisualBasic.dll |
| [...]/Microsoft.Win32.Primitives.dll |
| [...]/Microsoft.Win32.Registry.dll |
| [...]/Microsoft.Win32.SystemEvents.dll |
| [...]/Mono.Posix.NETStandard.dll |
| [...]/Newtonsoft.Json.dll |
| [...]/System.AppContext.dll |
| [...]/System.Buffers.dll |
| [...]/System.Collections.Concurrent.dll |
| [...]/System.Collections.Immutable.dll |
| [...]/System.Collections.NonGeneric.dll |
| [...]/System.Collections.Specialized.dll |
| [...]/System.Collections.dll |
| [...]/System.ComponentModel.Annotations.dll |
| [...]/System.ComponentModel.DataAnnotations.dll |
| [...]/System.ComponentModel.EventBasedAsync.dll |
| [...]/System.ComponentModel.Primitives.dll |
| [...]/System.ComponentModel.TypeConverter.dll |
| [...]/System.ComponentModel.dll |
| [...]/System.Composition.AttributedModel.dll |
| [...]/System.Composition.Convention.dll |
| [...]/System.Composition.Hosting.dll |
| [...]/System.Composition.Runtime.dll |
| [...]/System.Composition.TypedParts.dll |
| [...]/System.Configuration.ConfigurationManager.dll |
| [...]/System.Configuration.dll |
| [...]/System.Console.dll |
| [...]/System.Core.dll |
| [...]/System.Data.Common.dll |
| [...]/System.Data.DataSetExtensions.dll |
| [...]/System.Data.dll |
| [...]/System.Diagnostics.Contracts.dll |
| [...]/System.Diagnostics.Debug.dll |
| [...]/System.Diagnostics.DiagnosticSource.dll |
| [...]/System.Diagnostics.EventLog.dll |
| [...]/System.Diagnostics.FileVersionInfo.dll |
| [...]/System.Diagnostics.Process.dll |
| [...]/System.Diagnostics.StackTrace.dll |
| [...]/System.Diagnostics.TextWriterTraceListener.dll |
| [...]/System.Diagnostics.Tools.dll |
| [...]/System.Diagnostics.TraceSource.dll |
| [...]/System.Diagnostics.Tracing.dll |
| [...]/System.Drawing.Common.dll |
| [...]/System.Drawing.Primitives.dll |
| [...]/System.Drawing.dll |
| [...]/System.Dynamic.Runtime.dll |
| [...]/System.Formats.Asn1.dll |
| [...]/System.Formats.Tar.dll |
| [...]/System.Globalization.Calendars.dll |
| [...]/System.Globalization.Extensions.dll |
| [...]/System.Globalization.dll |
| [...]/System.IO.Compression.Brotli.dll |
| [...]/System.IO.Compression.FileSystem.dll |
| [...]/System.IO.Compression.ZipFile.dll |
| [...]/System.IO.Compression.dll |
| [...]/System.IO.FileSystem.AccessControl.dll |
| [...]/System.IO.FileSystem.DriveInfo.dll |
| [...]/System.IO.FileSystem.Primitives.dll |
| [...]/System.IO.FileSystem.Watcher.dll |
| [...]/System.IO.FileSystem.dll |
| [...]/System.IO.IsolatedStorage.dll |
| [...]/System.IO.MemoryMappedFiles.dll |
| [...]/System.IO.Pipelines.dll |
| [...]/System.IO.Pipes.AccessControl.dll |
| [...]/System.IO.Pipes.dll |
| [...]/System.IO.UnmanagedMemoryStream.dll |
| [...]/System.IO.dll |
| [...]/System.Linq.Expressions.dll |
| [...]/System.Linq.Parallel.dll |
| [...]/System.Linq.Queryable.dll |
| [...]/System.Linq.dll |
| [...]/System.Memory.dll |
| [...]/System.Net.Http.Json.dll |
| [...]/System.Net.Http.dll |
| [...]/System.Net.HttpListener.dll |
| [...]/System.Net.Mail.dll |
| [...]/System.Net.NameResolution.dll |
| [...]/System.Net.NetworkInformation.dll |
| [...]/System.Net.Ping.dll |
| [...]/System.Net.Primitives.dll |
| [...]/System.Net.Quic.dll |
| [...]/System.Net.Requests.dll |
| [...]/System.Net.Security.dll |
| [...]/System.Net.ServicePoint.dll |
| [...]/System.Net.Sockets.dll |
| [...]/System.Net.WebClient.dll |
| [...]/System.Net.WebHeaderCollection.dll |
| [...]/System.Net.WebProxy.dll |
| [...]/System.Net.WebSockets.Client.dll |
| [...]/System.Net.WebSockets.dll |
| [...]/System.Net.dll |
| [...]/System.Numerics.Vectors.dll |
| [...]/System.Numerics.dll |
| [...]/System.ObjectModel.dll |
| [...]/System.Private.CoreLib.dll |
| [...]/System.Private.DataContractSerialization.dll |
| [...]/System.Private.Uri.dll |
| [...]/System.Private.Xml.Linq.dll |
| [...]/System.Private.Xml.dll |
| [...]/System.Reflection.DispatchProxy.dll |
| [...]/System.Reflection.Emit.ILGeneration.dll |
| [...]/System.Reflection.Emit.Lightweight.dll |
| [...]/System.Reflection.Emit.dll |
| [...]/System.Reflection.Extensions.dll |
| [...]/System.Reflection.Metadata.dll |
| [...]/System.Reflection.MetadataLoadContext.dll |
| [...]/System.Reflection.Primitives.dll |
| [...]/System.Reflection.TypeExtensions.dll |
| [...]/System.Reflection.dll |
| [...]/System.Resources.Reader.dll |
| [...]/System.Resources.ResourceManager.dll |
| [...]/System.Resources.Writer.dll |
| [...]/System.Runtime.CompilerServices.Unsafe.dll |
| [...]/System.Runtime.CompilerServices.VisualC.dll |
| [...]/System.Runtime.Extensions.dll |
| [...]/System.Runtime.Handles.dll |
| [...]/System.Runtime.InteropServices.JavaScript.dll |
| [...]/System.Runtime.InteropServices.RuntimeInformation.dll |
| [...]/System.Runtime.InteropServices.dll |
| [...]/System.Runtime.Intrinsics.dll |
| [...]/System.Runtime.Loader.dll |
| [...]/System.Runtime.Numerics.dll |
| [...]/System.Runtime.Serialization.Formatters.dll |
| [...]/System.Runtime.Serialization.Json.dll |
| [...]/System.Runtime.Serialization.Primitives.dll |
| [...]/System.Runtime.Serialization.Xml.dll |
| [...]/System.Runtime.Serialization.dll |
| [...]/System.Runtime.dll |
| [...]/System.Security.AccessControl.dll |
| [...]/System.Security.Claims.dll |
| [...]/System.Security.Cryptography.Algorithms.dll |
| [...]/System.Security.Cryptography.Cng.dll |
| [...]/System.Security.Cryptography.Csp.dll |
| [...]/System.Security.Cryptography.Encoding.dll |
| [...]/System.Security.Cryptography.OpenSsl.dll |
| [...]/System.Security.Cryptography.Primitives.dll |
| [...]/System.Security.Cryptography.ProtectedData.dll |
| [...]/System.Security.Cryptography.X509Certificates.dll |
| [...]/System.Security.Cryptography.dll |
| [...]/System.Security.Permissions.dll |
| [...]/System.Security.Principal.Windows.dll |
| [...]/System.Security.Principal.dll |
| [...]/System.Security.SecureString.dll |
| [...]/System.Security.dll |
| [...]/System.ServiceModel.Web.dll |
| [...]/System.ServiceProcess.dll |
| [...]/System.Text.Encoding.CodePages.dll |
| [...]/System.Text.Encoding.Extensions.dll |
| [...]/System.Text.Encoding.dll |
| [...]/System.Text.Encodings.Web.dll |
| [...]/System.Text.Json.dll |
| [...]/System.Text.RegularExpressions.dll |
| [...]/System.Threading.Channels.dll |
| [...]/System.Threading.Overlapped.dll |
| [...]/System.Threading.Tasks.Dataflow.dll |
| [...]/System.Threading.Tasks.Extensions.dll |
| [...]/System.Threading.Tasks.Parallel.dll |
| [...]/System.Threading.Tasks.dll |
| [...]/System.Threading.Thread.dll |
| [...]/System.Threading.ThreadPool.dll |
| [...]/System.Threading.Timer.dll |
| [...]/System.Threading.dll |
| [...]/System.Transactions.Local.dll |
| [...]/System.Transactions.dll |
| [...]/System.ValueTuple.dll |
| [...]/System.Web.HttpUtility.dll |
| [...]/System.Web.dll |
| [...]/System.Windows.Extensions.dll |
| [...]/System.Windows.dll |
| [...]/System.Xml.Linq.dll |
| [...]/System.Xml.ReaderWriter.dll |
| [...]/System.Xml.Serialization.dll |
| [...]/System.Xml.XDocument.dll |
| [...]/System.Xml.XPath.XDocument.dll |
| [...]/System.Xml.XPath.dll |
| [...]/System.Xml.XmlDocument.dll |
| [...]/System.Xml.XmlSerializer.dll |
| [...]/System.Xml.dll |
| [...]/System.dll |
| [...]/WindowsBase.dll |
| [...]/mscorlib.dll |
| [...]/netstandard.dll |
| [...]/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll |
| [...]/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll |
| [...]/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.Workspaces.resources.dll |
| [...]/zh-Hant/Microsoft.CodeAnalysis.VisualBasic.resources.dll |
| [...]/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll |
| [...]/zh-Hant/Microsoft.CodeAnalysis.resources.dll |

View File

@@ -0,0 +1,21 @@
import csharp
private string getPath(Assembly a) {
not a.getCompilation().getOutputAssembly() = a and
exists(string s | s = a.getFile().getAbsolutePath() |
result =
"[...]" +
s.substring(s.indexOf("test-db/working/") + "test-db/working/".length() + 16 +
"/packages".length(), s.length())
or
exists(string sub | sub = "csharp/tools/" + ["osx64", "linux64"] |
result = "[...]" + s.substring(s.indexOf(sub) + sub.length(), s.length())
)
or
result = s and
not exists(s.indexOf(["test-db/working/", "csharp/tools/"]))
)
}
from Assembly a
select getPath(a)

View File

@@ -0,0 +1,6 @@
class Program
{
static void Main(string[] args)
{
}
}

View File

@@ -0,0 +1,3 @@
from create_database_utils import *
run_codeql_database_create([], lang="csharp", extra_args=["--build-mode=none"])

View File

@@ -0,0 +1 @@
| [...]/newtonsoft.json/13.0.3/lib/net6.0/Newtonsoft.Json.dll |

View File

@@ -0,0 +1,11 @@
import csharp
private string getPath(Assembly a) {
not a.getCompilation().getOutputAssembly() = a and
exists(string s | s = a.getFile().getAbsolutePath() |
result = "[...]/" + s.substring(s.indexOf("newtonsoft.json"), s.length())
)
}
from Assembly a
select getPath(a)

View File

@@ -0,0 +1,13 @@
| All Nuget feeds reachable | 0.0 |
| Fallback nuget restore | 1.0 |
| Project files on filesystem | 1.0 |
| Resolved assembly conflicts | 7.0 |
| Restored .NET framework variants | 0.0 |
| Solution files on filesystem | 1.0 |
| Source files generated | 0.0 |
| Source files on filesystem | 1.0 |
| Successfully ran fallback nuget restore | 1.0 |
| Unresolved references | 0.0 |
| UseWPF set | 0.0 |
| UseWindowsForms set | 0.0 |
| WebView extraction enabled | 1.0 |

View File

@@ -0,0 +1,15 @@
import csharp
import semmle.code.csharp.commons.Diagnostics
query predicate compilationInfo(string key, float value) {
key != "Resolved references" and
not key.matches("Compiler diagnostic count for%") and
exists(Compilation c, string infoKey, string infoValue | infoValue = c.getInfo(infoKey) |
key = infoKey and
value = infoValue.toFloat()
or
not exists(infoValue.toFloat()) and
key = infoKey + ": " + infoValue and
value = 1
)
}

View File

@@ -0,0 +1,42 @@
{
"markdownMessage": "C# analysis with build-mode 'none' completed.",
"severity": "unknown",
"source": {
"extractorName": "csharp",
"id": "csharp/autobuilder/buildless/complete",
"name": "C# analysis with build-mode 'none' completed"
},
"visibility": {
"cliSummaryTable": true,
"statusPage": false,
"telemetry": true
}
}
{
"markdownMessage": "C# with build-mode set to 'none'. This means that all C# source in the working directory will be scanned, with build tools, such as Nuget and Dotnet CLIs, only contributing information about external dependencies.",
"severity": "note",
"source": {
"extractorName": "csharp",
"id": "csharp/autobuilder/buildless/mode-active",
"name": "C# with build-mode set to 'none'"
},
"visibility": {
"cliSummaryTable": true,
"statusPage": true,
"telemetry": true
}
}
{
"markdownMessage": "Found unreachable Nuget feed in C# analysis with build-mode 'none'. This may cause missing dependencies in the analysis.",
"severity": "warning",
"source": {
"extractorName": "csharp",
"id": "csharp/autobuilder/buildless/unreachable-feed",
"name": "Found unreachable Nuget feed in C# analysis with build-mode 'none'"
},
"visibility": {
"cliSummaryTable": true,
"statusPage": true,
"telemetry": true
}
}

View File

@@ -0,0 +1,6 @@
class Program
{
static void Main(string[] args)
{
}
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<clear />
<add key="x" value="https://localhost:53/packages/" />
<add key="y" value="https://localhost:80/packages/" />
</packageSources>
</configuration>

View File

@@ -0,0 +1,16 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net8.0</TargetFrameworks>
</PropertyGroup>
<Target Name="DeleteBinObjFolders" BeforeTargets="Clean">
<RemoveDir Directories=".\bin" />
<RemoveDir Directories=".\obj" />
</Target>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.002.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "proj", "proj\proj.csproj", "{6ED00460-7666-4AE9-A405-4B6C8B02279A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4ED55A1C-066C-43DF-B32E-7EAA035985EE}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,10 @@
from create_database_utils import *
from diagnostics_test_utils import *
import os
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK"] = "true" # Enable NuGet feed check
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_TIMEOUT"] = "1" # 1ms, the GET request should fail with such short timeout
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_LIMIT"] = "1" # Limit the count of checks to 1
os.environ["CODEQL_EXTRACTOR_CSHARP_BUILDLESS_NUGET_FEEDS_CHECK_EXCLUDED"] = "https://abc.de:8000/packages/" # Exclude this feed from check
run_codeql_database_create([], lang="csharp", extra_args=["--build-mode=none"])
check_diagnostics()

View File

@@ -102,25 +102,8 @@ class NamedElement extends Element, @named_element {
final predicate hasName(string name) { name = this.getName() }
/**
* Gets the fully qualified name of this element, for example the
* fully qualified name of `M` on line 3 is `N.C.M` in
* DEPRECATED: Use `hasFullyQualifiedName` instead.
*
* ```csharp
* namespace N {
* class C {
* void M(int i, string s) { }
* }
* }
* ```
*/
cached
deprecated final string getQualifiedName() {
exists(string qualifier, string name | this.hasQualifiedName(qualifier, name) |
if qualifier = "" then result = name else result = qualifier + "." + name
)
}
/**
* Gets the fully qualified name of this element, for example the
* fully qualified name of `M` on line 3 is `N.C.M` in
*
@@ -135,21 +118,39 @@ class NamedElement extends Element, @named_element {
* Unbound generic types, such as `IList<T>`, are represented as
* ``System.Collections.Generic.IList`1``.
*/
cached
final string getFullyQualifiedName() {
deprecated final string getFullyQualifiedName() {
exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) |
if qualifier = "" then result = name else result = qualifier + "." + name
)
}
/**
* DEPRECATED: Use `hasFullyQualifiedName` instead.
* INTERNAL: Do not use.
*
* Holds if this element has the qualified name `qualifier`.`name`.
* This is intended for DEBUG ONLY.
* Constructing the fully qualified name for all elements in a large codebase
* puts severe stress on the string pool.
*
* Gets the fully qualified name of this element, for example the
* fully qualified name of `M` on line 3 is `N.C.M` in
*
* ```csharp
* namespace N {
* class C {
* void M(int i, string s) { }
* }
* }
* ```
*
* Unbound generic types, such as `IList<T>`, are represented as
* ``System.Collections.Generic.IList`1``.
*/
cached
deprecated predicate hasQualifiedName(string qualifier, string name) {
qualifier = "" and name = this.getName()
bindingset[this]
pragma[inline_late]
final string getFullyQualifiedNameDebug() {
exists(string qualifier, string name | this.hasFullyQualifiedName(qualifier, name) |
if qualifier = "" then result = name else result = qualifier + "." + name
)
}
/** Holds if this element has the fully qualified name `qualifier`.`name`. */

View File

@@ -71,17 +71,11 @@ class Declaration extends NamedElement, @declaration {
override string toString() { result = this.getName() }
deprecated override predicate hasQualifiedName(string qualifier, string name) {
QualifiedName<QualifiedNameInput>::hasQualifiedName(this, qualifier, name)
}
override predicate hasFullyQualifiedName(string qualifier, string name) {
QualifiedName<FullyQualifiedNameInput>::hasQualifiedName(this, qualifier, name)
}
/**
* DEPRECATED: Use `getFullyQualifiedNameWithTypes` instead.
*
* Gets the fully qualified name of this declaration, including types, for example
* the fully qualified name with types of `M` on line 3 is `N.C.M(int, string)` in
*
@@ -93,33 +87,13 @@ class Declaration extends NamedElement, @declaration {
* }
* ```
*/
deprecated string getQualifiedNameWithTypes() {
exists(string qual |
qual = this.getDeclaringType().getQualifiedName() and
deprecated string getFullyQualifiedNameWithTypes() {
exists(string fullqual, string qual, string name |
this.getDeclaringType().hasFullyQualifiedName(qual, name) and
fullqual = getQualifiedName(qual, name) and
if this instanceof NestedType
then result = qual + "+" + this.toStringWithTypes()
else result = qual + "." + this.toStringWithTypes()
)
}
/**
* Gets the fully qualified name of this declaration, including types, for example
* the fully qualified name with types of `M` on line 3 is `N.C.M(int, string)` in
*
* ```csharp
* namespace N {
* class C {
* void M(int i, string s) { }
* }
* }
* ```
*/
string getFullyQualifiedNameWithTypes() {
exists(string qual |
qual = this.getDeclaringType().getFullyQualifiedName() and
if this instanceof NestedType
then result = qual + "+" + this.toStringWithTypes()
else result = qual + "." + this.toStringWithTypes()
then result = fullqual + "+" + this.toStringWithTypes()
else result = fullqual + "." + this.toStringWithTypes()
)
}
@@ -263,17 +237,6 @@ class Member extends Modifiable, @member {
/** Gets an access to this member. */
MemberAccess getAnAccess() { result.getTarget() = this }
/**
* DEPRECATED: Use `hasFullyQualifiedName` instead.
*
* Holds if this member has name `name` and is defined in type `type`
* with namespace `namespace`.
*/
cached
deprecated final predicate hasQualifiedName(string namespace, string type, string name) {
QualifiedName<QualifiedNameInput>::hasQualifiedName(this, namespace, type, name)
}
/**
* Holds if this member has name `name` and is defined in type `type`
* with namespace `namespace`.

View File

@@ -38,16 +38,6 @@ class Namespace extends TypeContainer, Declaration, @namespace {
parent_namespace(result, this)
}
/**
* Holds if this namespace has the qualified name `qualifier`.`name`.
*
* For example if the qualified name is `System.Collections.Generic`, then
* `qualifier`=`System.Collections` and `name`=`Generic`.
*/
deprecated override predicate hasQualifiedName(string qualifier, string name) {
namespaceHasQualifiedName(this, qualifier, name)
}
/**
* Holds if this namespace has the qualified name `qualifier`.`name`.
*

View File

@@ -219,3 +219,28 @@ predicate splitQualifiedName(string qualifiedName, string qualifier, string name
name = qualifiedName
)
}
/**
* INTERNAL: Do not use.
*
* Gets the fully qualified name of this declaration, including types, for example
* the fully qualified name with types of `M` on line 3 is `N.C.M(int, string)` in
*
* ```csharp
* namespace N {
* class C {
* void M(int i, string s) { }
* }
* }
* ```
*/
bindingset[d]
string getFullyQualifiedNameWithTypes(Declaration d) {
exists(string fullqual, string qual, string name |
d.getDeclaringType().hasFullyQualifiedName(qual, name) and
fullqual = getQualifiedName(qual, name) and
if d instanceof NestedType
then result = fullqual + "+" + d.toStringWithTypes()
else result = fullqual + "." + d.toStringWithTypes()
)
}

View File

@@ -120,7 +120,7 @@ module Ssa {
result = prefix + "." + this.getAssignable()
|
if f.(Modifiable).isStatic()
then prefix = f.getDeclaringType().getFullyQualifiedName()
then prefix = f.getDeclaringType().getName()
else prefix = "this"
)
}

View File

@@ -3,6 +3,7 @@
*/
private import csharp
private import semmle.code.csharp.commons.QualifiedName
private import semmle.code.csharp.frameworks.system.linq.Expressions
private import codeql.dataflow.internal.FlowSummaryImpl
private import codeql.dataflow.internal.AccessPathSyntax as AccessPath
@@ -42,10 +43,18 @@ module Input implements InputSig<Location, DataFlowImplSpecific::CsharpDataFlow>
string encodeContent(ContentSet c, string arg) {
c = TElementContent() and result = "Element" and arg = ""
or
exists(Field f | c = TFieldContent(f) and result = "Field" and arg = f.getFullyQualifiedName())
exists(Field f, string qualifier, string name |
c = TFieldContent(f) and
f.hasFullyQualifiedName(qualifier, name) and
arg = getQualifiedName(qualifier, name) and
result = "Field"
)
or
exists(Property p |
c = TPropertyContent(p) and result = "Property" and arg = p.getFullyQualifiedName()
exists(Property p, string qualifier, string name |
c = TPropertyContent(p) and
p.hasFullyQualifiedName(qualifier, name) and
arg = getQualifiedName(qualifier, name) and
result = "Property"
)
or
exists(SyntheticField f |

View File

@@ -139,13 +139,13 @@ class ExternalApiUsedWithUntrustedData extends TExternalApi {
/** Gets a textual representation of this element. */
string toString() {
exists(Callable m, int index, string indexString |
exists(Callable m, int index, string indexString, string qualifier, string name |
if index = -1 then indexString = "qualifier" else indexString = "param " + index
|
this = TExternalApiParameter(m, index) and
m.getDeclaringType().hasFullyQualifiedName(qualifier, name) and
result =
m.getDeclaringType().getFullyQualifiedName() + "." + m.toStringWithTypes() + " [" +
indexString + "]"
getQualifiedName(qualifier, name) + "." + m.toStringWithTypes() + " [" + indexString + "]"
)
}
}

View File

@@ -1,9 +1,7 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
from Attributable element, Attribute attribute, string qualifier, string name
from Attributable element, Attribute attribute
where
attribute = element.getAnAttribute() and
(attribute.fromSource() or element.(Assembly).getName() in ["attributes", "Assembly1"]) and
attribute.getType().hasFullyQualifiedName(qualifier, name)
select element, attribute, getQualifiedName(qualifier, name)
(attribute.fromSource() or element.(Assembly).getName() in ["attributes", "Assembly1"])
select element, attribute, attribute.getType().getFullyQualifiedNameDebug()

View File

@@ -3,11 +3,10 @@
*/
import csharp
import semmle.code.csharp.commons.QualifiedName
from Destructor c, string qualifier, string name
where
c.getDeclaringType().hasFullyQualifiedName(qualifier, name) and
qualifier = "Constructors" and
name = "Class"
select c, c.getDeclaringType().getFullyQualifiedName()
select c, c.getDeclaringType().getFullyQualifiedNameDebug()

View File

@@ -1,5 +1,4 @@
import csharp
private import semmle.code.csharp.commons.QualifiedName
private predicate isInteresting(Type t) {
(
@@ -20,10 +19,7 @@ query predicate typemodifiers(Type t, string modifier) {
query predicate qualifiedtypes(Type t, string qualifiedName) {
isInteresting(t) and
exists(string qualifier, string name |
t.hasFullyQualifiedName(qualifier, name) and
qualifiedName = getQualifiedName(qualifier, name)
)
qualifiedName = t.getFullyQualifiedNameDebug()
}
query predicate filetypes(Type t) {

View File

@@ -1,12 +1,10 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
from LocalVariable v1, LocalVariable v2, Type t, string qualifier, string name
from LocalVariable v1, LocalVariable v2, Type t
where
v1.getFile().getStem() = "NativeInt" and
v2.getFile().getStem() = "NativeInt" and
t = v1.getType() and
t = v2.getType() and
t.hasFullyQualifiedName(qualifier, name) and
v1 != v2
select v1, v2, getQualifiedName(qualifier, name)
select v1, v2, t.getFullyQualifiedNameDebug()

View File

@@ -1,13 +1,8 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
from
Method m, Method overrider, string mnamespace, string mtype, string mname, string onamespace,
string otype, string oname
from Method m, Method overrider
where
m.getAnOverrider() = overrider and
m.getFile().getStem() = "CovariantReturn" and
m.hasFullyQualifiedName(mnamespace, mtype, mname) and
overrider.hasFullyQualifiedName(onamespace, otype, oname)
select getQualifiedName(mnamespace, mtype, mname), m.getReturnType().toString(),
getQualifiedName(onamespace, otype, oname), overrider.getReturnType().toString()
m.getFile().getStem() = "CovariantReturn"
select m.getFullyQualifiedNameDebug(), m.getReturnType().toString(),
overrider.getFullyQualifiedNameDebug(), overrider.getReturnType().toString()

View File

@@ -1,5 +1,4 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
private string getLocation(Member m) {
if m.fromSource() then result = m.getALocation().(SourceLocation).toString() else result = "-"
@@ -9,13 +8,9 @@ private string getIsAsync(ForeachStmt f) {
if f.isAsync() then result = "async" else result = "sync"
}
from
ForeachStmt f, string qualifier1, string type1, string qualifier2, string type2,
string qualifier3, string type3
where
f.getGetEnumerator().getDeclaringType().hasFullyQualifiedName(qualifier1, type1) and
f.getCurrent().getDeclaringType().hasFullyQualifiedName(qualifier2, type2) and
f.getMoveNext().getDeclaringType().hasFullyQualifiedName(qualifier3, type3)
select f, f.getElementType().toString(), getIsAsync(f), getQualifiedName(qualifier1, type1),
getLocation(f.getGetEnumerator()), getQualifiedName(qualifier2, type2),
getLocation(f.getCurrent()), getQualifiedName(qualifier3, type3), getLocation(f.getMoveNext())
from ForeachStmt f
select f, f.getElementType().toString(), getIsAsync(f),
f.getGetEnumerator().getDeclaringType().getFullyQualifiedNameDebug(),
getLocation(f.getGetEnumerator()), f.getCurrent().getDeclaringType().getFullyQualifiedNameDebug(),
getLocation(f.getCurrent()), f.getMoveNext().getDeclaringType().getFullyQualifiedNameDebug(),
getLocation(f.getMoveNext())

View File

@@ -7,18 +7,10 @@ query predicate records(RecordClass t, string i, RecordCloneMethod clone) {
t.fromSource()
}
private string getMemberName(Member m) {
exists(string qualifier, string name |
m.getDeclaringType().hasFullyQualifiedName(qualifier, name)
|
result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes()
)
}
query predicate members(RecordClass t, string ms, string l) {
t.fromSource() and
exists(Member m | t.hasMember(m) |
ms = getMemberName(m) and
ms = getFullyQualifiedNameWithTypes(m) and
if m.fromSource() then l = m.getLocation().toString() else l = "no location"
)
}

View File

@@ -1,19 +1,11 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
private string getSignature(Method m) {
exists(string qualifier, string name |
m.getDeclaringType().hasFullyQualifiedName(qualifier, name)
|
result = getQualifiedName(qualifier, name) + "." + m.toStringWithTypes()
)
}
query predicate withExpr(WithExpr with, string type, Expr expr, ObjectInitializer init, string clone) {
type = with.getType().toStringWithTypes() and
expr = with.getExpr() and
init = with.getInitializer() and
clone = getSignature(with.getCloneMethod())
clone = getFullyQualifiedNameWithTypes(with.getCloneMethod())
}
query predicate withTarget(WithExpr with, RecordCloneMethod clone, Constructor ctor) {
@@ -25,7 +17,7 @@ query predicate cloneOverrides(string b, string o) {
exists(RecordCloneMethod base, RecordCloneMethod overrider |
base.getDeclaringType().fromSource() and
base.getAnOverrider() = overrider and
b = getSignature(base) and
o = getSignature(overrider)
b = getFullyQualifiedNameWithTypes(base) and
o = getFullyQualifiedNameWithTypes(overrider)
)
}

View File

@@ -1,8 +1,9 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
import semmle.code.csharp.dispatch.Dispatch
from DispatchCall call, Callable callable
where
callable = call.getADynamicTarget() and
callable.fromSource()
select call, callable.getFullyQualifiedNameWithTypes()
select call, getFullyQualifiedNameWithTypes(callable)

View File

@@ -3,13 +3,11 @@
*/
import csharp
import semmle.code.csharp.commons.QualifiedName
from EnumConstant c, string namespace, string name
from EnumConstant c
where
c.getName() = "Green" and
c.getDeclaringType().hasFullyQualifiedName("Enums", "LongColor") and
c.getType() = c.getDeclaringType() and
c.getValue() = "1" and
c.getDeclaringType().getBaseClass().hasFullyQualifiedName(namespace, name)
select c, getQualifiedName(namespace, name)
c.getValue() = "1"
select c, c.getDeclaringType().getBaseClass().getFullyQualifiedNameDebug()

View File

@@ -1,4 +1,5 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
import semmle.code.csharp.frameworks.System
from ValueOrRefType t, Method m, boolean b
@@ -6,4 +7,4 @@ where
t.fromSource() and
m = getInvokedDisposeMethod(t) and
if implementsDispose(t) then b = true else b = false
select t, m.getFullyQualifiedNameWithTypes(), b
select t, getFullyQualifiedNameWithTypes(m), b

View File

@@ -1,4 +1,5 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
import semmle.code.csharp.frameworks.System
from ValueOrRefType t, Method m, boolean b
@@ -6,4 +7,4 @@ where
t.fromSource() and
m = getInvokedEqualsMethod(t) and
if implementsEquals(t) then b = true else b = false
select t, m.getFullyQualifiedNameWithTypes(), b
select t, getFullyQualifiedNameWithTypes(m), b

View File

@@ -231,18 +231,18 @@ query predicate test27(ConstructedType ct, UnboundGenericType ugt, UnboundGeneri
query predicate test28(UnboundGeneric ug, string s) {
ug.fromSource() and
s = ug.getFullyQualifiedNameWithTypes()
s = getFullyQualifiedNameWithTypes(ug)
}
query predicate test29(ConstructedGeneric cg, string s) {
cg.fromSource() and
s = cg.getFullyQualifiedNameWithTypes()
s = getFullyQualifiedNameWithTypes(cg)
}
query predicate test30(Declaration d, string s) {
d.fromSource() and
d instanceof @generic and
s = d.getFullyQualifiedNameWithTypes() and
s = getFullyQualifiedNameWithTypes(d) and
d != d.getUnboundDeclaration() and
not d instanceof Generic
}
@@ -263,21 +263,17 @@ query predicate test33(ConstructedMethod cm, string s1, string s2) {
exists(string namespace, string type, string name |
cm.hasFullyQualifiedName(namespace, type, name) and s1 = getQualifiedName(namespace, type, name)
) and
cm.getFullyQualifiedNameWithTypes() = s2
getFullyQualifiedNameWithTypes(cm) = s2
}
query predicate test34(UnboundGeneric ug, string s1, string s2) {
ug.fromSource() and
exists(string qualifier, string name |
ug.hasFullyQualifiedName(qualifier, name) and s1 = getQualifiedName(qualifier, name)
) and
ug.getFullyQualifiedNameWithTypes() = s2
s1 = ug.getFullyQualifiedNameDebug() and
s2 = getFullyQualifiedNameWithTypes(ug)
}
query predicate test35(UnboundGenericMethod gm, string s1, string s2) {
gm.fromSource() and
exists(string namespace, string type, string name |
gm.hasFullyQualifiedName(namespace, type, name) and s1 = getQualifiedName(namespace, type, name)
) and
gm.getFullyQualifiedNameWithTypes() = s2
s1 = gm.getFullyQualifiedNameDebug() and
s2 = getFullyQualifiedNameWithTypes(gm)
}

View File

@@ -1,4 +1,5 @@
import csharp
import semmle.code.csharp.commons.QualifiedName
from Overridable v1, Overridable v2, string kind
where
@@ -9,4 +10,4 @@ where
) and
v1.fromSource() and
v2.fromSource()
select v1.getFullyQualifiedNameWithTypes(), v2.getFullyQualifiedNameWithTypes(), kind
select getFullyQualifiedNameWithTypes(v1), getFullyQualifiedNameWithTypes(v2), kind

View File

@@ -1,3 +1,4 @@
import semmle.code.csharp.commons.QualifiedName
import semmle.code.csharp.Unification
class InterestingType extends @type {
@@ -7,9 +8,9 @@ class InterestingType extends @type {
}
string toString() {
result = this.(Type).getFullyQualifiedNameWithTypes()
result = getFullyQualifiedNameWithTypes(this.(Type))
or
not exists(this.(Type).getFullyQualifiedNameWithTypes()) and
not exists(getFullyQualifiedNameWithTypes(this.(Type))) and
result = this.(Type).toStringWithTypes()
}

View File

@@ -282,7 +282,7 @@ These are the same for both of the rows above as we are adding two summaries for
- The second value ``Enumerable`` is the class (type) name.
- The third value ``False`` is a flag that indicates whether or not the summary also applies to all overrides of the method.
- The fourth value ``Select<TSource,TResult>`` is the method name, along with the type parameters for the method. The names of the generic type parameters provided in the model must match the names of the generic type parameters in the method signature in the source code.
- The fifth value ``(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>)`` is the method input type signature. The generics in the signature must match the generics in the method signature in the source code.
- The fifth value ``(System.Collections.Generic.IEnumerable<TSource>,System.Func<TSource,TResult>)`` is the method input type signature. The generics in the signature must match the generics in the method signature in the source code.
The sixth value should be left empty and is out of scope for this documentation.
The remaining values are used to define the ``access path``, the ``kind``, and the ``provenance`` (origin) of the summary definition.
@@ -309,7 +309,7 @@ That is, the first row specifies that values can flow from the elements of the q
Example: Add a ``neutral`` method
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This example shows how we can model a method as being neutral with respect to flow. We will also cover how to model a property by modeling the getter of the ``Now`` property of the ``DateTime`` class as neutral.
This example shows how we can model a method as being neutral with respect to flow. We will also cover how to model a property by modeling the getter of the ``Now`` property of the ``DateTime`` class as neutral.
A neutral model is used to define that there is no flow through a method.
.. code-block:: csharp
@@ -346,13 +346,4 @@ The first four values identify the callable (in this case the getter of the ``No
Threat models
-------------
.. include:: ../reusables/beta-note-threat-models.rst
A threat model is a named class of dataflow sources that can be enabled or disabled independently. Threat models allow you to control the set of dataflow sources that you want to consider unsafe. For example, one codebase may only consider remote HTTP requests to be tainted, whereas another may also consider data from local files to be unsafe. You can use threat models to ensure that the relevant taint sources are used in a CodeQL analysis.
The ``kind`` property of ``sourceModel`` determines which threat model a source is associated with. There are two main categories:
- ``remote`` which represents requests and responses from the network.
- ``local`` which represents data from local files (``file``), command-line arguments (``commandargs``), database reads (``database``), and environment variables(``environment``).
When running a CodeQL analysis, the ``remote`` threat model is included by default. You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries <https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>`__ and `Customizing your advanced setup for code scanning <https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models>`__.
.. include:: ../reusables/threat-model-description.rst

View File

@@ -297,13 +297,4 @@ The first four values identify the callable (in this case a method) to be modele
Threat models
-------------
.. include:: ../reusables/beta-note-threat-models.rst
A threat model is a named class of dataflow sources that can be enabled or disabled independently. Threat models allow you to control the set of dataflow sources that you want to consider unsafe. For example, one codebase may only consider remote HTTP requests to be tainted, whereas another may also consider data from local files to be unsafe. You can use threat models to ensure that the relevant taint sources are used in a CodeQL analysis.
The ``kind`` property of the ``sourceModel`` determines which threat model a source is associated with. There are two main categories:
- ``remote`` which represents requests and responses from the network.
- ``local`` which represents data from local files (``file``), command-line arguments (``commandargs``), database reads (``database``), and environment variables(``environment``).
When running a CodeQL analysis, the ``remote`` threat model is included by default. You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries <https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>`__ and `Customizing your advanced setup for code scanning <https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models>`__.
.. include:: ../reusables/threat-model-description.rst

View File

@@ -478,7 +478,7 @@ The following components are supported:
- **Element** selects an element of an array, iterator, or set object.
- **MapValue** selects a value of a map object.
- **Awaited** selects the value of a promise.
- **Instance** selects instances of a class.
- **Instance** selects instances of a class, including instances of its subclasses.
- **Fuzzy** selects all values that are derived from the current value through a combination of the other operations described in this list.
For example, this can be used to find all values that appear to originate from a particular package. This can be useful for finding method calls
from a known package, but where the receiver type is not known or is difficult to model.

View File

@@ -53,8 +53,7 @@ New Features
|link-code-paths-and-code-paths-ignore-configuration-1|_.
* In the VS Code extension, recursive calls will be marked with inlay hints. These can be disabled with the global inlay hints setting
(:code:`editor.inlayHints.enabled`). If you just want to disable them for
codeql the settings can be scoped to just codeql files (language id is :code:`ql`).
(:code:`editor.inlayHints.enabled`). If you just want to disable them for codeql the settings can be scoped to just codeql files (language id is :code:`ql`).
See `Language Specific Editor Settings <https://code.visualstudio.com/docs/getstarted/settings#_language-specific-editor-settings>`__ in the VS Code documentation for more information.
* The CLI now gives a more helpful error message when asked to run queries on a database that has not been finalized.

View File

@@ -38,12 +38,11 @@ New Features
Known Issues
~~~~~~~~~~~~
* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1.
* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1.
This issue occurs when uploading certain kinds of diagnostic information and causes the subcommand to fail with "A fatal error occurred: Invalid SARIF.", reporting an :code:`InvalidDefinitionException`.
Customers who wish to use CodeQL 2.12.6 or 2.13.0 can
work around the problem by passing :code:`--no-sarif-include-diagnostics` to any invocations of :code:`codeql database analyze` or :code:`codeql database interpret-results`.
Customers who wish to use CodeQL 2.12.6 or 2.13.0 can work around the problem by passing :code:`--no-sarif-include-diagnostics` to any invocations of :code:`codeql database analyze` or :code:`codeql database interpret-results`.
Query Packs
-----------

View File

@@ -73,7 +73,7 @@ New Features
Known Issues
~~~~~~~~~~~~
* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1. For more information, see the
* We recommend that customers using the CodeQL CLI in a third party CI system do not upgrade to this release, due to an issue with :code:`codeql github upload-results`. Instead, please use CodeQL 2.12.5, or, when available, CodeQL 2.12.7 or 2.13.1. For more information, see the
"Known issues" section for CodeQL 2.12.6.
Query Packs

View File

@@ -26,8 +26,7 @@ Bug Fixes
* Fixed a bug that could have caused the compiler to incorrectly infer that a class matched a type signature. The bug only affected classes with overriding member predicates that had stronger binding sets than their root definitions.
* Fixed a bug where a query could not be run from VS Code when there were packs nested within sibling directories
of the query.
* Fixed a bug where a query could not be run from VS Code when there were packs nested within sibling directories of the query.
New Features
~~~~~~~~~~~~

View File

@@ -0,0 +1,25 @@
.. _codeql-cli-2.16.6:
==========================
CodeQL 2.16.6 (2024-03-26)
==========================
.. contents:: Contents
:depth: 2
:local:
:backlinks: none
This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog <https://github.blog/tag/code-scanning/>`__, `relevant GitHub Changelog updates <https://github.blog/changelog/label/code-scanning/>`__, `changes in the CodeQL extension for Visual Studio Code <https://marketplace.visualstudio.com/items/GitHub.vscode-codeql/changelog>`__, and the `CodeQL Action changelog <https://github.com/github/codeql-action/blob/main/CHANGELOG.md>`__.
Security Coverage
-----------------
CodeQL 2.16.6 runs a total of 409 security queries when configured with the Default suite (covering 160 CWE). The Extended suite enables an additional 132 queries (covering 34 more CWE).
CodeQL CLI
----------
Bug Fixes
~~~~~~~~~
* Fixes a bug where extractor logs would be output at a lower than expected verbosity level when using the :code:`codeql database create` command.

View File

@@ -0,0 +1,220 @@
.. _codeql-cli-2.17.0:
==========================
CodeQL 2.17.0 (2024-04-04)
==========================
.. contents:: Contents
:depth: 2
:local:
:backlinks: none
This is an overview of changes in the CodeQL CLI and relevant CodeQL query and library packs. For additional updates on changes to the CodeQL code scanning experience, check out the `code scanning section on the GitHub blog <https://github.blog/tag/code-scanning/>`__, `relevant GitHub Changelog updates <https://github.blog/changelog/label/code-scanning/>`__, `changes in the CodeQL extension for Visual Studio Code <https://marketplace.visualstudio.com/items/GitHub.vscode-codeql/changelog>`__, and the `CodeQL Action changelog <https://github.com/github/codeql-action/blob/main/CHANGELOG.md>`__.
Security Coverage
-----------------
CodeQL 2.17.0 runs a total of 410 security queries when configured with the Default suite (covering 160 CWE). The Extended suite enables an additional 130 queries (covering 34 more CWE).
CodeQL CLI
----------
Deprecations
~~~~~~~~~~~~
* The :code:`--[no-]analysis-summary-v2` and :code:`--[no-]new-analysis-summary` options that were used to enable (or disable) improved summary information printed at the end of a :code:`codeql database analyze` invocation are no longer supported.
Improved summary information is now enabled for all invocations.
* Support for overwriting default CodeQL SARIF run properties using the
:code:`--sarif-run-property` command line option has been removed. This removes the ability to overwrite the :code:`semmle.formatSpecifier`, :code:`metricResults`, and
:code:`codeqlConfigSummary` properties in the SARIF run file.
Improvements
~~~~~~~~~~~~
* TRAP import (a part of :code:`codeql database create` and :code:`codeql database finalize`)
now performs better in low-memory situations. (Put another way, it now needs less RAM to achieve the same performance as before.)
* The worst-case performance of transitive closure computation (using the :code:`+` or :code:`*` postfix operators or the :code:`fastTC` higher-order primitive in QL) has been greatly improved.
Miscellaneous
~~~~~~~~~~~~~
* The build of Eclipse Temurin OpenJDK that is used to run the CodeQL CLI has been updated to version 21.0.2.
Query Packs
-----------
Major Analysis Improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~
C#
""
* The :code:`Stored` variants of some queries (:code:`cs/stored-command-line-injection`, :code:`cs/web/stored-xss`, :code:`cs/stored-ldap-injection`, :code:`cs/xml/stored-xpath-injection`, :code:`cs/second-order-sql-injection`) have been removed. If you were using these queries, their results can be restored by enabling the :code:`file` and :code:`database` threat models in your threat model configuration.
Java
""""
* The :code:`java/missing-case-in-switch` query now gives only a single alert for each switch statement, giving some examples of the missing cases as well as a count of how many are missing.
Minor Analysis Improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++
"""""
* The "Missing return-value check for a 'scanf'-like function" query (:code:`cpp/missing-check-scanf`) has been converted to a :code:`path-problem` query.
* The "Potentially uninitialized local variable" query (:code:`cpp/uninitialized-local`) has been converted to a :code:`path-problem` query.
* Added models for :code:`GLib` allocation and deallocation functions.
C#
""
* The alert message of :code:`cs/wrong-compareto-signature` has been changed to remove unnecessary element references.
* Data flow queries that track flow from *local* flow sources now use the current *threat model* configuration instead. This may lead to changes in the produced alerts if the threat model configuration only uses *remote* flow sources. The changed queries are :code:`cs/code-injection`, :code:`cs/resource-injection`, :code:`cs/sql-injection`, and :code:`cs/uncontrolled-format-string`.
Golang
""""""
* The query :code:`go/hardcoded-credentials` no longer discards string literals based on "weak password" heuristics.
* The query :code:`go/sql-injection` now recognizes more sinks in the package :code:`github.com/Masterminds/squirrel`.
Java
""""
* Variables named :code:`tokenImage` are no longer sources for the :code:`java/sensitive-log` query. This is because this variable name is used in parsing code generated by JavaCC, so it causes a large number of false positive alerts.
* Added sanitizers for relative URLs, :code:`List.contains()`, and checking the host of a URI to the :code:`java/ssrf` and :code:`java/unvalidated-url-redirection` queries.
JavaScript/TypeScript
"""""""""""""""""""""
* The call graph has been improved, leading to more alerts for data flow based queries.
New Queries
~~~~~~~~~~~
C/C++
"""""
* Added a new query, :code:`cpp/type-confusion`, to detect casts to invalid types.
Golang
""""""
* The query "Slice memory allocation with excessive size value" (:code:`go/uncontrolled-allocation-size`) has been promoted from experimental to the main query pack. Its results will now appear by default. This query was originally `submitted as an experimental query by @Malayke <https://github.com/github/codeql/pull/15130>`__.
Java
""""
* The query :code:`java/unsafe-url-forward-dispatch-load` has been promoted from experimental to the main query pack as :code:`java/unvalidated-url-forward`. Its results will now appear by default. This query was originally submitted as an experimental query `by @haby0 <https://github.com/github/codeql/pull/6240>`__ and `by @luchua-bc <https://github.com/github/codeql/pull/7286>`__.
Query Metadata Changes
~~~~~~~~~~~~~~~~~~~~~~
C/C++
"""""
* :code:`@precision medium` metadata was added to the :code:`cpp/boost/tls-settings-misconfiguration` and :code:`cpp/boost/use-of-deprecated-hardcoded-security-protocol` queries, and these queries are now included in the security-extended suite. The :code:`@name` metadata of these queries were also updated.
JavaScript/TypeScript
"""""""""""""""""""""
* The :code:`@precision` of the :code:`js/unsafe-external-link` has been reduced to :code:`low` to reflect the fact that modern browsers do not expose the opening window for such links. This mitigates the potential security risk of having a link with :code:`target="_blank"`.
Language Libraries
------------------
Breaking Changes
~~~~~~~~~~~~~~~~
C#
""
* The CIL extractor has been deleted and the corresponding extractor option :code:`cil` has been removed. It is no longer possible to do CIL extraction.
* The QL library C# classes no longer extend their corresponding :code:`DotNet` classes. Furthermore, CIL related data flow functionality has been deleted and all :code:`DotNet` and :code:`CIL` related classes have been deprecated. This effectively means that it no longer has any effect to enable CIL extraction.
Java
""""
* The Java extractor no longer supports the :code:`ODASA_SNAPSHOT` legacy environment variable.
Major Analysis Improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~
JavaScript/TypeScript
"""""""""""""""""""""
* Added support for TypeScript 5.4.
Swift
"""""
* Upgraded to Swift 5.10
* New AST node is extracted: :code:`ThenStmt`
Minor Analysis Improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~
C/C++
"""""
* Added destructors for temporary objects with extended lifetimes to the intermediate representation.
C#
""
* Added new source models for the :code:`Dapper` package. These models can be enabled by enabling the :code:`database` threat model.
* Additional models have been added for :code:`System.IO`. These are primarily source models with the :code:`file` threat model, and summaries related to reading from a file or stream.
* Support for C# 12 / .NET8.
* Added the :code:`windows-registry` source kind and threat model to represent values which come from the registry on Windows.
* The models for :code:`System.Net.Http.HttpRequestMessage` have been modified to better model the flow of tainted URIs.
* The .NET standard libraries APIs for accessing command line arguments and environment variables have been modeled using the :code:`commandargs` and :code:`environment` threat models.
* The :code:`cs/assembly-path-injection` query has been modified so that it's sources rely on :code:`ThreatModelFlowSource`. In order to restore results from command line arguments, you should enable the :code:`commandargs` threat model.
* The models for :code:`System.IO.TextReader` have been modified to better model the flow of tainted text from a :code:`TextReader`.
Golang
""""""
* The :code:`CODEQL_EXTRACTOR_GO_FAST_PACKAGE_INFO` option, which speeds up retrieval of dependency information, is now on by default. This was originally an external contribution by @xhd2015.
* Added dataflow sources for the package :code:`gopkg.in/macaron.v1`.
Java
""""
* Increased the precision of some dataflow models of the class :code:`java.net.URL` by distinguishing the parts of a URL.
* The Java extractor and QL libraries now support Java 22, including support for anonymous variables, lambda parameters and patterns.
* Pattern cases with multiple patterns and that fall through to or from other pattern cases are now supported. The :code:`PatternCase` class gains the new :code:`getPatternAtIndex` and :code:`getAPattern` predicates, and deprecates :code:`getPattern`.
* Added a :code:`path-injection` sink for the :code:`open` methods of the :code:`android.os.ParcelFileDescriptor` class.
Ruby
""""
* Data flow is now tracked through :code:`ActiveRecord` scopes.
* Modeled instances of :code:`ActionDispatch::Http::UploadedFile` that can be obtained from element reads of :code:`ActionController::Parameters`, with calls to :code:`original_filename`, :code:`content_type`, and :code:`read` now propagating taint from their receiver.
* The second argument, :code:`subquery_name`, of the :code:`ActiveRecord::QueryMethods::from` method, is now recognized as an sql injection sink.
* Calls to :code:`Typhoeus::Request.new` are now considered as instances of the :code:`Http::Client::Request` concept, with the response body being treated as a remote flow source.
* New command injection sinks have been added, including :code:`Process.spawn`, :code:`Process.exec`, :code:`Terrapin::CommandLine` and the :code:`open4` gem.
New Features
~~~~~~~~~~~~
C/C++
"""""
* Added a :code:`TaintInheritingContent` class that can be extended to model taint flowing from a qualifier to a field.
* Added a predicate :code:`GuardCondition.comparesEq/4` to query whether an expression is compared to a constant.
* Added a predicate :code:`GuardCondition.ensuresEq/4` to query whether a basic block is guarded by an expression being equal to a constant.
* Added a predicate :code:`GuardCondition.comparesLt/4` to query whether an expression is compared to a constant.
* Added a predicate :code:`GuardCondition.ensuresLt/4` to query whether a basic block is guarded by an expression being less than a constant.
* Added a predicate :code:`GuardCondition.valueControls` to query whether a basic block is guarded by a particular :code:`case` of a :code:`switch` statement.
Shared Libraries
----------------
Minor Analysis Improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dataflow Analysis
"""""""""""""""""
* Path explanations now include flow that goes through callbacks passed into library functions. For example, if :code:`map` is a library function, then in :code:`result = map(xs, x => x + 1)` we will now include the step from :code:`x` to :code:`x + 1` in the path explanation, instead of going directly from :code:`xs` to :code:`result`. Note that this change does not affect actual query results, but only how path explanations are computed.

View File

@@ -11,6 +11,8 @@ A list of queries for each suite and language `is available here <https://docs.g
.. toctree::
:maxdepth: 1
codeql-cli-2.17.0
codeql-cli-2.16.6
codeql-cli-2.16.5
codeql-cli-2.16.4
codeql-cli-2.16.3

View File

@@ -4,11 +4,11 @@
:stub-columns: 1
Language,Variants,Compilers,Extensions
C/C++,"C89, C99, C11, C17, C++98, C++03, C++11, C++14, C++17, C++20 [1]_ [2]_","Clang (including clang-cl [3]_ and armclang) extensions (up to Clang 12.0),
C/C++,"C89, C99, C11, C17, C++98, C++03, C++11, C++14, C++17, C++20 [1]_ [2]_","Clang (including clang-cl [3]_ and armclang) extensions (up to Clang 17.0),
GNU extensions (up to GCC 11.1),
GNU extensions (up to GCC 13.2),
Microsoft extensions (up to VS 2019),
Microsoft extensions (up to VS 2022),
Arm Compiler 5 [4]_","``.cpp``, ``.c++``, ``.cxx``, ``.hpp``, ``.hh``, ``.h++``, ``.hxx``, ``.c``, ``.cc``, ``.h``"
C#,C# up to 12,"Microsoft Visual Studio up to 2019 with .NET up to 4.8,
@@ -24,12 +24,12 @@
JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [8]_"
Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12",Not applicable,``.py``
Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``"
Swift [11]_,"Swift 5.4-5.9.1","Swift compiler","``.swift``"
Swift [11]_,"Swift 5.4-5.10","Swift compiler","``.swift``"
TypeScript [12]_,"2.6-5.4",Standard TypeScript compiler,"``.ts``, ``.tsx``, ``.mts``, ``.cts``"
.. container:: footnote-group
.. [1] C++20 support is currently in beta. Supported for GCC on Linux only. Modules are *not* supported.
.. [1] C++20 support is currently in beta. Modules are *not* supported.
.. [2] Objective-C, Objective-C++, C++/CLI, and C++/CX are not supported.
.. [3] Support for the clang-cl compiler is preliminary.
.. [4] Support for the Arm Compiler (armcc) is preliminary.
@@ -39,5 +39,5 @@
.. [8] JSX and Flow code, YAML, JSON, HTML, and XML files may also be analyzed with JavaScript files.
.. [9] The extractor requires Python 3 to run. To analyze Python 2.7 you should install both versions of Python.
.. [10] Requires glibc 2.17.
.. [11] Swift support is currently in beta. Support for the analysis of Swift 5.4-5.8.1 requires macOS or Linux.
.. [11] Swift support is currently in beta. Support for the analysis of Swift requires macOS or Linux.
.. [12] TypeScript analysis is performed by running the JavaScript extractor with TypeScript enabled. This is the default.

View File

@@ -0,0 +1,10 @@
.. include:: ../reusables/beta-note-threat-models.rst
A threat model is a named class of dataflow sources that can be enabled or disabled independently. Threat models allow you to control the set of dataflow sources that you want to consider unsafe. For example, one codebase may only consider remote HTTP requests to be tainted, whereas another may also consider data from local files to be unsafe. You can use threat models to ensure that the relevant taint sources are used in a CodeQL analysis.
The ``kind`` property of the ``sourceModel`` determines which threat model a source is associated with. There are two main categories:
- ``remote`` which represents requests and responses from the network.
- ``local`` which represents data from local files (``file``), command-line arguments (``commandargs``), database reads (``database``), and environment variables(``environment``).
When running a CodeQL analysis, the ``remote`` threat model is included by default. You can optionally include other threat models as appropriate when using the CodeQL CLI and in GitHub code scanning. For more information, see `Analyzing your code with CodeQL queries <https://docs.github.com/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries#including-model-packs-to-add-potential-sources-of-tainted-data>`__ and `Customizing your advanced setup for code scanning <https://docs.github.com/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/customizing-your-advanced-setup-for-code-scanning#extending-codeql-coverage-with-threat-models>`__.

View File

@@ -132,9 +132,7 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error {
pkgsNotFound := make([]string, 0, len(pkgs))
// Do a post-order traversal and extract the package scope of each package
packages.Visit(pkgs, func(pkg *packages.Package) bool {
return true
}, func(pkg *packages.Package) {
packages.Visit(pkgs, nil, func(pkg *packages.Package) {
log.Printf("Processing package %s.", pkg.PkgPath)
if _, ok := pkgInfos[pkg.PkgPath]; !ok {
@@ -200,10 +198,8 @@ func ExtractWithFlags(buildFlags []string, patterns []string) error {
noExtractRe := regexp.MustCompile(`.*(^|` + sep + `)(\.\.|vendor)($|` + sep + `).*`)
// extract AST information for all packages
packages.Visit(pkgs, func(pkg *packages.Package) bool {
return true
}, func(pkg *packages.Package) {
for root, _ := range wantedRoots {
packages.Visit(pkgs, nil, func(pkg *packages.Package) {
for root := range wantedRoots {
pkgInfo := pkgInfos[pkg.PkgPath]
relDir, err := filepath.Rel(root, pkgInfo.PkgDir)
if err != nil || noExtractRe.MatchString(relDir) {
@@ -392,6 +388,8 @@ func extractUniverseScope() {
}
// extractObjects extracts all objects declared in the given scope
// For more information on objects, see:
// https://github.com/golang/example/blob/master/gotypes/README.md#objects
func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label) {
for _, name := range scope.Names() {
obj := scope.Lookup(name)
@@ -401,15 +399,15 @@ func extractObjects(tw *trap.Writer, scope *types.Scope, scopeLabel trap.Label)
// do not appear as objects in any scope, so they have to be dealt
// with separately in extractMethods.
if funcObj, ok := obj.(*types.Func); ok {
populateTypeParamParents(tw, funcObj.Type().(*types.Signature).TypeParams(), obj)
populateTypeParamParents(tw, funcObj.Type().(*types.Signature).RecvTypeParams(), obj)
populateTypeParamParents(funcObj.Type().(*types.Signature).TypeParams(), obj)
populateTypeParamParents(funcObj.Type().(*types.Signature).RecvTypeParams(), obj)
}
// Populate type parameter parents for named types. Note that we
// skip type aliases as the original type should be the parent
// of any type parameters.
if typeNameObj, ok := obj.(*types.TypeName); ok && !typeNameObj.IsAlias() {
if tp, ok := typeNameObj.Type().(*types.Named); ok {
populateTypeParamParents(tw, tp.TypeParams(), obj)
populateTypeParamParents(tp.TypeParams(), obj)
}
}
extractObject(tw, obj, lbl)
@@ -435,8 +433,8 @@ func extractMethod(tw *trap.Writer, meth *types.Func) trap.Label {
if !exists {
// Populate type parameter parents for methods. They do not appear as
// objects in any scope, so they have to be dealt with separately here.
populateTypeParamParents(tw, meth.Type().(*types.Signature).TypeParams(), meth)
populateTypeParamParents(tw, meth.Type().(*types.Signature).RecvTypeParams(), meth)
populateTypeParamParents(meth.Type().(*types.Signature).TypeParams(), meth)
populateTypeParamParents(meth.Type().(*types.Signature).RecvTypeParams(), meth)
extractObject(tw, meth, methlbl)
}
@@ -444,6 +442,8 @@ func extractMethod(tw *trap.Writer, meth *types.Func) trap.Label {
}
// extractObject extracts a single object and emits it to the objects table.
// For more information on objects, see:
// https://github.com/golang/example/blob/master/gotypes/README.md#objects
func extractObject(tw *trap.Writer, obj types.Object, lbl trap.Label) {
name := obj.Name()
isBuiltin := obj.Parent() == types.Universe
@@ -491,21 +491,25 @@ func extractObject(tw *trap.Writer, obj types.Object, lbl trap.Label) {
}
// extractObjectTypes extracts type and receiver information for all objects
// For more information on objects, see:
// https://github.com/golang/example/blob/master/gotypes/README.md#objects
func extractObjectTypes(tw *trap.Writer) {
// calling `extractType` on a named type will extract all methods defined
// on it, which will add new objects. Therefore we need to do this first
// before we loops over all objects and emit them.
// before we loop over all objects and emit them.
changed := true
for changed {
changed = tw.ForEachObject(extractObjectType)
}
changed = tw.ForEachObject(emitObjectType)
if changed {
log.Printf("Warning: more objects were labeled while emitted object types")
log.Printf("Warning: more objects were labeled while emitting object types")
}
}
// extractObjectType extracts type and receiver information for a given object
// For more information on objects, see:
// https://github.com/golang/example/blob/master/gotypes/README.md#objects
func extractObjectType(tw *trap.Writer, obj types.Object, lbl trap.Label) {
if tp := obj.Type(); tp != nil {
extractType(tw, tp)
@@ -794,7 +798,7 @@ func extractLocalScope(tw *trap.Writer, scope *types.Scope, parentScopeLabel tra
func extractFileNode(tw *trap.Writer, nd *ast.File) {
lbl := tw.Labeler.FileLabel()
extractExpr(tw, nd.Name, lbl, 0)
extractExpr(tw, nd.Name, lbl, 0, false)
for i, decl := range nd.Decls {
extractDecl(tw, decl, lbl, i)
@@ -851,7 +855,7 @@ func emitScopeNodeInfo(tw *trap.Writer, nd ast.Node, lbl trap.Label) {
}
// extractExpr extracts AST information for the given expression and all its subexpressions
func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int, skipExtractingValue bool) {
if expr == nil {
return
}
@@ -870,6 +874,10 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
kind = dbscheme.IdentExpr.Index()
dbscheme.LiteralsTable.Emit(tw, lbl, expr.Name, expr.Name)
def := tw.Package.TypesInfo.Defs[expr]
// Note that there are some cases where `expr` is in the map but `def`
// is nil. The docs for `tw.Package.TypesInfo.Defs` give the following
// examples: the package name in package clauses, or symbolic variables
// `t` in `t := x.(type)` of type switch headers.
if def != nil {
defTyp := extractType(tw, def.Type())
objlbl, exists := tw.Labeler.LookupObjectID(def, defTyp)
@@ -900,7 +908,7 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
return
}
kind = dbscheme.EllipsisExpr.Index()
extractExpr(tw, expr.Elt, lbl, 0)
extractExpr(tw, expr.Elt, lbl, 0, false)
case *ast.BasicLit:
if expr == nil {
return
@@ -932,28 +940,28 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
return
}
kind = dbscheme.FuncLitExpr.Index()
extractExpr(tw, expr.Type, lbl, 0)
extractExpr(tw, expr.Type, lbl, 0, false)
extractStmt(tw, expr.Body, lbl, 1)
case *ast.CompositeLit:
if expr == nil {
return
}
kind = dbscheme.CompositeLitExpr.Index()
extractExpr(tw, expr.Type, lbl, 0)
extractExpr(tw, expr.Type, lbl, 0, false)
extractExprs(tw, expr.Elts, lbl, 1, 1)
case *ast.ParenExpr:
if expr == nil {
return
}
kind = dbscheme.ParenExpr.Index()
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.X, lbl, 0, false)
case *ast.SelectorExpr:
if expr == nil {
return
}
kind = dbscheme.SelectorExpr.Index()
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.Sel, lbl, 1)
extractExpr(tw, expr.X, lbl, 0, false)
extractExpr(tw, expr.Sel, lbl, 1, false)
case *ast.IndexExpr:
if expr == nil {
return
@@ -974,8 +982,8 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
kind = dbscheme.IndexExpr.Index()
}
}
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.Index, lbl, 1)
extractExpr(tw, expr.X, lbl, 0, false)
extractExpr(tw, expr.Index, lbl, 1, false)
case *ast.IndexListExpr:
if expr == nil {
return
@@ -993,30 +1001,33 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
kind = dbscheme.GenericTypeInstantiationExpr.Index()
}
}
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.X, lbl, 0, false)
extractExprs(tw, expr.Indices, lbl, 1, 1)
case *ast.SliceExpr:
if expr == nil {
return
}
kind = dbscheme.SliceExpr.Index()
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.Low, lbl, 1)
extractExpr(tw, expr.High, lbl, 2)
extractExpr(tw, expr.Max, lbl, 3)
extractExpr(tw, expr.X, lbl, 0, false)
extractExpr(tw, expr.Low, lbl, 1, false)
extractExpr(tw, expr.High, lbl, 2, false)
extractExpr(tw, expr.Max, lbl, 3, false)
case *ast.TypeAssertExpr:
if expr == nil {
return
}
kind = dbscheme.TypeAssertExpr.Index()
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.Type, lbl, 1)
extractExpr(tw, expr.X, lbl, 0, false)
// expr.Type can be `nil` if this is the `x.(type)` in a type switch.
if expr.Type != nil {
extractExpr(tw, expr.Type, lbl, 1, false)
}
case *ast.CallExpr:
if expr == nil {
return
}
kind = dbscheme.CallOrConversionExpr.Index()
extractExpr(tw, expr.Fun, lbl, 0)
extractExpr(tw, expr.Fun, lbl, 0, false)
extractExprs(tw, expr.Args, lbl, 1, 1)
if expr.Ellipsis.IsValid() {
dbscheme.HasEllipsisTable.Emit(tw, lbl)
@@ -1026,14 +1037,14 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
return
}
kind = dbscheme.StarExpr.Index()
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.X, lbl, 0, false)
case *ast.KeyValueExpr:
if expr == nil {
return
}
kind = dbscheme.KeyValueExpr.Index()
extractExpr(tw, expr.Key, lbl, 0)
extractExpr(tw, expr.Value, lbl, 1)
extractExpr(tw, expr.Key, lbl, 0, false)
extractExpr(tw, expr.Value, lbl, 1, false)
case *ast.UnaryExpr:
if expr == nil {
return
@@ -1047,7 +1058,7 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
}
kind = tp.Index()
}
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.X, lbl, 0, false)
case *ast.BinaryExpr:
if expr == nil {
return
@@ -1062,16 +1073,17 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
log.Fatalf("unsupported binary operator %s", expr.Op)
}
kind = tp.Index()
extractExpr(tw, expr.X, lbl, 0)
extractExpr(tw, expr.Y, lbl, 1)
skipLeft := skipExtractingValueForLeftOperand(tw, expr)
extractExpr(tw, expr.X, lbl, 0, skipLeft)
extractExpr(tw, expr.Y, lbl, 1, false)
}
case *ast.ArrayType:
if expr == nil {
return
}
kind = dbscheme.ArrayTypeExpr.Index()
extractExpr(tw, expr.Len, lbl, 0)
extractExpr(tw, expr.Elt, lbl, 1)
extractExpr(tw, expr.Len, lbl, 0, false)
extractExpr(tw, expr.Elt, lbl, 1, false)
case *ast.StructType:
if expr == nil {
return
@@ -1100,8 +1112,8 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
return
}
kind = dbscheme.MapTypeExpr.Index()
extractExpr(tw, expr.Key, lbl, 0)
extractExpr(tw, expr.Value, lbl, 1)
extractExpr(tw, expr.Key, lbl, 0, false)
extractExpr(tw, expr.Value, lbl, 1, false)
case *ast.ChanType:
if expr == nil {
return
@@ -1111,13 +1123,15 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
log.Fatalf("unsupported channel direction %v", expr.Dir)
}
kind = tp.Index()
extractExpr(tw, expr.Value, lbl, 0)
extractExpr(tw, expr.Value, lbl, 0, false)
default:
log.Fatalf("unknown expression of type %T", expr)
}
dbscheme.ExprsTable.Emit(tw, lbl, kind, parent, idx)
extractNodeLocation(tw, expr, lbl)
extractValueOf(tw, expr, lbl)
if !skipExtractingValue {
extractValueOf(tw, expr, lbl)
}
}
// extractExprs extracts AST information for a list of expressions, which are children of
@@ -1126,11 +1140,9 @@ func extractExpr(tw *trap.Writer, expr ast.Expr, parent trap.Label, idx int) {
// each child over its preceding child (usually either 1 for assigning increasing indices, or
// -1 for decreasing indices)
func extractExprs(tw *trap.Writer, exprs []ast.Expr, parent trap.Label, idx int, dir int) {
if exprs != nil {
for _, expr := range exprs {
extractExpr(tw, expr, parent, idx)
idx += dir
}
for _, expr := range exprs {
extractExpr(tw, expr, parent, idx, false)
idx += dir
}
}
@@ -1194,11 +1206,11 @@ func extractFields(tw *trap.Writer, fields *ast.FieldList, parent trap.Label, id
extractNodeLocation(tw, field, lbl)
if field.Names != nil {
for i, name := range field.Names {
extractExpr(tw, name, lbl, i+1)
extractExpr(tw, name, lbl, i+1, false)
}
}
extractExpr(tw, field.Type, lbl, 0)
extractExpr(tw, field.Tag, lbl, -1)
extractExpr(tw, field.Type, lbl, 0, false)
extractExpr(tw, field.Tag, lbl, -1, false)
extractDoc(tw, field.Doc, lbl)
idx += dir
}
@@ -1229,21 +1241,21 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
return
}
kind = dbscheme.LabeledStmtType.Index()
extractExpr(tw, stmt.Label, lbl, 0)
extractExpr(tw, stmt.Label, lbl, 0, false)
extractStmt(tw, stmt.Stmt, lbl, 1)
case *ast.ExprStmt:
if stmt == nil {
return
}
kind = dbscheme.ExprStmtType.Index()
extractExpr(tw, stmt.X, lbl, 0)
extractExpr(tw, stmt.X, lbl, 0, false)
case *ast.SendStmt:
if stmt == nil {
return
}
kind = dbscheme.SendStmtType.Index()
extractExpr(tw, stmt.Chan, lbl, 0)
extractExpr(tw, stmt.Value, lbl, 1)
extractExpr(tw, stmt.Chan, lbl, 0, false)
extractExpr(tw, stmt.Value, lbl, 1, false)
case *ast.IncDecStmt:
if stmt == nil {
return
@@ -1255,7 +1267,7 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
} else {
log.Fatalf("unsupported increment/decrement operator %v", stmt.Tok)
}
extractExpr(tw, stmt.X, lbl, 0)
extractExpr(tw, stmt.X, lbl, 0, false)
case *ast.AssignStmt:
if stmt == nil {
return
@@ -1272,13 +1284,13 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
return
}
kind = dbscheme.GoStmtType.Index()
extractExpr(tw, stmt.Call, lbl, 0)
extractExpr(tw, stmt.Call, lbl, 0, false)
case *ast.DeferStmt:
if stmt == nil {
return
}
kind = dbscheme.DeferStmtType.Index()
extractExpr(tw, stmt.Call, lbl, 0)
extractExpr(tw, stmt.Call, lbl, 0, false)
case *ast.ReturnStmt:
kind = dbscheme.ReturnStmtType.Index()
extractExprs(tw, stmt.Results, lbl, 0, 1)
@@ -1298,7 +1310,7 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
default:
log.Fatalf("unsupported branch statement type %v", stmt.Tok)
}
extractExpr(tw, stmt.Label, lbl, 0)
extractExpr(tw, stmt.Label, lbl, 0, false)
case *ast.BlockStmt:
if stmt == nil {
return
@@ -1312,7 +1324,7 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
}
kind = dbscheme.IfStmtType.Index()
extractStmt(tw, stmt.Init, lbl, 0)
extractExpr(tw, stmt.Cond, lbl, 1)
extractExpr(tw, stmt.Cond, lbl, 1, false)
extractStmt(tw, stmt.Body, lbl, 2)
extractStmt(tw, stmt.Else, lbl, 3)
emitScopeNodeInfo(tw, stmt, lbl)
@@ -1330,7 +1342,7 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
}
kind = dbscheme.ExprSwitchStmtType.Index()
extractStmt(tw, stmt.Init, lbl, 0)
extractExpr(tw, stmt.Tag, lbl, 1)
extractExpr(tw, stmt.Tag, lbl, 1, false)
extractStmt(tw, stmt.Body, lbl, 2)
emitScopeNodeInfo(tw, stmt, lbl)
case *ast.TypeSwitchStmt:
@@ -1359,7 +1371,7 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
}
kind = dbscheme.ForStmtType.Index()
extractStmt(tw, stmt.Init, lbl, 0)
extractExpr(tw, stmt.Cond, lbl, 1)
extractExpr(tw, stmt.Cond, lbl, 1, false)
extractStmt(tw, stmt.Post, lbl, 2)
extractStmt(tw, stmt.Body, lbl, 3)
emitScopeNodeInfo(tw, stmt, lbl)
@@ -1368,9 +1380,9 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
return
}
kind = dbscheme.RangeStmtType.Index()
extractExpr(tw, stmt.Key, lbl, 0)
extractExpr(tw, stmt.Value, lbl, 1)
extractExpr(tw, stmt.X, lbl, 2)
extractExpr(tw, stmt.Key, lbl, 0, false)
extractExpr(tw, stmt.Value, lbl, 1, false)
extractExpr(tw, stmt.X, lbl, 2, false)
extractStmt(tw, stmt.Body, lbl, 3)
emitScopeNodeInfo(tw, stmt, lbl)
default:
@@ -1386,13 +1398,10 @@ func extractStmt(tw *trap.Writer, stmt ast.Stmt, parent trap.Label, idx int) {
// each child over its preceding child (usually either 1 for assigning increasing indices, or
// -1 for decreasing indices)
func extractStmts(tw *trap.Writer, stmts []ast.Stmt, parent trap.Label, idx int, dir int) {
if stmts != nil {
for _, stmt := range stmts {
extractStmt(tw, stmt, parent, idx)
idx += dir
}
for _, stmt := range stmts {
extractStmt(tw, stmt, parent, idx)
idx += dir
}
}
// extractDecl extracts AST information for the given declaration
@@ -1428,8 +1437,8 @@ func extractDecl(tw *trap.Writer, decl ast.Decl, parent trap.Label, idx int) {
}
kind = dbscheme.FuncDeclType.Index()
extractFields(tw, decl.Recv, lbl, -1, -1)
extractExpr(tw, decl.Name, lbl, 0)
extractExpr(tw, decl.Type, lbl, 1)
extractExpr(tw, decl.Name, lbl, 0, false)
extractExpr(tw, decl.Type, lbl, 1, false)
extractStmt(tw, decl.Body, lbl, 2)
extractDoc(tw, decl.Doc, lbl)
extractTypeParamDecls(tw, decl.Type.TypeParams, lbl)
@@ -1455,8 +1464,8 @@ func extractSpec(tw *trap.Writer, spec ast.Spec, parent trap.Label, idx int) {
return
}
kind = dbscheme.ImportSpecType.Index()
extractExpr(tw, spec.Name, lbl, 0)
extractExpr(tw, spec.Path, lbl, 1)
extractExpr(tw, spec.Name, lbl, 0, false)
extractExpr(tw, spec.Path, lbl, 1, false)
extractDoc(tw, spec.Doc, lbl)
case *ast.ValueSpec:
if spec == nil {
@@ -1464,9 +1473,9 @@ func extractSpec(tw *trap.Writer, spec ast.Spec, parent trap.Label, idx int) {
}
kind = dbscheme.ValueSpecType.Index()
for i, name := range spec.Names {
extractExpr(tw, name, lbl, -(1 + i))
extractExpr(tw, name, lbl, -(1 + i), false)
}
extractExpr(tw, spec.Type, lbl, 0)
extractExpr(tw, spec.Type, lbl, 0, false)
extractExprs(tw, spec.Values, lbl, 1, 1)
extractDoc(tw, spec.Doc, lbl)
case *ast.TypeSpec:
@@ -1478,9 +1487,9 @@ func extractSpec(tw *trap.Writer, spec ast.Spec, parent trap.Label, idx int) {
} else {
kind = dbscheme.TypeDefSpecType.Index()
}
extractExpr(tw, spec.Name, lbl, 0)
extractExpr(tw, spec.Name, lbl, 0, false)
extractTypeParamDecls(tw, spec.TypeParams, lbl)
extractExpr(tw, spec.Type, lbl, 1)
extractExpr(tw, spec.Type, lbl, 1, false)
extractDoc(tw, spec.Doc, lbl)
}
dbscheme.SpecsTable.Emit(tw, lbl, kind, parent, idx)
@@ -1909,7 +1918,7 @@ func flattenBinaryExprTree(tw *trap.Writer, e ast.Expr, parent trap.Label, idx i
idx = flattenBinaryExprTree(tw, binaryexpr.X, parent, idx)
idx = flattenBinaryExprTree(tw, binaryexpr.Y, parent, idx)
} else {
extractExpr(tw, e, parent, idx)
extractExpr(tw, e, parent, idx, false)
idx = idx + 1
}
return idx
@@ -1931,17 +1940,17 @@ func extractTypeParamDecls(tw *trap.Writer, fields *ast.FieldList, parent trap.L
extractNodeLocation(tw, field, lbl)
if field.Names != nil {
for i, name := range field.Names {
extractExpr(tw, name, lbl, i+1)
extractExpr(tw, name, lbl, i+1, false)
}
}
extractExpr(tw, field.Type, lbl, 0)
extractExpr(tw, field.Type, lbl, 0, false)
extractDoc(tw, field.Doc, lbl)
idx += 1
}
}
// populateTypeParamParents sets `parent` as the parent of the elements of `typeparams`
func populateTypeParamParents(tw *trap.Writer, typeparams *types.TypeParamList, parent types.Object) {
func populateTypeParamParents(typeparams *types.TypeParamList, parent types.Object) {
if typeparams != nil {
for idx := 0; idx < typeparams.Len(); idx++ {
setTypeParamParent(typeparams.At(idx), parent)
@@ -1963,16 +1972,6 @@ func getObjectBeingUsed(tw *trap.Writer, ident *ast.Ident) types.Object {
}
}
// tryGetGenericType returns the generic type of `tp`, and a boolean indicating
// whether it is the same as `tp`.
func tryGetGenericType(tp types.Type) (*types.Named, bool) {
if namedType, ok := tp.(*types.Named); ok {
originType := namedType.Origin()
return originType, namedType == originType
}
return nil, false
}
// trackInstantiatedStructFields tries to give the fields of an instantiated
// struct type underlying `tp` the same labels as the corresponding fields of
// the generic struct type. This is so that when we come across the
@@ -2023,3 +2022,24 @@ func setTypeParamParent(tp *types.TypeParam, newobj types.Object) {
log.Fatalf("Parent of type parameter '%s %s' being set to a different value: '%s' vs '%s'", tp.String(), tp.Constraint().String(), obj, newobj)
}
}
// skipExtractingValueForLeftOperand returns true if the left operand of `be`
// should not have its value extracted because it is an intermediate value in a
// string concatenation - specifically that the right operand is a string
// literal
func skipExtractingValueForLeftOperand(tw *trap.Writer, be *ast.BinaryExpr) bool {
// check `be` has string type
tpVal := tw.Package.TypesInfo.Types[be]
if tpVal.Value == nil || tpVal.Value.Kind() != constant.String {
return false
}
// check that the right operand of `be` is a basic literal
if _, isBasicLit := be.Y.(*ast.BasicLit); !isBasicLit {
return false
}
// check that the left operand of `be` is not a basic literal
if _, isBasicLit := be.X.(*ast.BasicLit); isBasicLit {
return false
}
return true
}

View File

@@ -0,0 +1,5 @@
* ---
category: minorAnalysis
---
* Added strings.ReplaceAll, http.ParseMultipartForm sanitizers and remove path sanitizer.

View File

@@ -754,13 +754,19 @@ class SliceExpr extends @sliceexpr, Expr {
*
* ```go
* x.(T)
* x.(type)
* ```
*/
class TypeAssertExpr extends @typeassertexpr, Expr {
/** Gets the base expression whose type is being asserted. */
Expr getExpr() { result = this.getChildExpr(0) }
/** Gets the expression representing the asserted type. */
/**
* Gets the expression representing the asserted type.
*
* Note that this is not defined when the type assertion is of the form
* `x.(type)`, as found in type switches.
*/
Expr getTypeExpr() { result = this.getChildExpr(1) }
override predicate mayHaveOwnSideEffects() { any() }

View File

@@ -119,7 +119,13 @@ class Entity extends @object {
*/
Scope getScope() { objectscopes(this, result) }
/** Gets the declaring identifier for this entity. */
/**
* Gets the declaring identifier for this entity, if any.
*
* Note that type switch statements which define a new variable in the guard
* actually have a new variable (of the right type) implicitly declared at
* the beginning of each case clause, and these do not have a declaration.
*/
Ident getDeclaration() { result.declares(this) }
/** Gets a reference to this entity. */

View File

@@ -747,13 +747,25 @@ class IfStmt extends @ifstmt, Stmt, ScopeNode {
* ```
*/
class CaseClause extends @caseclause, Stmt, ScopeNode {
/** Gets the `i`th expression of this `case` clause (0-based). */
/**
* Gets the `i`th expression of this `case` clause (0-based).
*
* Note that the default clause does not have any expressions.
*/
Expr getExpr(int i) { result = this.getChildExpr(-(i + 1)) }
/** Gets an expression of this `case` clause. */
/**
* Gets an expression of this `case` clause, if any.
*
* Note that the default clause does not have any expressions.
*/
Expr getAnExpr() { result = this.getAChildExpr() }
/** Gets the number of expressions of this `case` clause. */
/**
* Gets the number of expressions of this `case` clause.
*
* Note that the default clause does not have any expressions.
*/
int getNumExpr() { result = this.getNumChildExpr() }
/** Gets the `i`th statement of this `case` clause (0-based). */

View File

@@ -11,12 +11,19 @@ newtype TLocation =
TSynthLocation(string filepath, int startline, int startcolumn, int endline, int endcolumn) {
any(DataFlow::Node n).hasLocationInfo(filepath, startline, startcolumn, endline, endcolumn) and
// avoid overlap with existing DB locations
not exists(File f |
locations_default(_, f, startline, startcolumn, endline, endcolumn) and
f.getAbsolutePath() = filepath
)
not existingDBLocation(filepath, startline, startcolumn, endline, endcolumn)
}
pragma[nomagic]
private predicate existingDBLocation(
string filepath, int startline, int startcolumn, int endline, int endcolumn
) {
exists(File f |
locations_default(_, f, startline, startcolumn, endline, endcolumn) and
f.getAbsolutePath() = filepath
)
}
/**
* A location as given by a file, a start line, a start column,
* an end line, and an end column.

View File

@@ -5,6 +5,7 @@
import go
import semmle.go.dataflow.barrierguardutil.RegexpCheck
import DataFlow
/**
* Provides extension points for customizing the taint tracking configuration for reasoning about
@@ -74,13 +75,12 @@ module TaintedPath {
}
/**
* A call to `[file]path.Clean("/" + e)`, considered to sanitize `e` against path traversal.
* A call to `filepath.Clean("/" + e)`, considered to sanitize `e` against path traversal.
*/
class FilepathCleanSanitizer extends Sanitizer {
FilepathCleanSanitizer() {
exists(DataFlow::CallNode cleanCall, StringOps::Concatenation concatNode |
cleanCall =
any(Function f | f.hasQualifiedName(["path", "path/filepath"], "Clean")).getACall() and
cleanCall = any(Function f | f.hasQualifiedName("path/filepath", "Clean")).getACall() and
concatNode = cleanCall.getArgument(0) and
concatNode.getOperand(0).asExpr().(StringLit).getValue() = "/" and
this = cleanCall.getResult()
@@ -88,6 +88,16 @@ module TaintedPath {
}
}
/**An call to ParseMultipartForm creates multipart.Form and cleans multipart.Form.FileHeader.Filename using path.Base() */
class MultipartClean extends Sanitizer {
MultipartClean() {
exists(DataFlow::FieldReadNode frn |
frn.getField().hasQualifiedName("mime/multipart", "FileHeader", "Filename") and
this = frn
)
}
}
/**
* A check of the form `!strings.Contains(nd, "..")`, considered as a sanitizer guard for
* path traversal.
@@ -106,6 +116,21 @@ module TaintedPath {
}
}
/**
* A replacement of the form `!strings.ReplaceAll(nd, "..")` or `!strings.ReplaceAll(nd, ".")`, considered as a sanitizer for
* path traversal.
*/
class DotDotReplace extends Sanitizer {
DotDotReplace() {
exists(DataFlow::CallNode cleanCall, DataFlow::Node valueNode |
cleanCall = any(Function f | f.hasQualifiedName("strings", "ReplaceAll")).getACall() and
valueNode = cleanCall.getArgument(1) and
valueNode.asExpr().(StringLit).getValue() = ["..", "."] and
this = cleanCall.getResult()
)
}
}
/**
* A node `nd` guarded by a check that ensures it is contained within some root folder,
* considered as a sanitizer for path traversal.

View File

@@ -0,0 +1,11 @@
| tst.go:4:6:4:8 | "a" | a |
| tst.go:4:6:4:14 | ...+... | <no string value stored> |
| tst.go:4:6:4:20 | ...+... | <no string value stored> |
| tst.go:4:6:4:26 | ...+... | <no string value stored> |
| tst.go:4:6:4:32 | ...+... | <no string value stored> |
| tst.go:4:6:4:38 | ...+... | abcdef |
| tst.go:4:12:4:14 | "b" | b |
| tst.go:4:18:4:20 | "c" | c |
| tst.go:4:24:4:26 | "d" | d |
| tst.go:4:30:4:32 | "e" | e |
| tst.go:4:36:4:38 | "f" | f |

View File

@@ -0,0 +1,5 @@
package main
func main() {
_ = "a" + "b" + "c" + "d" + "e" + "f"
}

View File

@@ -0,0 +1,17 @@
import go
string checkStringValue(Expr e) {
result = e.getStringValue()
or
not exists(e.getStringValue()) and result = "<no string value stored>"
}
from Expr e
where e.getType() instanceof StringType
// We should get string values for `"a"`, `"b"`, `"c"` and `"a" + "b" + "c"
// but not `"a" + "b"`. In the extractor we avoid storing the value of
// intermediate strings in string concatenations because in pathological cases
// this could lead to a quadratic blowup in the size of string values stored,
// which then causes performance problems when we iterate through all string
// values.
select e, checkStringValue(e)

View File

@@ -2,18 +2,19 @@ edges
| TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:13:18:13:30 | call to Query | provenance | |
| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:16:29:16:40 | tainted_path | provenance | |
| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:20:57:20:68 | tainted_path | provenance | |
| TaintedPath.go:13:18:13:30 | call to Query | TaintedPath.go:67:39:67:56 | ...+... | provenance | |
| TaintedPath.go:20:57:20:68 | tainted_path | TaintedPath.go:20:28:20:69 | call to Join | provenance | |
| tst.go:14:2:14:39 | ... := ...[1] | tst.go:17:41:17:56 | selection of Filename | provenance | |
| TaintedPath.go:67:39:67:56 | ...+... | TaintedPath.go:67:28:67:57 | call to Clean | provenance | |
nodes
| TaintedPath.go:13:18:13:22 | selection of URL | semmle.label | selection of URL |
| TaintedPath.go:13:18:13:30 | call to Query | semmle.label | call to Query |
| TaintedPath.go:16:29:16:40 | tainted_path | semmle.label | tainted_path |
| TaintedPath.go:20:28:20:69 | call to Join | semmle.label | call to Join |
| TaintedPath.go:20:57:20:68 | tainted_path | semmle.label | tainted_path |
| tst.go:14:2:14:39 | ... := ...[1] | semmle.label | ... := ...[1] |
| tst.go:17:41:17:56 | selection of Filename | semmle.label | selection of Filename |
| TaintedPath.go:67:28:67:57 | call to Clean | semmle.label | call to Clean |
| TaintedPath.go:67:39:67:56 | ...+... | semmle.label | ...+... |
subpaths
#select
| TaintedPath.go:16:29:16:40 | tainted_path | TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:16:29:16:40 | tainted_path | This path depends on a $@. | TaintedPath.go:13:18:13:22 | selection of URL | user-provided value |
| TaintedPath.go:20:28:20:69 | call to Join | TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:20:28:20:69 | call to Join | This path depends on a $@. | TaintedPath.go:13:18:13:22 | selection of URL | user-provided value |
| tst.go:17:41:17:56 | selection of Filename | tst.go:14:2:14:39 | ... := ...[1] | tst.go:17:41:17:56 | selection of Filename | This path depends on a $@. | tst.go:14:2:14:39 | ... := ...[1] | user-provided value |
| TaintedPath.go:67:28:67:57 | call to Clean | TaintedPath.go:13:18:13:22 | selection of URL | TaintedPath.go:67:28:67:57 | call to Clean | This path depends on a $@. | TaintedPath.go:13:18:13:22 | selection of URL | user-provided value |

View File

@@ -31,6 +31,10 @@ func handler(w http.ResponseWriter, r *http.Request) {
w.Write(data)
}
// GOOD: Sanitized by strings.ReplaceAll and replaces all .. with empty string
data, _ = ioutil.ReadFile(strings.ReplaceAll(tainted_path, "..", ""))
w.Write(data)
// GOOD: This can only read inside the provided safe path
_, err := filepath.Rel("/home/user/safepath", tainted_path)
if err == nil {
@@ -53,10 +57,23 @@ func handler(w http.ResponseWriter, r *http.Request) {
w.Write(data)
}
// GOOD: Sanitized by [file]path.Clean with a prepended '/' forcing interpretation
// GOOD: Sanitized by filepath.Clean with a prepended '/' forcing interpretation
// as an absolute path, so that Clean will throw away any leading `..` components.
data, _ = ioutil.ReadFile(filepath.Clean("/" + tainted_path))
w.Write(data)
// BAD: Sanitized by path.Clean with a prepended '/' forcing interpretation
// as an absolute path, however is not sufficient for Windows paths.
data, _ = ioutil.ReadFile(path.Clean("/" + tainted_path))
w.Write(data)
// GOOD: Multipart.Form.FileHeader.Filename sanitized by filepath.Base when calling ParseMultipartForm
r.ParseMultipartForm(32 << 20)
form := r.MultipartForm
files, ok := form.File["files"]
if !ok {
return
}
data, _ = ioutil.ReadFile(files[0].Filename)
w.Write(data)
}

View File

@@ -28,25 +28,27 @@ newtype TApplicationModeEndpoint =
AutomodelJavaUtil::isFromSource(call) and
exists(Argument argExpr |
arg.asExpr() = argExpr and call = argExpr.getCall() and not argExpr.isVararg()
)
) and
not AutomodelJavaUtil::isUnexploitableType(arg.getType())
} or
TInstanceArgument(Call call, DataFlow::Node arg) {
AutomodelJavaUtil::isFromSource(call) and
arg = DataFlow::getInstanceArgument(call) and
not call instanceof ConstructorCall
not call instanceof ConstructorCall and
not AutomodelJavaUtil::isUnexploitableType(arg.getType())
} or
TImplicitVarargsArray(Call call, DataFlow::ImplicitVarargsArray arg, int idx) {
AutomodelJavaUtil::isFromSource(call) and
call = arg.getCall() and
idx = call.getCallee().getVaragsParameterIndex()
idx = call.getCallee().getVaragsParameterIndex() and
not AutomodelJavaUtil::isUnexploitableType(arg.getType())
} or
TMethodReturnValue(Call call) {
TMethodReturnValue(MethodCall call) {
AutomodelJavaUtil::isFromSource(call) and
not call instanceof ConstructorCall
not AutomodelJavaUtil::isUnexploitableType(call.getType())
} or
TOverriddenParameter(Parameter p, Method overriddenMethod) {
AutomodelJavaUtil::isFromSource(p) and
not p.getCallable().callsConstructor(_) and
p.getCallable().(Method).overrides(overriddenMethod)
}
@@ -163,7 +165,7 @@ class ImplicitVarargsArray extends CallArgument, TImplicitVarargsArray {
* may be a source.
*/
class MethodReturnValue extends ApplicationModeEndpoint, TMethodReturnValue {
Call call;
MethodCall call;
MethodReturnValue() { this = TMethodReturnValue(call) }

View File

@@ -19,11 +19,11 @@ class Test {
AtomicReference<String> reference = new AtomicReference<>(); // uninteresting (parameterless constructor)
reference.set( // $ sinkModelCandidate=set(Object):Argument[this]
args[0] // $ negativeSinkExample=set(Object):Argument[0] // modeled as a flow step
); // $ negativeSourceExample=set(Object):ReturnValue // return type is void
); // not a source candidate (return type is void)
}
public static void callSupplier(Supplier<String> supplier) {
supplier.get(); // $ sourceModelCandidate=get():ReturnValue
supplier.get(); // not a source candidate (lambda flow)
}
public static void copyFiles(Path source, Path target, CopyOption option) throws Exception {
@@ -52,7 +52,7 @@ class Test {
public static int compareFiles(File f1, File f2) {
return f1.compareTo( // $ negativeSinkExample=compareTo(File):Argument[this]
f2 // $ negativeSinkExample=compareTo(File):Argument[0] // modeled as not a sink
); // $ negativeSourceExample=compareTo(File):ReturnValue // return type is int
); // not a source candidate (return type is int)
}
public static void FilesWalkExample(Path p, FileVisitOption o) throws Exception {
@@ -66,6 +66,7 @@ class Test {
public static void WebSocketExample(URLConnection c) throws Exception {
c.getInputStream(); // $ sinkModelCandidate=getInputStream():Argument[this] positiveSourceExample=getInputStream():ReturnValue(remote) // not a source candidate (manual modeling)
c.connect(); // $ sinkModelCandidate=connect():Argument[this] // not a source candidate (return type is void)
}
public static void fileFilterExample(File f, FileFilter ff) {
@@ -102,10 +103,10 @@ class MoreTests {
Files.delete(
p // $ sinkModelCandidate=delete(Path):Argument[0] positiveSinkExample=delete(Path):Argument[0](path-injection)
); // $ negativeSourceExample=delete(Path):ReturnValue // return type is void
); // not a source candidate (return type is void)
Files.deleteIfExists(
p // $ sinkModelCandidate=deleteIfExists(Path):Argument[0] positiveSinkExample=deleteIfExists(Path):Argument[0](path-injection)
); // $ negativeSourceExample=deleteIfExists(Path):ReturnValue // return type is boolean
); // not a source candidate (return type is boolean)
}
}

View File

@@ -2,7 +2,7 @@ package com.github.codeql.test;
public class MyWriter extends java.io.Writer {
@Override
public void write(char[] cbuf, int off, int len) { // $ sinkModelCandidate=write(char[],int,int):Argument[this] sourceModelCandidate=write(char[],int,int):Parameter[this] sourceModelCandidate=write(char[],int,int):Parameter[0]
public void write(char[] cbuf, int off, int len) { // $ sinkModelCandidate=write(char[],int,int):Argument[this] positiveSinkExample=write(char[],int,int):Argument[0](file-content-store) sourceModelCandidate=write(char[],int,int):Parameter[this] sourceModelCandidate=write(char[],int,int):Parameter[0]
}
@Override

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* About 6,700 summary models and 6,800 neutral summary models for the JDK that were generated using data flow have been added. This may lead to new alerts being reported.

View File

@@ -0,0 +1,7 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["com.sun.jmx.remote.internal", "ClientCommunicatorAdmin", "gotIOException", "(IOException)", "summary", "df-generated"]

View File

@@ -0,0 +1,49 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.applet", "Applet", True, "getAppletContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "Applet", True, "getCodeBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "Applet", True, "getDocumentBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "Applet", True, "getImage", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "Applet", True, "getImage", "(URL,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "Applet", True, "getImage", "(URL,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "Applet", True, "setStub", "(AppletStub)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.applet", "AppletContext", True, "getApplets", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "AppletContext", True, "getImage", "(URL)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.applet", "AppletContext", True, "getImage", "(URL)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "AppletContext", True, "getImage", "(URL)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "AppletStub", True, "getAppletContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "AppletStub", True, "getCodeBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.applet", "AppletStub", True, "getDocumentBase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.applet", "Applet", "destroy", "()", "summary", "df-generated"]
- ["java.applet", "Applet", "getAppletInfo", "()", "summary", "df-generated"]
- ["java.applet", "Applet", "getAudioClip", "(URL)", "summary", "df-generated"]
- ["java.applet", "Applet", "getAudioClip", "(URL,String)", "summary", "df-generated"]
- ["java.applet", "Applet", "getParameter", "(String)", "summary", "df-generated"]
- ["java.applet", "Applet", "getParameterInfo", "()", "summary", "df-generated"]
- ["java.applet", "Applet", "init", "()", "summary", "df-generated"]
- ["java.applet", "Applet", "isActive", "()", "summary", "df-generated"]
- ["java.applet", "Applet", "newAudioClip", "(URL)", "summary", "df-generated"]
- ["java.applet", "Applet", "play", "(URL)", "summary", "df-generated"]
- ["java.applet", "Applet", "play", "(URL,String)", "summary", "df-generated"]
- ["java.applet", "Applet", "showStatus", "(String)", "summary", "df-generated"]
- ["java.applet", "Applet", "start", "()", "summary", "df-generated"]
- ["java.applet", "Applet", "stop", "()", "summary", "df-generated"]
- ["java.applet", "AppletContext", "getApplet", "(String)", "summary", "df-generated"]
- ["java.applet", "AppletContext", "getAudioClip", "(URL)", "summary", "df-generated"]
- ["java.applet", "AppletContext", "getStream", "(String)", "summary", "df-generated"]
- ["java.applet", "AppletContext", "getStreamKeys", "()", "summary", "df-generated"]
- ["java.applet", "AppletContext", "setStream", "(String,InputStream)", "summary", "df-generated"]
- ["java.applet", "AppletContext", "showDocument", "(URL)", "summary", "df-generated"]
- ["java.applet", "AppletContext", "showDocument", "(URL,String)", "summary", "df-generated"]
- ["java.applet", "AppletContext", "showStatus", "(String)", "summary", "df-generated"]
- ["java.applet", "AppletStub", "appletResize", "(int,int)", "summary", "df-generated"]
- ["java.applet", "AppletStub", "getParameter", "(String)", "summary", "df-generated"]
- ["java.applet", "AppletStub", "isActive", "()", "summary", "df-generated"]

View File

@@ -0,0 +1,15 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.awt", "Component", True, "getAccessibleContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.awt", "Component", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.awt", "Component", "resize", "(Dimension)", "summary", "df-generated"]
- ["java.awt", "Component", "resize", "(int,int)", "summary", "df-generated"]
- ["java.awt", "Container", "isValidateRoot", "()", "summary", "df-generated"]

View File

@@ -0,0 +1,85 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.beans.beancontext", "BeanContext", True, "addBeanContextMembershipListener", "(BeanContextMembershipListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContext", True, "getResource", "(String,BeanContextChild)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContext", True, "instantiateChild", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextChild", True, "getBeanContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextChild", True, "setBeanContext", "(BeanContext)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextChildSupport", True, "BeanContextChildSupport", "(BeanContextChild)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextChildSupport", True, "getBeanContextChildPeer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextEvent", True, "getBeanContext", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextEvent", True, "getPropagatedFrom", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextEvent", True, "setPropagatedFrom", "(BeanContext)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Collection)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Collection)", "", "Argument[1].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Object[])", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", True, "BeanContextMembershipEvent", "(BeanContext,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", True, "iterator", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", True, "toArray", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceAvailableEvent", True, "BeanContextServiceAvailableEvent", "(BeanContextServices,Class)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceAvailableEvent", True, "getSourceAsBeanContextServices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceRevokedEvent", True, "BeanContextServiceRevokedEvent", "(BeanContextServices,Class,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceRevokedEvent", True, "getSourceAsBeanContextServices", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", True, "addBeanContextServicesListener", "(BeanContextServicesListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", True, "getCurrentServiceClasses", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "BeanContextServicesSupport", "(BeanContextServices,Locale,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesSupport", True, "getBeanContextServicesPeer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean,boolean)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "BeanContextSupport", "(BeanContext,Locale,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "getBeanContextPeer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "getLocale", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "readChildren", "(ObjectInputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "setLocale", "(Locale)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", True, "writeChildren", "(ObjectOutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.beans.beancontext", "BeanContext", "getResourceAsStream", "(String,BeanContextChild)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContext", "removeBeanContextMembershipListener", "(BeanContextMembershipListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChild", "addPropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChild", "addVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChild", "removePropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChild", "removeVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChildSupport", "firePropertyChange", "(String,Object,Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChildSupport", "fireVetoableChange", "(String,Object,Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChildSupport", "isDelegated", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextChildSupport", "validatePendingSetBeanContext", "(BeanContext)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextEvent", "isPropagated", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", "contains", "(Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextMembershipEvent", "size", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceAvailableEvent", "getCurrentServiceSelectors", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceAvailableEvent", "getServiceClass", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceProvider", "getCurrentServiceSelectors", "(BeanContextServices,Class)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceProvider", "getService", "(BeanContextServices,Object,Class,Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceProvider", "releaseService", "(BeanContextServices,Object,Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceRevokedEvent", "getServiceClass", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceRevokedEvent", "isCurrentServiceInvalidNow", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceRevokedEvent", "isServiceClass", "(Class)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServiceRevokedListener", "serviceRevoked", "(BeanContextServiceRevokedEvent)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "addService", "(Class,BeanContextServiceProvider)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "getCurrentServiceSelectors", "(Class)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "getService", "(BeanContextChild,Object,Class,Object,BeanContextServiceRevokedListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "hasService", "(Class)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "releaseService", "(BeanContextChild,Object,Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "removeBeanContextServicesListener", "(BeanContextServicesListener)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServices", "revokeService", "(Class,BeanContextServiceProvider,boolean)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextServicesListener", "serviceAvailable", "(BeanContextServiceAvailableEvent)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", "containsKey", "(Object)", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", "initialize", "()", "summary", "df-generated"]
- ["java.beans.beancontext", "BeanContextSupport", "isSerializing", "()", "summary", "df-generated"]

View File

@@ -0,0 +1,257 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.beans", "BeanInfo", True, "getBeanDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "BeanInfo", True, "getEventSetDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "BeanInfo", True, "getMethodDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "BeanInfo", True, "getPropertyDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Beans", True, "getInstanceOf", "(Object,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext)", "", "Argument[0]", "Argument[2].Element", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext,AppletInitializer)", "", "Argument[0]", "Argument[2].Element", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext,AppletInitializer)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Beans", True, "instantiate", "(ClassLoader,String,BeanContext,AppletInitializer)", "", "Argument[2].Element", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "DefaultPersistenceDelegate", True, "DefaultPersistenceDelegate", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "get", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "get", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "getExceptionListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "getPersistenceDelegate", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "remove", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "setExceptionListener", "(ExceptionListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "writeExpression", "(Expression)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "writeObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Encoder", True, "writeStatement", "(Statement)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "EventHandler", "(Object,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "getAction", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "getEventPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "getListenerMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "EventHandler", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(Class,String,Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(Class,String,Class,String[],String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(Class,String,Class,String[],String,String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,MethodDescriptor[],Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "EventSetDescriptor", "(String,Class,Method[],Method,Method,Method)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "getListenerMethodDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "EventSetDescriptor", True, "getListenerMethods", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,Object,String,Object[])", "", "Argument[3].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "Expression", "(Object,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Expression", True, "getValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Expression", True, "setValue", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "attributeNames", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "getDisplayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "getShortDescription", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "getValue", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "setDisplayName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "setShortDescription", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "setValue", "(String,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "FeatureDescriptor", True, "setValue", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyChangeEvent", True, "IndexedPropertyChangeEvent", "(Object,String,Object,Object,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Class,String,String,String,String)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "IndexedPropertyDescriptor", "(String,Method,Method,Method,Method)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "setIndexedReadMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", True, "setIndexedWriteMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "IntrospectionException", True, "IntrospectionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Introspector", True, "decapitalize", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "MethodDescriptor", True, "MethodDescriptor", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "MethodDescriptor", True, "MethodDescriptor", "(Method,ParameterDescriptor[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "MethodDescriptor", True, "MethodDescriptor", "(Method,ParameterDescriptor[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "MethodDescriptor", True, "getParameterDescriptors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PersistenceDelegate", True, "writeObject", "(Object,Encoder)", "", "Argument[0]", "Argument[1]", "taint", "df-generated"]
- ["java.beans", "PersistenceDelegate", True, "writeObject", "(Object,Encoder)", "", "Argument[this]", "Argument[1]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "PropertyChangeEvent", "(Object,String,Object,Object)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "getNewValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "getOldValue", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "getPropagationId", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "getPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyChangeEvent", True, "setPropagationId", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeListener", True, "propertyChange", "(PropertyChangeEvent)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeListenerProxy", True, "PropertyChangeListenerProxy", "(String,PropertyChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeListenerProxy", True, "PropertyChangeListenerProxy", "(String,PropertyChangeListener)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeListenerProxy", True, "getPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyChangeSupport", True, "PropertyChangeSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyChangeSupport", True, "getPropertyChangeListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyChangeSupport", True, "getPropertyChangeListeners", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class,String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class,String,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Class,String,String)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Method,Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Method,Method)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "PropertyDescriptor", "(String,Method,Method)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "setReadMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyDescriptor", True, "setWriteMethod", "(Method)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyEditor", True, "addPropertyChangeListener", "(PropertyChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyEditorSupport", True, "PropertyEditorSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyEditorSupport", True, "getSource", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "PropertyEditorSupport", True, "setSource", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyVetoException", True, "PropertyVetoException", "(String,PropertyChangeEvent)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyVetoException", True, "PropertyVetoException", "(String,PropertyChangeEvent)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "PropertyVetoException", True, "getPropertyChangeEvent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "SimpleBeanInfo", True, "loadImage", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Statement", True, "Statement", "(Object,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Statement", True, "Statement", "(Object,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Statement", True, "Statement", "(Object,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "Statement", True, "getArguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Statement", True, "getMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "Statement", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "VetoableChangeListenerProxy", True, "VetoableChangeListenerProxy", "(String,VetoableChangeListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "VetoableChangeListenerProxy", True, "VetoableChangeListenerProxy", "(String,VetoableChangeListener)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "VetoableChangeListenerProxy", True, "getPropertyName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "VetoableChangeSupport", True, "VetoableChangeSupport", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "VetoableChangeSupport", True, "getVetoableChangeListeners", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "VetoableChangeSupport", True, "getVetoableChangeListeners", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "createHandler", "(Object,ExceptionListener,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "createHandler", "(Object,ExceptionListener,ClassLoader)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "createHandler", "(Object,ExceptionListener,ClassLoader)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "getExceptionListener", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "readObject", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "setExceptionListener", "(ExceptionListener)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "XMLDecoder", True, "setOwner", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "XMLEncoder", True, "XMLEncoder", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "XMLEncoder", True, "XMLEncoder", "(OutputStream,String,boolean,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "XMLEncoder", True, "XMLEncoder", "(OutputStream,String,boolean,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.beans", "XMLEncoder", True, "getOwner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.beans", "XMLEncoder", True, "setOwner", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.beans", "BeanDescriptor", "BeanDescriptor", "(Class)", "summary", "df-generated"]
- ["java.beans", "BeanDescriptor", "BeanDescriptor", "(Class,Class)", "summary", "df-generated"]
- ["java.beans", "BeanDescriptor", "getBeanClass", "()", "summary", "df-generated"]
- ["java.beans", "BeanDescriptor", "getCustomizerClass", "()", "summary", "df-generated"]
- ["java.beans", "BeanInfo", "getAdditionalBeanInfo", "()", "summary", "df-generated"]
- ["java.beans", "BeanInfo", "getDefaultEventIndex", "()", "summary", "df-generated"]
- ["java.beans", "BeanInfo", "getDefaultPropertyIndex", "()", "summary", "df-generated"]
- ["java.beans", "BeanInfo", "getIcon", "(int)", "summary", "df-generated"]
- ["java.beans", "Beans", "isDesignTime", "()", "summary", "df-generated"]
- ["java.beans", "Beans", "isGuiAvailable", "()", "summary", "df-generated"]
- ["java.beans", "Beans", "isInstanceOf", "(Object,Class)", "summary", "df-generated"]
- ["java.beans", "Beans", "setDesignTime", "(boolean)", "summary", "df-generated"]
- ["java.beans", "Beans", "setGuiAvailable", "(boolean)", "summary", "df-generated"]
- ["java.beans", "DesignMode", "isDesignTime", "()", "summary", "df-generated"]
- ["java.beans", "DesignMode", "setDesignTime", "(boolean)", "summary", "df-generated"]
- ["java.beans", "Encoder", "setPersistenceDelegate", "(Class,PersistenceDelegate)", "summary", "df-generated"]
- ["java.beans", "EventHandler", "create", "(Class,Object,String)", "summary", "df-generated"]
- ["java.beans", "EventHandler", "create", "(Class,Object,String,String)", "summary", "df-generated"]
- ["java.beans", "EventHandler", "create", "(Class,Object,String,String,String)", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "getAddListenerMethod", "()", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "getGetListenerMethod", "()", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "getListenerType", "()", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "getRemoveListenerMethod", "()", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "isInDefaultEventSet", "()", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "isUnicast", "()", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "setInDefaultEventSet", "(boolean)", "summary", "df-generated"]
- ["java.beans", "EventSetDescriptor", "setUnicast", "(boolean)", "summary", "df-generated"]
- ["java.beans", "ExceptionListener", "exceptionThrown", "(Exception)", "summary", "df-generated"]
- ["java.beans", "FeatureDescriptor", "isExpert", "()", "summary", "df-generated"]
- ["java.beans", "FeatureDescriptor", "isHidden", "()", "summary", "df-generated"]
- ["java.beans", "FeatureDescriptor", "isPreferred", "()", "summary", "df-generated"]
- ["java.beans", "FeatureDescriptor", "setExpert", "(boolean)", "summary", "df-generated"]
- ["java.beans", "FeatureDescriptor", "setHidden", "(boolean)", "summary", "df-generated"]
- ["java.beans", "FeatureDescriptor", "setPreferred", "(boolean)", "summary", "df-generated"]
- ["java.beans", "IndexedPropertyChangeEvent", "getIndex", "()", "summary", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", "getIndexedPropertyType", "()", "summary", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", "getIndexedReadMethod", "()", "summary", "df-generated"]
- ["java.beans", "IndexedPropertyDescriptor", "getIndexedWriteMethod", "()", "summary", "df-generated"]
- ["java.beans", "Introspector", "flushCaches", "()", "summary", "df-generated"]
- ["java.beans", "Introspector", "flushFromCaches", "(Class)", "summary", "df-generated"]
- ["java.beans", "Introspector", "getBeanInfo", "(Class)", "summary", "df-generated"]
- ["java.beans", "Introspector", "getBeanInfo", "(Class,Class)", "summary", "df-generated"]
- ["java.beans", "Introspector", "getBeanInfo", "(Class,Class,int)", "summary", "df-generated"]
- ["java.beans", "Introspector", "getBeanInfo", "(Class,int)", "summary", "df-generated"]
- ["java.beans", "Introspector", "getBeanInfoSearchPath", "()", "summary", "df-generated"]
- ["java.beans", "Introspector", "setBeanInfoSearchPath", "(String[])", "summary", "df-generated"]
- ["java.beans", "MethodDescriptor", "getMethod", "()", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "addPropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "addPropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "fireIndexedPropertyChange", "(String,int,Object,Object)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "fireIndexedPropertyChange", "(String,int,boolean,boolean)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "fireIndexedPropertyChange", "(String,int,int,int)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(PropertyChangeEvent)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(String,Object,Object)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(String,boolean,boolean)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "firePropertyChange", "(String,int,int)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "hasListeners", "(String)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "removePropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans", "PropertyChangeSupport", "removePropertyChangeListener", "(String,PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "createPropertyEditor", "(Object)", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "getPropertyEditorClass", "()", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "getPropertyType", "()", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "getReadMethod", "()", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "getWriteMethod", "()", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "isBound", "()", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "isConstrained", "()", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "setBound", "(boolean)", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "setConstrained", "(boolean)", "summary", "df-generated"]
- ["java.beans", "PropertyDescriptor", "setPropertyEditorClass", "(Class)", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "getCustomEditor", "()", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "getJavaInitializationString", "()", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "getTags", "()", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "isPaintable", "()", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "paintValue", "(Graphics,Rectangle)", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "removePropertyChangeListener", "(PropertyChangeListener)", "summary", "df-generated"]
- ["java.beans", "PropertyEditor", "supportsCustomEditor", "()", "summary", "df-generated"]
- ["java.beans", "PropertyEditorManager", "findEditor", "(Class)", "summary", "df-generated"]
- ["java.beans", "PropertyEditorManager", "getEditorSearchPath", "()", "summary", "df-generated"]
- ["java.beans", "PropertyEditorManager", "registerEditor", "(Class,Class)", "summary", "df-generated"]
- ["java.beans", "PropertyEditorManager", "setEditorSearchPath", "(String[])", "summary", "df-generated"]
- ["java.beans", "PropertyEditorSupport", "firePropertyChange", "()", "summary", "df-generated"]
- ["java.beans", "Statement", "execute", "()", "summary", "df-generated"]
- ["java.beans", "VetoableChangeListener", "vetoableChange", "(PropertyChangeEvent)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "addVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "addVetoableChangeListener", "(VetoableChangeListener)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(PropertyChangeEvent)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(String,Object,Object)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(String,boolean,boolean)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "fireVetoableChange", "(String,int,int)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "hasListeners", "(String)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "removeVetoableChangeListener", "(String,VetoableChangeListener)", "summary", "df-generated"]
- ["java.beans", "VetoableChangeSupport", "removeVetoableChangeListener", "(VetoableChangeListener)", "summary", "df-generated"]
- ["java.beans", "Visibility", "avoidingGui", "()", "summary", "df-generated"]
- ["java.beans", "Visibility", "dontUseGui", "()", "summary", "df-generated"]
- ["java.beans", "Visibility", "needsGui", "()", "summary", "df-generated"]
- ["java.beans", "Visibility", "okToUseGui", "()", "summary", "df-generated"]
- ["java.beans", "XMLEncoder", "flush", "()", "summary", "df-generated"]

View File

@@ -0,0 +1,404 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.io", "BufferedOutputStream", True, "BufferedOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "BufferedOutputStream", True, "BufferedOutputStream", "(OutputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "BufferedWriter", True, "BufferedWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "BufferedWriter", True, "BufferedWriter", "(Writer,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ByteArrayOutputStream", True, "writeBytes", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "CharArrayWriter", True, "writeTo", "(Writer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "CharConversionException", True, "CharConversionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "format", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "printf", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "readLine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "readLine", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "readLine", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "readLine", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "readPassword", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "readPassword", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "readPassword", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Console", False, "readPassword", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "reader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Console", False, "writer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "DataInputStream", True, "readUTF", "(DataInput)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "DataOutput", True, "write", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "DataOutput", True, "writeBytes", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "DataOutput", True, "writeChars", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "DataOutput", True, "writeUTF", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "DataOutputStream", True, "DataOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "EOFException", True, "EOFException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Externalizable", True, "readExternal", "(ObjectInput)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "Externalizable", True, "writeExternal", "(ObjectOutput)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "FileInputStream", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "FileInputStream", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "FileNotFoundException", True, "FileNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "FileOutputStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "FileOutputStream", "(File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "FileOutputStream", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "FileOutputStream", "(FileDescriptor)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "FileOutputStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "FileOutputStream", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "FileOutputStream", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "FilePermission", False, "FilePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileReader", True, "FileReader", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileReader", True, "FileReader", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileReader", True, "FileReader", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileReader", True, "FileReader", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileReader", True, "FileReader", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(File,Charset,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(File,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(FileDescriptor)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(String,Charset,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "FileWriter", True, "FileWriter", "(String,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "IOError", True, "IOError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "IOException", True, "IOException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "IOException", True, "IOException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "IOException", True, "IOException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "InterruptedIOException", True, "InterruptedIOException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "InvalidClassException", True, "InvalidClassException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "InvalidClassException", True, "InvalidClassException", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "InvalidClassException", True, "InvalidClassException", "(String,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "InvalidObjectException", True, "InvalidObjectException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "LineNumberInputStream", True, "LineNumberInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "LineNumberReader", True, "LineNumberReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "LineNumberReader", True, "LineNumberReader", "(Reader,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "NotActiveException", True, "NotActiveException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "NotSerializableException", True, "NotSerializableException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectInputFilter$Config", False, "createFilter", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputFilter", True, "allowFilter", "(Predicate,ObjectInputFilter$Status)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputFilter", True, "merge", "(ObjectInputFilter,ObjectInputFilter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputFilter", True, "merge", "(ObjectInputFilter,ObjectInputFilter)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputFilter", True, "rejectFilter", "(Predicate,ObjectInputFilter$Status)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputFilter", True, "rejectUndecidedClass", "(ObjectInputFilter)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", True, "get", "(String,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", True, "get", "(String,Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", True, "getObjectStreamClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream", True, "getObjectInputFilter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream", True, "readFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream", True, "readUnshared", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectInputStream", True, "setObjectInputFilter", "(ObjectInputFilter)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectOutput", True, "writeObject", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", True, "put", "(String,Object)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", True, "write", "(ObjectOutput)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "ObjectOutputStream", True, "ObjectOutputStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectOutputStream", True, "putFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectOutputStream", True, "writeUnshared", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectStreamClass", True, "getField", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectStreamClass", True, "getFields", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectStreamClass", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectStreamField", True, "ObjectStreamField", "(String,Class)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectStreamField", True, "ObjectStreamField", "(String,Class,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "ObjectStreamField", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "ObjectStreamField", True, "getTypeString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,CharsetEncoder)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,CharsetEncoder)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "OutputStreamWriter", True, "OutputStreamWriter", "(OutputStream,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PipedInputStream", True, "PipedInputStream", "(PipedOutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "PipedInputStream", True, "PipedInputStream", "(PipedOutputStream,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "PipedInputStream", True, "connect", "(PipedOutputStream)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "PipedOutputStream", True, "PipedOutputStream", "(PipedInputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PipedOutputStream", True, "connect", "(PipedInputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PipedReader", True, "PipedReader", "(PipedWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "PipedReader", True, "PipedReader", "(PipedWriter,int)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "PipedReader", True, "connect", "(PipedWriter)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "PipedWriter", True, "PipedWriter", "(PipedReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PipedWriter", True, "connect", "(PipedReader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(File,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(OutputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(OutputStream,boolean,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(OutputStream,boolean,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(String,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "PrintStream", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.io", "PrintStream", True, "print", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "print", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "print", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "printf", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "println", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "println", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "println", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintStream", True, "writeBytes", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "PrintWriter", "(OutputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "PrintWriter", "(OutputStream,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "PrintWriter", "(OutputStream,boolean,Charset)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "PrintWriter", "(Writer)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "PrintWriter", "(Writer,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "format", "(String,Object[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.io", "PrintWriter", True, "print", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "print", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "print", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(Locale,String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "printf", "(String,Object[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "println", "(Object)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "println", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PrintWriter", True, "println", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackInputStream", True, "PushbackInputStream", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackInputStream", True, "PushbackInputStream", "(InputStream,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackInputStream", True, "unread", "(byte[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackInputStream", True, "unread", "(byte[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackReader", True, "PushbackReader", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackReader", True, "PushbackReader", "(Reader,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackReader", True, "unread", "(char[])", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "PushbackReader", True, "unread", "(char[],int,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "RandomAccessFile", True, "RandomAccessFile", "(File,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "RandomAccessFile", True, "RandomAccessFile", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "RandomAccessFile", True, "getChannel", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "RandomAccessFile", True, "getFD", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "Reader", True, "transferTo", "(Writer)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.io", "SequenceInputStream", True, "SequenceInputStream", "(Enumeration)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.io", "SerializablePermission", False, "SerializablePermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "SerializablePermission", False, "SerializablePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "StreamCorruptedException", True, "StreamCorruptedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "StreamTokenizer", True, "StreamTokenizer", "(InputStream)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "StreamTokenizer", True, "StreamTokenizer", "(Reader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "StringBufferInputStream", True, "StringBufferInputStream", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "StringWriter", True, "getBuffer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.io", "SyncFailedException", True, "SyncFailedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "UTFDataFormatException", True, "UTFDataFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "UncheckedIOException", True, "UncheckedIOException", "(String,IOException)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "UncheckedIOException", True, "UncheckedIOException", "(String,IOException)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "UnsupportedEncodingException", True, "UnsupportedEncodingException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "WriteAbortedException", True, "WriteAbortedException", "(String,Exception)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.io", "WriteAbortedException", True, "WriteAbortedException", "(String,Exception)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.io", "BufferedReader", "lines", "()", "summary", "df-generated"]
- ["java.io", "BufferedWriter", "newLine", "()", "summary", "df-generated"]
- ["java.io", "ByteArrayOutputStream", "ByteArrayOutputStream", "(int)", "summary", "df-generated"]
- ["java.io", "ByteArrayOutputStream", "reset", "()", "summary", "df-generated"]
- ["java.io", "ByteArrayOutputStream", "size", "()", "summary", "df-generated"]
- ["java.io", "CharArrayWriter", "CharArrayWriter", "(int)", "summary", "df-generated"]
- ["java.io", "CharArrayWriter", "reset", "()", "summary", "df-generated"]
- ["java.io", "CharArrayWriter", "size", "()", "summary", "df-generated"]
- ["java.io", "Console", "charset", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readBoolean", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readByte", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readChar", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readDouble", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readFloat", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readInt", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readLong", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readShort", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readUnsignedByte", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "readUnsignedShort", "()", "summary", "df-generated"]
- ["java.io", "DataInput", "skipBytes", "(int)", "summary", "df-generated"]
- ["java.io", "DataOutput", "write", "(byte[],int,int)", "summary", "df-generated"]
- ["java.io", "DataOutput", "write", "(int)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeBoolean", "(boolean)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeByte", "(int)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeChar", "(int)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeDouble", "(double)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeFloat", "(float)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeInt", "(int)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeLong", "(long)", "summary", "df-generated"]
- ["java.io", "DataOutput", "writeShort", "(int)", "summary", "df-generated"]
- ["java.io", "DataOutputStream", "size", "()", "summary", "df-generated"]
- ["java.io", "File", "canExecute", "()", "summary", "df-generated"]
- ["java.io", "File", "canRead", "()", "summary", "df-generated"]
- ["java.io", "File", "canWrite", "()", "summary", "df-generated"]
- ["java.io", "File", "createNewFile", "()", "summary", "df-generated"]
- ["java.io", "File", "deleteOnExit", "()", "summary", "df-generated"]
- ["java.io", "File", "getFreeSpace", "()", "summary", "df-generated"]
- ["java.io", "File", "getTotalSpace", "()", "summary", "df-generated"]
- ["java.io", "File", "getUsableSpace", "()", "summary", "df-generated"]
- ["java.io", "File", "isAbsolute", "()", "summary", "df-generated"]
- ["java.io", "File", "isHidden", "()", "summary", "df-generated"]
- ["java.io", "File", "lastModified", "()", "summary", "df-generated"]
- ["java.io", "File", "list", "()", "summary", "df-generated"]
- ["java.io", "File", "list", "(FilenameFilter)", "summary", "df-generated"]
- ["java.io", "File", "listRoots", "()", "summary", "df-generated"]
- ["java.io", "File", "mkdir", "()", "summary", "df-generated"]
- ["java.io", "File", "renameTo", "(File)", "summary", "df-generated"]
- ["java.io", "File", "setExecutable", "(boolean)", "summary", "df-generated"]
- ["java.io", "File", "setExecutable", "(boolean,boolean)", "summary", "df-generated"]
- ["java.io", "File", "setLastModified", "(long)", "summary", "df-generated"]
- ["java.io", "File", "setReadOnly", "()", "summary", "df-generated"]
- ["java.io", "File", "setReadable", "(boolean)", "summary", "df-generated"]
- ["java.io", "File", "setReadable", "(boolean,boolean)", "summary", "df-generated"]
- ["java.io", "File", "setWritable", "(boolean)", "summary", "df-generated"]
- ["java.io", "File", "setWritable", "(boolean,boolean)", "summary", "df-generated"]
- ["java.io", "FileDescriptor", "sync", "()", "summary", "df-generated"]
- ["java.io", "FileDescriptor", "valid", "()", "summary", "df-generated"]
- ["java.io", "Flushable", "flush", "()", "summary", "df-generated"]
- ["java.io", "InputStream", "available", "()", "summary", "df-generated"]
- ["java.io", "InputStream", "mark", "(int)", "summary", "df-generated"]
- ["java.io", "InputStream", "markSupported", "()", "summary", "df-generated"]
- ["java.io", "InputStream", "nullInputStream", "()", "summary", "df-generated"]
- ["java.io", "InputStream", "reset", "()", "summary", "df-generated"]
- ["java.io", "InputStream", "skip", "(long)", "summary", "df-generated"]
- ["java.io", "InputStream", "skipNBytes", "(long)", "summary", "df-generated"]
- ["java.io", "InputStreamReader", "getEncoding", "()", "summary", "df-generated"]
- ["java.io", "LineNumberInputStream", "getLineNumber", "()", "summary", "df-generated"]
- ["java.io", "LineNumberInputStream", "setLineNumber", "(int)", "summary", "df-generated"]
- ["java.io", "LineNumberReader", "getLineNumber", "()", "summary", "df-generated"]
- ["java.io", "LineNumberReader", "setLineNumber", "(int)", "summary", "df-generated"]
- ["java.io", "ObjectInput", "available", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$Config", "getSerialFilter", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$Config", "getSerialFilterFactory", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$Config", "setSerialFilter", "(ObjectInputFilter)", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$Config", "setSerialFilterFactory", "(BinaryOperator)", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$FilterInfo", "arrayLength", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$FilterInfo", "depth", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$FilterInfo", "references", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$FilterInfo", "serialClass", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter$FilterInfo", "streamBytes", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputFilter", "checkInput", "(ObjectInputFilter$FilterInfo)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "defaulted", "(String)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,boolean)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,byte)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,char)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,double)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,float)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,int)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,long)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream$GetField", "get", "(String,short)", "summary", "df-generated"]
- ["java.io", "ObjectInputStream", "defaultReadObject", "()", "summary", "df-generated"]
- ["java.io", "ObjectInputStream", "registerValidation", "(ObjectInputValidation,int)", "summary", "df-generated"]
- ["java.io", "ObjectOutput", "flush", "()", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,boolean)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,byte)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,char)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,double)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,float)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,int)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,long)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream$PutField", "put", "(String,short)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream", "defaultWriteObject", "()", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream", "reset", "()", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream", "useProtocolVersion", "(int)", "summary", "df-generated"]
- ["java.io", "ObjectOutputStream", "writeFields", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamClass", "forClass", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamClass", "getSerialVersionUID", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamClass", "lookup", "(Class)", "summary", "df-generated"]
- ["java.io", "ObjectStreamClass", "lookupAny", "(Class)", "summary", "df-generated"]
- ["java.io", "ObjectStreamField", "getOffset", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamField", "getType", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamField", "getTypeCode", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamField", "isPrimitive", "()", "summary", "df-generated"]
- ["java.io", "ObjectStreamField", "isUnshared", "()", "summary", "df-generated"]
- ["java.io", "OutputStream", "nullOutputStream", "()", "summary", "df-generated"]
- ["java.io", "OutputStreamWriter", "getEncoding", "()", "summary", "df-generated"]
- ["java.io", "PipedInputStream", "PipedInputStream", "(int)", "summary", "df-generated"]
- ["java.io", "PipedReader", "PipedReader", "(int)", "summary", "df-generated"]
- ["java.io", "PrintStream", "checkError", "()", "summary", "df-generated"]
- ["java.io", "PrintStream", "print", "(boolean)", "summary", "df-generated"]
- ["java.io", "PrintStream", "print", "(char)", "summary", "df-generated"]
- ["java.io", "PrintStream", "print", "(double)", "summary", "df-generated"]
- ["java.io", "PrintStream", "print", "(float)", "summary", "df-generated"]
- ["java.io", "PrintStream", "print", "(int)", "summary", "df-generated"]
- ["java.io", "PrintStream", "print", "(long)", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "()", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "(boolean)", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "(char)", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "(double)", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "(float)", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "(int)", "summary", "df-generated"]
- ["java.io", "PrintStream", "println", "(long)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "PrintWriter", "(File)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "PrintWriter", "(File,Charset)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "PrintWriter", "(File,String)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "PrintWriter", "(String)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "PrintWriter", "(String,Charset)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "PrintWriter", "(String,String)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "checkError", "()", "summary", "df-generated"]
- ["java.io", "PrintWriter", "print", "(boolean)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "print", "(char)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "print", "(double)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "print", "(float)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "print", "(int)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "print", "(long)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "()", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "(boolean)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "(char)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "(double)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "(float)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "(int)", "summary", "df-generated"]
- ["java.io", "PrintWriter", "println", "(long)", "summary", "df-generated"]
- ["java.io", "PushbackInputStream", "unread", "(int)", "summary", "df-generated"]
- ["java.io", "PushbackReader", "unread", "(int)", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "getFilePointer", "()", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "length", "()", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "read", "()", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "read", "(byte[])", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "read", "(byte[],int,int)", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "seek", "(long)", "summary", "df-generated"]
- ["java.io", "RandomAccessFile", "setLength", "(long)", "summary", "df-generated"]
- ["java.io", "Reader", "mark", "(int)", "summary", "df-generated"]
- ["java.io", "Reader", "markSupported", "()", "summary", "df-generated"]
- ["java.io", "Reader", "nullReader", "()", "summary", "df-generated"]
- ["java.io", "Reader", "ready", "()", "summary", "df-generated"]
- ["java.io", "Reader", "reset", "()", "summary", "df-generated"]
- ["java.io", "Reader", "skip", "(long)", "summary", "df-generated"]
- ["java.io", "SequenceInputStream", "SequenceInputStream", "(InputStream,InputStream)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "commentChar", "(int)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "eolIsSignificant", "(boolean)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "lineno", "()", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "lowerCaseMode", "(boolean)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "nextToken", "()", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "ordinaryChar", "(int)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "ordinaryChars", "(int,int)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "parseNumbers", "()", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "pushBack", "()", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "quoteChar", "(int)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "resetSyntax", "()", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "slashSlashComments", "(boolean)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "slashStarComments", "(boolean)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "whitespaceChars", "(int,int)", "summary", "df-generated"]
- ["java.io", "StreamTokenizer", "wordChars", "(int,int)", "summary", "df-generated"]
- ["java.io", "StringWriter", "StringWriter", "(int)", "summary", "df-generated"]
- ["java.io", "Writer", "nullWriter", "()", "summary", "df-generated"]

View File

@@ -0,0 +1,21 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationFormatError", True, "AnnotationFormatError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationTypeMismatchException", True, "AnnotationTypeMismatchException", "(Method,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationTypeMismatchException", True, "AnnotationTypeMismatchException", "(Method,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationTypeMismatchException", True, "element", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.annotation", "AnnotationTypeMismatchException", True, "foundType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.annotation", "IncompleteAnnotationException", True, "IncompleteAnnotationException", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.annotation", "IncompleteAnnotationException", True, "elementName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.lang.annotation", "IncompleteAnnotationException", "annotationType", "()", "summary", "df-generated"]

View File

@@ -0,0 +1,94 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.lang.constant", "ClassDesc", True, "arrayType", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "displayName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "nested", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "nested", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "nested", "(String,String[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "nested", "(String,String[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "nested", "(String,String[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "of", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "of", "(String,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "of", "(String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "ofDescriptor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ClassDesc", True, "packageName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "Constable", True, "describeConstable", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDesc", True, "resolveConstantDesc", "(MethodHandles$Lookup)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDesc", True, "resolveConstantDesc", "(MethodHandles$Lookup)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofCallsiteBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "ConstantDescs", False, "ofConstantBootstrap", "(ClassDesc,String,ClassDesc,ClassDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc", True, "lookupDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc", True, "methodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc", True, "owner", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "bootstrapArgs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "bootstrapMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "invocationName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "invocationType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "of", "(DirectMethodHandleDesc,String,MethodTypeDesc,ConstantDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "withArgs", "(ConstantDesc[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "withArgs", "(ConstantDesc[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "withNameAndType", "(String,MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "withNameAndType", "(String,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", True, "withNameAndType", "(String,MethodTypeDesc)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "bootstrapArgs", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "bootstrapArgsList", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "bootstrapMethod", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "constantName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "constantType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "of", "(DirectMethodHandleDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "of", "(DirectMethodHandleDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "of", "(DirectMethodHandleDesc,ConstantDesc[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofCanonical", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "DynamicConstantDesc", True, "ofNamed", "(DirectMethodHandleDesc,String,ClassDesc,ConstantDesc[])", "", "Argument[3].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "asType", "(MethodTypeDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "asType", "(MethodTypeDesc)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "invocationType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "of", "(DirectMethodHandleDesc$Kind,ClassDesc,String,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "of", "(DirectMethodHandleDesc$Kind,ClassDesc,String,String)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofConstructor", "(ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofConstructor", "(ClassDesc,ClassDesc[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofField", "(DirectMethodHandleDesc$Kind,ClassDesc,String,ClassDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofField", "(DirectMethodHandleDesc$Kind,ClassDesc,String,ClassDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofField", "(DirectMethodHandleDesc$Kind,ClassDesc,String,ClassDesc)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofMethod", "(DirectMethodHandleDesc$Kind,ClassDesc,String,MethodTypeDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofMethod", "(DirectMethodHandleDesc$Kind,ClassDesc,String,MethodTypeDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodHandleDesc", True, "ofMethod", "(DirectMethodHandleDesc$Kind,ClassDesc,String,MethodTypeDesc)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodTypeDesc", True, "displayDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodTypeDesc", True, "of", "(ClassDesc,ClassDesc[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodTypeDesc", True, "of", "(ClassDesc,ClassDesc[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.constant", "MethodTypeDesc", True, "ofDescriptor", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.lang.constant", "ClassDesc", "isClassOrInterface", "()", "summary", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc$Kind", "valueOf", "(int)", "summary", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc$Kind", "valueOf", "(int,boolean)", "summary", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc", "isOwnerInterface", "()", "summary", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc", "kind", "()", "summary", "df-generated"]
- ["java.lang.constant", "DirectMethodHandleDesc", "refKind", "()", "summary", "df-generated"]
- ["java.lang.constant", "DynamicCallSiteDesc", "resolveCallSiteDesc", "(MethodHandles$Lookup)", "summary", "df-generated"]

View File

@@ -0,0 +1,18 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.lang.instrument", "ClassDefinition", False, "ClassDefinition", "(Class,byte[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.instrument", "ClassDefinition", False, "getDefinitionClassFile", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.instrument", "IllegalClassFormatException", True, "IllegalClassFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.instrument", "UnmodifiableClassException", True, "UnmodifiableClassException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.instrument", "UnmodifiableModuleException", True, "UnmodifiableModuleException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.lang.instrument", "ClassDefinition", "getDefinitionClass", "()", "summary", "df-generated"]
- ["java.lang.instrument", "ClassFileTransformer", "transform", "(ClassLoader,String,Class,ProtectionDomain,byte[])", "summary", "df-generated"]
- ["java.lang.instrument", "ClassFileTransformer", "transform", "(Module,ClassLoader,String,Class,ProtectionDomain,byte[])", "summary", "df-generated"]

View File

@@ -0,0 +1,265 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.lang.invoke", "CallSite", True, "dynamicInvoker", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "CallSite", True, "getTarget", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "CallSite", True, "type", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "ClassSpecializer$SpeciesData", True, "key", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", False, "explicitCast", "(MethodHandles$Lookup,String,Class,Object)", "", "Argument[3]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "ConstantCallSite", True, "ConstantCallSite", "(MethodHandle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable,boolean,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(String,Throwable,boolean,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaConversionException", True, "LambdaConversionException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaMetafactory", False, "altMetafactory", "(MethodHandles$Lookup,String,MethodType,Object[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "LambdaMetafactory", False, "metafactory", "(MethodHandles$Lookup,String,MethodType,MethodType,MethodHandle,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asCollector", "(Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asCollector", "(int,Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asFixedArity", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asFixedArity", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asSpreader", "(Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asSpreader", "(int,Class,int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asType", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asType", "(MethodType)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asTypeUncached", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asTypeUncached", "(MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asTypeUncached", "(MethodType)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "asVarargsCollector", "(Class)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "bindTo", "(Object)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "bindTo", "(Object)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "type", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandle", True, "withVarargs", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", True, "getMethodType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "bind", "(Object,String,MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "dropLookupMode", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findConstructor", "(Class,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findGetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findSetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findSpecial", "(Class,String,MethodType,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findSpecial", "(Class,String,MethodType,Class)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findStatic", "(Class,String,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findStatic", "(Class,String,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findStaticGetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findStaticSetter", "(Class,String,Class)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findVirtual", "(Class,String,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "findVirtual", "(Class,String,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "in", "(Class)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "revealDirect", "(MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflect", "(Method)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectConstructor", "(Constructor)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectGetter", "(Field)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectSetter", "(Field)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", False, "unreflectSpecial", "(Method,Class)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "collectArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "collectArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "constant", "(Class,Object)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "dropArguments", "(MethodHandle,int,Class[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "dropArguments", "(MethodHandle,int,List)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "dropArgumentsToMatch", "(MethodHandle,int,List,int)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "dropReturn", "(MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "exactInvoker", "(MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "explicitCastArguments", "(MethodHandle,MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "explicitCastArguments", "(MethodHandle,MethodType)", "", "Argument[1]", "Argument[0]", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "explicitCastArguments", "(MethodHandle,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "filterArguments", "(MethodHandle,int,MethodHandle[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "filterArguments", "(MethodHandle,int,MethodHandle[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "filterReturnValue", "(MethodHandle,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "filterReturnValue", "(MethodHandle,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "foldArguments", "(MethodHandle,int,MethodHandle)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "insertArguments", "(MethodHandle,int,Object[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "insertArguments", "(MethodHandle,int,Object[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "invoker", "(MethodType)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "permuteArguments", "(MethodHandle,MethodType,int[])", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "permuteArguments", "(MethodHandle,MethodType,int[])", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "varHandleExactInvoker", "(VarHandle$AccessMode,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodHandles", True, "varHandleInvoker", "(VarHandle$AccessMode,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(Class[])", "", "Argument[0].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(Class[])", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(List)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "appendParameterTypes", "(List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "erase", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "insertParameterTypes", "(int,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "insertParameterTypes", "(int,List)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "methodType", "(Class,Class,Class[])", "", "Argument[2].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "methodType", "(Class,Class[])", "", "Argument[1].ArrayElement", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "methodType", "(Class,List)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "methodType", "(Class,MethodType)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "toMethodDescriptorString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "unwrap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MethodType", False, "wrap", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "MutableCallSite", True, "MutableCallSite", "(MethodHandle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "MutableCallSite", True, "MutableCallSite", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[5]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[6]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[7]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[8]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "SerializedLambda", "(Class,String,String,String,int,String,String,String,String,Object[])", "", "Argument[9].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getCapturedArg", "(int)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getFunctionalInterfaceClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getFunctionalInterfaceMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getFunctionalInterfaceMethodSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getImplClass", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getImplMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getImplMethodSignature", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", False, "getInstantiatedMethodType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "StringConcatException", True, "StringConcatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "StringConcatException", True, "StringConcatException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "StringConcatException", True, "StringConcatException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "StringConcatFactory", False, "makeConcat", "(MethodHandles$Lookup,String,MethodType)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "StringConcatFactory", False, "makeConcatWithConstants", "(MethodHandles$Lookup,String,MethodType,String,Object[])", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "SwitchPoint", True, "guardWithTest", "(MethodHandle,MethodHandle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "TypeDescriptor", True, "descriptorString", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofArray", "(ClassDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofField", "(ClassDesc,String,ClassDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofField", "(ClassDesc,String,ClassDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofField", "(ClassDesc,String,ClassDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofStaticField", "(ClassDesc,String,ClassDesc)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofStaticField", "(ClassDesc,String,ClassDesc)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "ofStaticField", "(ClassDesc,String,ClassDesc)", "", "Argument[2]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle$VarHandleDesc", False, "varType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle", True, "accessModeType", "(VarHandle$AccessMode)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle", True, "coordinateTypes", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle", True, "toMethodHandle", "(VarHandle$AccessMode)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle", True, "withInvokeBehavior", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VarHandle", True, "withInvokeExactBehavior", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.invoke", "VolatileCallSite", True, "VolatileCallSite", "(MethodHandle)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "VolatileCallSite", True, "VolatileCallSite", "(MethodType)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.invoke", "WrongMethodTypeException", True, "WrongMethodTypeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.lang.invoke", "CallSite", "setTarget", "(MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "arrayVarHandle", "(MethodHandles$Lookup,String,Class,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "enumConstant", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "fieldVarHandle", "(MethodHandles$Lookup,String,Class,Class,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "getStaticFinal", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "getStaticFinal", "(MethodHandles$Lookup,String,Class,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "invoke", "(MethodHandles$Lookup,String,Class,MethodHandle,Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "nullConstant", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "primitiveClass", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "ConstantBootstraps", "staticFieldVarHandle", "(MethodHandles$Lookup,String,Class,Class,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandle", "invoke", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandle", "invokeExact", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandle", "invokeWithArguments", "(List)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandle", "invokeWithArguments", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandle", "isVarargsCollector", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", "getDeclaringClass", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", "getModifiers", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", "getReferenceKind", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", "isVarArgs", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", "referenceKindToString", "(int)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleInfo", "reflectAs", "(Class,MethodHandles$Lookup)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleProxies", "asInterfaceInstance", "(Class,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleProxies", "isWrapperInstance", "(Object)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleProxies", "wrapperInstanceTarget", "(Object)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandleProxies", "wrapperInstanceType", "(Object)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "accessClass", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "defineClass", "(byte[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "defineHiddenClass", "(byte[],boolean,MethodHandles$Lookup$ClassOption[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "defineHiddenClassWithClassData", "(byte[],Object,boolean,MethodHandles$Lookup$ClassOption[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "ensureInitialized", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "findClass", "(String)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "findStaticVarHandle", "(Class,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "findVarHandle", "(Class,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "hasFullPrivilegeAccess", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "hasPrivateAccess", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "lookupClass", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "lookupModes", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "previousLookupClass", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles$Lookup", "unreflectVarHandle", "(Field)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "arrayConstructor", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "arrayElementGetter", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "arrayElementSetter", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "arrayElementVarHandle", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "arrayLength", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "byteArrayViewVarHandle", "(Class,ByteOrder)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "byteBufferViewVarHandle", "(Class,ByteOrder)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "catchException", "(MethodHandle,Class,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "classData", "(MethodHandles$Lookup,String,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "classDataAt", "(MethodHandles$Lookup,String,Class,int)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "countedLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "countedLoop", "(MethodHandle,MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "doWhileLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "empty", "(MethodType)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "guardWithTest", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "identity", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "iteratedLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "loop", "(MethodHandle[][])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "privateLookupIn", "(Class,MethodHandles$Lookup)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "publicLookup", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "reflectAs", "(Class,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "spreadInvoker", "(MethodType,int)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "tableSwitch", "(MethodHandle,MethodHandle[])", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "throwException", "(Class,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "tryFinally", "(MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "whileLoop", "(MethodHandle,MethodHandle,MethodHandle)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodHandles", "zero", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "fromMethodDescriptorString", "(String,ClassLoader)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "generic", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "genericMethodType", "(int)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "genericMethodType", "(int,boolean)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "hasPrimitives", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "hasWrappers", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "lastParameterType", "()", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "methodType", "(Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MethodType", "methodType", "(Class,Class)", "summary", "df-generated"]
- ["java.lang.invoke", "MutableCallSite", "syncAll", "(MutableCallSite[])", "summary", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", "getCapturedArgCount", "()", "summary", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", "getCapturingClass", "()", "summary", "df-generated"]
- ["java.lang.invoke", "SerializedLambda", "getImplMethodKind", "()", "summary", "df-generated"]
- ["java.lang.invoke", "SwitchPoint", "hasBeenInvalidated", "()", "summary", "df-generated"]
- ["java.lang.invoke", "SwitchPoint", "invalidateAll", "(SwitchPoint[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle$AccessMode", "methodName", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle$AccessMode", "valueFromMethodName", "(String)", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "acquireFence", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "compareAndExchange", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "compareAndExchangeAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "compareAndExchangeRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "compareAndSet", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "fullFence", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "get", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndAdd", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndAddAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndAddRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseAnd", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseAndAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseAndRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseOr", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseOrAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseOrRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseXor", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseXorAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndBitwiseXorRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndSet", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndSetAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getAndSetRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getOpaque", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "getVolatile", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "hasInvokeExactBehavior", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "isAccessModeSupported", "(VarHandle$AccessMode)", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "loadLoadFence", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "releaseFence", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "set", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "setOpaque", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "setRelease", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "setVolatile", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "storeStoreFence", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "varType", "()", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "weakCompareAndSet", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "weakCompareAndSetAcquire", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "weakCompareAndSetPlain", "(Object[])", "summary", "df-generated"]
- ["java.lang.invoke", "VarHandle", "weakCompareAndSetRelease", "(Object[])", "summary", "df-generated"]

View File

@@ -0,0 +1,71 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.lang.management", "LockInfo", True, "LockInfo", "(String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "LockInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "LockInfo", True, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ManagementPermission", False, "ManagementPermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "ManagementPermission", False, "ManagementPermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "MemoryNotificationInfo", True, "MemoryNotificationInfo", "(String,MemoryUsage,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "MemoryNotificationInfo", True, "MemoryNotificationInfo", "(String,MemoryUsage,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "MemoryNotificationInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "MemoryNotificationInfo", True, "getPoolName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "MemoryNotificationInfo", True, "getUsage", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "MemoryUsage", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "MonitorInfo", True, "MonitorInfo", "(String,int,int,StackTraceElement)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "MonitorInfo", True, "MonitorInfo", "(String,int,int,StackTraceElement)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.lang.management", "MonitorInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "MonitorInfo", True, "getLockedStackFrame", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "from", "(CompositeData)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getLockInfo", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getLockName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getLockOwnerName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getLockedMonitors", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getLockedSynchronizers", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getStackTrace", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang.management", "ThreadInfo", True, "getThreadName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.lang.management", "LockInfo", "getIdentityHashCode", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getClassLoadingMXBean", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getCompilationMXBean", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getGarbageCollectorMXBeans", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getMemoryMXBean", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getMemoryManagerMXBeans", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getMemoryPoolMXBeans", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getOperatingSystemMXBean", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getPlatformMBeanServer", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getPlatformMXBean", "(Class)", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getPlatformMXBean", "(MBeanServerConnection,Class)", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getPlatformMXBeans", "(Class)", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getPlatformMXBeans", "(MBeanServerConnection,Class)", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getPlatformManagementInterfaces", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getRuntimeMXBean", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "getThreadMXBean", "()", "summary", "df-generated"]
- ["java.lang.management", "ManagementFactory", "newPlatformMXBeanProxy", "(MBeanServerConnection,String,Class)", "summary", "df-generated"]
- ["java.lang.management", "MemoryNotificationInfo", "getCount", "()", "summary", "df-generated"]
- ["java.lang.management", "MemoryUsage", "MemoryUsage", "(long,long,long,long)", "summary", "df-generated"]
- ["java.lang.management", "MemoryUsage", "getCommitted", "()", "summary", "df-generated"]
- ["java.lang.management", "MemoryUsage", "getInit", "()", "summary", "df-generated"]
- ["java.lang.management", "MemoryUsage", "getMax", "()", "summary", "df-generated"]
- ["java.lang.management", "MemoryUsage", "getUsed", "()", "summary", "df-generated"]
- ["java.lang.management", "MonitorInfo", "getLockedStackDepth", "()", "summary", "df-generated"]
- ["java.lang.management", "RuntimeMXBean", "getPid", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getBlockedCount", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getBlockedTime", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getLockOwnerId", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getPriority", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getThreadId", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getThreadState", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getWaitedCount", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "getWaitedTime", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "isDaemon", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "isInNative", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadInfo", "isSuspended", "()", "summary", "df-generated"]
- ["java.lang.management", "ThreadMXBean", "dumpAllThreads", "(boolean,boolean,int)", "summary", "df-generated"]
- ["java.lang.management", "ThreadMXBean", "getThreadInfo", "(long[],boolean,boolean,int)", "summary", "df-generated"]

View File

@@ -0,0 +1,959 @@
# THIS FILE IS AN AUTO-GENERATED MODELS AS DATA FILE. DO NOT EDIT.
extensions:
- addsTo:
pack: codeql/java-all
extensible: summaryModel
data:
- ["java.lang", "AbstractMethodError", True, "AbstractMethodError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "AbstractStringBuilder", True, "appendCodePoint", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "AbstractStringBuilder", True, "deleteCharAt", "(int)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ArithmeticException", True, "ArithmeticException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ArrayIndexOutOfBoundsException", True, "ArrayIndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ArrayStoreException", True, "ArrayStoreException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "AssertionError", True, "AssertionError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "AssertionError", True, "AssertionError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "BootstrapMethodError", True, "BootstrapMethodError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "CharSequence", True, "chars", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "CharSequence", True, "codePoints", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Class", False, "getNestHost", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ClassCastException", True, "ClassCastException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ClassCircularityError", True, "ClassCircularityError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ClassFormatError", True, "ClassFormatError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ClassNotFoundException", True, "ClassNotFoundException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ClassNotFoundException", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ClassValue", True, "get", "(Class)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "CloneNotSupportedException", True, "CloneNotSupportedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Enum$EnumDesc", False, "of", "(ClassDesc,String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Enum$EnumDesc", False, "of", "(ClassDesc,String)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "EnumConstantNotPresentException", True, "EnumConstantNotPresentException", "(Class,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "EnumConstantNotPresentException", True, "constantName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Error", True, "Error", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Error", True, "Error", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Error", True, "Error", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Error", True, "Error", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ExceptionInInitializerError", True, "ExceptionInInitializerError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ExceptionInInitializerError", True, "ExceptionInInitializerError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ExceptionInInitializerError", True, "getException", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "IllegalAccessError", True, "IllegalAccessError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalAccessException", True, "IllegalAccessException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalArgumentException", True, "IllegalArgumentException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalArgumentException", True, "IllegalArgumentException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalArgumentException", True, "IllegalArgumentException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalCallerException", True, "IllegalCallerException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalMonitorStateException", True, "IllegalMonitorStateException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalStateException", True, "IllegalStateException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalStateException", True, "IllegalStateException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalStateException", True, "IllegalStateException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IllegalThreadStateException", True, "IllegalThreadStateException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "IncompatibleClassChangeError", True, "IncompatibleClassChangeError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InstantiationError", True, "InstantiationError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InstantiationException", True, "InstantiationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InternalError", True, "InternalError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InternalError", True, "InternalError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InternalError", True, "InternalError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InternalError", True, "InternalError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "InterruptedException", True, "InterruptedException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LayerInstantiationException", True, "LayerInstantiationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LinkageError", True, "LinkageError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LinkageError", True, "LinkageError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "LinkageError", True, "LinkageError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Module", False, "addExports", "(String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "Module", False, "addOpens", "(String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "Module", False, "addReads", "(Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "Module", False, "addUses", "(Class)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "Module", False, "getClassLoader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Module", False, "getDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Module", False, "getLayer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Module", False, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Module", False, "getPackages", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer$Controller", False, "addExports", "(Module,String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ModuleLayer$Controller", False, "addOpens", "(Module,String,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ModuleLayer$Controller", False, "addReads", "(Module,Module)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ModuleLayer$Controller", False, "layer", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "configuration", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,Function)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,List,Function)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModules", "(Configuration,List,Function)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,ClassLoader)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,List,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithManyLoaders", "(Configuration,List,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,ClassLoader)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,List,ClassLoader)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "defineModulesWithOneLoader", "(Configuration,List,ClassLoader)", "", "Argument[1].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "findLoader", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "findModule", "(String)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "modules", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ModuleLayer", False, "parents", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "NegativeArraySizeException", True, "NegativeArraySizeException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "NoClassDefFoundError", True, "NoClassDefFoundError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "NoSuchFieldError", True, "NoSuchFieldError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "NoSuchFieldException", True, "NoSuchFieldException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "NoSuchMethodError", True, "NoSuchMethodError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "NoSuchMethodException", True, "NoSuchMethodException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "NumberFormatException", True, "NumberFormatException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "OutOfMemoryError", True, "OutOfMemoryError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Package", True, "getImplementationTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getImplementationVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getImplementationVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getPackage", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getSpecificationTitle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getSpecificationVendor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Package", True, "getSpecificationVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "destroyForcibly", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "Process", True, "errorReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "errorReader", "(Charset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "getErrorStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "getInputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "getOutputStream", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "inputReader", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "inputReader", "(Charset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "outputWriter", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "outputWriter", "(Charset)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Process", True, "toHandle", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "ProcessBuilder", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "command", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "command", "(List)", "", "Argument[0].Element", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "command", "(List)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[0].ArrayElement", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "command", "(String[])", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "directory", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "directory", "(File)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "inheritIO", "()", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectError", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectError", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectError", "(ProcessBuilder$Redirect)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectError", "(ProcessBuilder$Redirect)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectErrorStream", "(boolean)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectInput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectInput", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectInput", "(ProcessBuilder$Redirect)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectInput", "(ProcessBuilder$Redirect)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectOutput", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectOutput", "(File)", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectOutput", "(ProcessBuilder$Redirect)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ProcessBuilder", False, "redirectOutput", "(ProcessBuilder$Redirect)", "", "Argument[this]", "ReturnValue", "value", "df-generated"]
- ["java.lang", "ProcessHandle$Info", True, "arguments", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessHandle$Info", True, "command", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessHandle$Info", True, "commandLine", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ProcessHandle$Info", True, "user", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ReflectiveOperationException", True, "ReflectiveOperationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Runtime$Version", False, "build", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Runtime$Version", False, "optional", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Runtime$Version", False, "pre", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "RuntimePermission", False, "RuntimePermission", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "RuntimePermission", False, "RuntimePermission", "(String,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "SecurityException", True, "SecurityException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "SecurityException", True, "SecurityException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "SecurityException", True, "SecurityException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "SecurityException", True, "SecurityException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackOverflowError", True, "StackOverflowError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[3]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[4]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,String,String,String,int)", "", "Argument[5]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,int)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,int)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "StackTraceElement", "(String,String,String,int)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "getClassLoaderName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "getClassName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "getMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "getModuleName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackTraceElement", False, "getModuleVersion", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", True, "getDescriptor", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", True, "getFileName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", True, "getMethodName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", True, "getMethodType", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", True, "toStackTraceElement", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker", False, "getInstance", "(Set)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StackWalker", False, "getInstance", "(Set,int)", "", "Argument[0].Element", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "StringIndexOutOfBoundsException", True, "StringIndexOutOfBoundsException", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "System$LoggerFinder", True, "getLocalizedLogger", "(String,ResourceBundle,Module)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "System$LoggerFinder", True, "getLocalizedLogger", "(String,ResourceBundle,Module)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "System", False, "getLogger", "(String)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "System", False, "getLogger", "(String,ResourceBundle)", "", "Argument[0]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "System", False, "getLogger", "(String,ResourceBundle)", "", "Argument[1]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(Runnable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(Runnable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long,boolean)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long,boolean)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,Runnable,String,long,boolean)", "", "Argument[2]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "Thread", "(ThreadGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "getThreadGroup", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Thread", True, "getUncaughtExceptionHandler", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "Thread", True, "setContextClassLoader", "(ClassLoader)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "setName", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "Thread", True, "setUncaughtExceptionHandler", "(Thread$UncaughtExceptionHandler)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "ThreadGroup", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "ThreadGroup", "(ThreadGroup,String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "ThreadGroup", "(ThreadGroup,String)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "ThreadGroup", "(ThreadGroup,String)", "", "Argument[this]", "Argument[0]", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "enumerate", "(ThreadGroup[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "enumerate", "(ThreadGroup[],boolean)", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "enumerate", "(Thread[])", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "enumerate", "(Thread[],boolean)", "", "Argument[this]", "Argument[0].ArrayElement", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "getName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "ThreadGroup", True, "getParent", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "TypeNotPresentException", True, "TypeNotPresentException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "TypeNotPresentException", True, "TypeNotPresentException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "TypeNotPresentException", True, "typeName", "()", "", "Argument[this]", "ReturnValue", "taint", "df-generated"]
- ["java.lang", "UnknownError", True, "UnknownError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "UnsatisfiedLinkError", True, "UnsatisfiedLinkError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "UnsupportedClassVersionError", True, "UnsupportedClassVersionError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "UnsupportedOperationException", True, "UnsupportedOperationException", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "UnsupportedOperationException", True, "UnsupportedOperationException", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "UnsupportedOperationException", True, "UnsupportedOperationException", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "VerifyError", True, "VerifyError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(String)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(String,Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(String,Throwable)", "", "Argument[1]", "Argument[this]", "taint", "df-generated"]
- ["java.lang", "VirtualMachineError", True, "VirtualMachineError", "(Throwable)", "", "Argument[0]", "Argument[this]", "taint", "df-generated"]
- addsTo:
pack: codeql/java-all
extensible: neutralModel
data:
- ["java.lang", "AbstractStringBuilder", "capacity", "()", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "codePointAt", "(int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "codePointBefore", "(int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "codePointCount", "(int,int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "ensureCapacity", "(int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "indexOf", "(String)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "indexOf", "(String,int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "lastIndexOf", "(String)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "lastIndexOf", "(String,int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "offsetByCodePoints", "(int,int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "setCharAt", "(int,char)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "setLength", "(int)", "summary", "df-generated"]
- ["java.lang", "AbstractStringBuilder", "trimToSize", "()", "summary", "df-generated"]
- ["java.lang", "ArrayIndexOutOfBoundsException", "ArrayIndexOutOfBoundsException", "(int)", "summary", "df-generated"]
- ["java.lang", "AssertionError", "AssertionError", "(boolean)", "summary", "df-generated"]
- ["java.lang", "AssertionError", "AssertionError", "(char)", "summary", "df-generated"]
- ["java.lang", "AssertionError", "AssertionError", "(double)", "summary", "df-generated"]
- ["java.lang", "AssertionError", "AssertionError", "(float)", "summary", "df-generated"]
- ["java.lang", "AssertionError", "AssertionError", "(int)", "summary", "df-generated"]
- ["java.lang", "AssertionError", "AssertionError", "(long)", "summary", "df-generated"]
- ["java.lang", "AutoCloseable", "close", "()", "summary", "df-generated"]
- ["java.lang", "Boolean", "Boolean", "(String)", "summary", "df-generated"]
- ["java.lang", "Boolean", "Boolean", "(boolean)", "summary", "df-generated"]
- ["java.lang", "Boolean", "compare", "(boolean,boolean)", "summary", "df-generated"]
- ["java.lang", "Boolean", "getBoolean", "(String)", "summary", "df-generated"]
- ["java.lang", "Boolean", "hashCode", "(boolean)", "summary", "df-generated"]
- ["java.lang", "Boolean", "logicalAnd", "(boolean,boolean)", "summary", "df-generated"]
- ["java.lang", "Boolean", "logicalOr", "(boolean,boolean)", "summary", "df-generated"]
- ["java.lang", "Boolean", "logicalXor", "(boolean,boolean)", "summary", "df-generated"]
- ["java.lang", "Boolean", "valueOf", "(String)", "summary", "df-generated"]
- ["java.lang", "Byte", "Byte", "(String)", "summary", "df-generated"]
- ["java.lang", "Byte", "Byte", "(byte)", "summary", "df-generated"]
- ["java.lang", "Byte", "compare", "(byte,byte)", "summary", "df-generated"]
- ["java.lang", "Byte", "compareUnsigned", "(byte,byte)", "summary", "df-generated"]
- ["java.lang", "Byte", "decode", "(String)", "summary", "df-generated"]
- ["java.lang", "Byte", "hashCode", "(byte)", "summary", "df-generated"]
- ["java.lang", "Byte", "parseByte", "(String)", "summary", "df-generated"]
- ["java.lang", "Byte", "parseByte", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Byte", "toUnsignedInt", "(byte)", "summary", "df-generated"]
- ["java.lang", "Byte", "toUnsignedLong", "(byte)", "summary", "df-generated"]
- ["java.lang", "Byte", "valueOf", "(String)", "summary", "df-generated"]
- ["java.lang", "Byte", "valueOf", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Byte", "valueOf", "(byte)", "summary", "df-generated"]
- ["java.lang", "CharSequence", "compare", "(CharSequence,CharSequence)", "summary", "df-generated"]
- ["java.lang", "CharSequence", "isEmpty", "()", "summary", "df-generated"]
- ["java.lang", "CharSequence", "length", "()", "summary", "df-generated"]
- ["java.lang", "Character$UnicodeBlock", "forName", "(String)", "summary", "df-generated"]
- ["java.lang", "Character$UnicodeBlock", "of", "(char)", "summary", "df-generated"]
- ["java.lang", "Character$UnicodeBlock", "of", "(int)", "summary", "df-generated"]
- ["java.lang", "Character$UnicodeScript", "forName", "(String)", "summary", "df-generated"]
- ["java.lang", "Character$UnicodeScript", "of", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "Character", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "charCount", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "charValue", "()", "summary", "df-generated"]
- ["java.lang", "Character", "codePointAt", "(CharSequence,int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointAt", "(char[],int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointAt", "(char[],int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointBefore", "(CharSequence,int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointBefore", "(char[],int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointBefore", "(char[],int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointCount", "(CharSequence,int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointCount", "(char[],int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "codePointOf", "(String)", "summary", "df-generated"]
- ["java.lang", "Character", "compare", "(char,char)", "summary", "df-generated"]
- ["java.lang", "Character", "digit", "(char,int)", "summary", "df-generated"]
- ["java.lang", "Character", "digit", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "forDigit", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "getDirectionality", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "getDirectionality", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "getName", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "getNumericValue", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "getNumericValue", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "getType", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "getType", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "hashCode", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "highSurrogate", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isAlphabetic", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isBmpCodePoint", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isDefined", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isDefined", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isDigit", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isDigit", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isHighSurrogate", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isISOControl", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isISOControl", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isIdentifierIgnorable", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isIdentifierIgnorable", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isIdeographic", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isJavaIdentifierPart", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isJavaIdentifierPart", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isJavaIdentifierStart", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isJavaIdentifierStart", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isJavaLetter", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isJavaLetterOrDigit", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isLetter", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isLetter", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isLetterOrDigit", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isLetterOrDigit", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isLowSurrogate", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isLowerCase", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isLowerCase", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isMirrored", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isMirrored", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isSpace", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isSpaceChar", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isSpaceChar", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isSupplementaryCodePoint", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isSurrogate", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isSurrogatePair", "(char,char)", "summary", "df-generated"]
- ["java.lang", "Character", "isTitleCase", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isTitleCase", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isUnicodeIdentifierPart", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isUnicodeIdentifierPart", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isUnicodeIdentifierStart", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isUnicodeIdentifierStart", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isUpperCase", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isUpperCase", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isValidCodePoint", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "isWhitespace", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "isWhitespace", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "lowSurrogate", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "offsetByCodePoints", "(CharSequence,int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "offsetByCodePoints", "(char[],int,int,int,int)", "summary", "df-generated"]
- ["java.lang", "Character", "reverseBytes", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "toChars", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "toChars", "(int,char[],int)", "summary", "df-generated"]
- ["java.lang", "Character", "toCodePoint", "(char,char)", "summary", "df-generated"]
- ["java.lang", "Character", "toLowerCase", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "toLowerCase", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "toTitleCase", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "toTitleCase", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "toUpperCase", "(char)", "summary", "df-generated"]
- ["java.lang", "Character", "toUpperCase", "(int)", "summary", "df-generated"]
- ["java.lang", "Character", "valueOf", "(char)", "summary", "df-generated"]
- ["java.lang", "Class", "asSubclass", "(Class)", "summary", "df-generated"]
- ["java.lang", "Class", "desiredAssertionStatus", "()", "summary", "df-generated"]
- ["java.lang", "Class", "forName", "(Module,String)", "summary", "df-generated"]
- ["java.lang", "Class", "forName", "(String,boolean,ClassLoader)", "summary", "df-generated"]
- ["java.lang", "Class", "getAnnotatedInterfaces", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getAnnotatedSuperclass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getClasses", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getComponentType", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getConstructor", "(Class[])", "summary", "df-generated"]
- ["java.lang", "Class", "getConstructors", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getDeclaredClasses", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getDeclaredConstructors", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getDeclaredFields", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getDeclaredMethod", "(String,Class[])", "summary", "df-generated"]
- ["java.lang", "Class", "getDeclaredMethods", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getDeclaringClass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getEnclosingClass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getEnclosingConstructor", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getEnclosingMethod", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getEnumConstants", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getField", "(String)", "summary", "df-generated"]
- ["java.lang", "Class", "getFields", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getGenericInterfaces", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getGenericSuperclass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getInterfaces", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getMethods", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getModifiers", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getModule", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getNestMembers", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getPackage", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getPackageName", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getPermittedSubclasses", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getProtectionDomain", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getRecordComponents", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getSigners", "()", "summary", "df-generated"]
- ["java.lang", "Class", "getSuperclass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isAnnotation", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isAnonymousClass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isEnum", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isHidden", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isInterface", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isLocalClass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isMemberClass", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isNestmateOf", "(Class)", "summary", "df-generated"]
- ["java.lang", "Class", "isRecord", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isSealed", "()", "summary", "df-generated"]
- ["java.lang", "Class", "isSynthetic", "()", "summary", "df-generated"]
- ["java.lang", "Class", "newInstance", "()", "summary", "df-generated"]
- ["java.lang", "Class", "toGenericString", "()", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "clearAssertionStatus", "()", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "findResources", "(String)", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getDefinedPackages", "()", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getPlatformClassLoader", "()", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getResourceAsStream", "(String)", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getResources", "(String)", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getSystemClassLoader", "()", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getSystemResourceAsStream", "(String)", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "getSystemResources", "(String)", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "isRegisteredAsParallelCapable", "()", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "resources", "(String)", "summary", "df-generated"]
- ["java.lang", "ClassLoader", "setDefaultAssertionStatus", "(boolean)", "summary", "df-generated"]
- ["java.lang", "ClassValue", "remove", "(Class)", "summary", "df-generated"]
- ["java.lang", "Compiler", "command", "(Object)", "summary", "df-generated"]
- ["java.lang", "Compiler", "compileClass", "(Class)", "summary", "df-generated"]
- ["java.lang", "Compiler", "compileClasses", "(String)", "summary", "df-generated"]
- ["java.lang", "Compiler", "disable", "()", "summary", "df-generated"]
- ["java.lang", "Compiler", "enable", "()", "summary", "df-generated"]
- ["java.lang", "Double", "Double", "(String)", "summary", "df-generated"]
- ["java.lang", "Double", "Double", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "compare", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Double", "doubleToRawLongBits", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "hashCode", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "isFinite", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "isInfinite", "()", "summary", "df-generated"]
- ["java.lang", "Double", "isInfinite", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "isNaN", "()", "summary", "df-generated"]
- ["java.lang", "Double", "isNaN", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "longBitsToDouble", "(long)", "summary", "df-generated"]
- ["java.lang", "Double", "max", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Double", "min", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Double", "sum", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Double", "toHexString", "(double)", "summary", "df-generated"]
- ["java.lang", "Double", "valueOf", "(String)", "summary", "df-generated"]
- ["java.lang", "Enum", "getDeclaringClass", "()", "summary", "df-generated"]
- ["java.lang", "Enum", "valueOf", "(Class,String)", "summary", "df-generated"]
- ["java.lang", "EnumConstantNotPresentException", "enumType", "()", "summary", "df-generated"]
- ["java.lang", "FdLibm$Cbrt", "compute", "(double)", "summary", "df-generated"]
- ["java.lang", "FdLibm$Hypot", "compute", "(double,double)", "summary", "df-generated"]
- ["java.lang", "FdLibm$Pow", "compute", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Float", "Float", "(String)", "summary", "df-generated"]
- ["java.lang", "Float", "Float", "(double)", "summary", "df-generated"]
- ["java.lang", "Float", "Float", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "compare", "(float,float)", "summary", "df-generated"]
- ["java.lang", "Float", "floatToIntBits", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "floatToRawIntBits", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "hashCode", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "intBitsToFloat", "(int)", "summary", "df-generated"]
- ["java.lang", "Float", "isFinite", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "isInfinite", "()", "summary", "df-generated"]
- ["java.lang", "Float", "isInfinite", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "isNaN", "()", "summary", "df-generated"]
- ["java.lang", "Float", "isNaN", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "max", "(float,float)", "summary", "df-generated"]
- ["java.lang", "Float", "min", "(float,float)", "summary", "df-generated"]
- ["java.lang", "Float", "parseFloat", "(String)", "summary", "df-generated"]
- ["java.lang", "Float", "sum", "(float,float)", "summary", "df-generated"]
- ["java.lang", "Float", "toHexString", "(float)", "summary", "df-generated"]
- ["java.lang", "Float", "valueOf", "(String)", "summary", "df-generated"]
- ["java.lang", "Float", "valueOf", "(float)", "summary", "df-generated"]
- ["java.lang", "IndexOutOfBoundsException", "IndexOutOfBoundsException", "(int)", "summary", "df-generated"]
- ["java.lang", "IndexOutOfBoundsException", "IndexOutOfBoundsException", "(long)", "summary", "df-generated"]
- ["java.lang", "Integer", "Integer", "(String)", "summary", "df-generated"]
- ["java.lang", "Integer", "bitCount", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "compare", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "compareUnsigned", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "decode", "(String)", "summary", "df-generated"]
- ["java.lang", "Integer", "divideUnsigned", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "getInteger", "(String)", "summary", "df-generated"]
- ["java.lang", "Integer", "getInteger", "(String,Integer)", "summary", "df-generated"]
- ["java.lang", "Integer", "getInteger", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "hashCode", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "highestOneBit", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "lowestOneBit", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "max", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "min", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "numberOfLeadingZeros", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "numberOfTrailingZeros", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "parseInt", "(CharSequence,int,int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "parseInt", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "parseUnsignedInt", "(CharSequence,int,int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "parseUnsignedInt", "(String)", "summary", "df-generated"]
- ["java.lang", "Integer", "parseUnsignedInt", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "remainderUnsigned", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "reverse", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "reverseBytes", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "rotateLeft", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "rotateRight", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "signum", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "sum", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Integer", "toBinaryString", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "toOctalString", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "toUnsignedLong", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "toUnsignedString", "(int)", "summary", "df-generated"]
- ["java.lang", "Integer", "toUnsignedString", "(int,int)", "summary", "df-generated"]
- ["java.lang", "LiveStackFrame$PrimitiveSlot", "intValue", "()", "summary", "df-generated"]
- ["java.lang", "LiveStackFrame$PrimitiveSlot", "longValue", "()", "summary", "df-generated"]
- ["java.lang", "LiveStackFrame$PrimitiveSlot", "size", "()", "summary", "df-generated"]
- ["java.lang", "Long", "Long", "(String)", "summary", "df-generated"]
- ["java.lang", "Long", "bitCount", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "compare", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "compareUnsigned", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "decode", "(String)", "summary", "df-generated"]
- ["java.lang", "Long", "divideUnsigned", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "getLong", "(String)", "summary", "df-generated"]
- ["java.lang", "Long", "getLong", "(String,Long)", "summary", "df-generated"]
- ["java.lang", "Long", "getLong", "(String,long)", "summary", "df-generated"]
- ["java.lang", "Long", "hashCode", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "highestOneBit", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "lowestOneBit", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "max", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "min", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "numberOfLeadingZeros", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "numberOfTrailingZeros", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "parseLong", "(CharSequence,int,int,int)", "summary", "df-generated"]
- ["java.lang", "Long", "parseLong", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Long", "parseUnsignedLong", "(CharSequence,int,int,int)", "summary", "df-generated"]
- ["java.lang", "Long", "parseUnsignedLong", "(String)", "summary", "df-generated"]
- ["java.lang", "Long", "parseUnsignedLong", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Long", "remainderUnsigned", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "reverse", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "reverseBytes", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "rotateLeft", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Long", "rotateRight", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Long", "signum", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "sum", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Long", "toBinaryString", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "toHexString", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "toOctalString", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "toUnsignedString", "(long)", "summary", "df-generated"]
- ["java.lang", "Long", "toUnsignedString", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Math", "IEEEremainder", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "abs", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "abs", "(float)", "summary", "df-generated"]
- ["java.lang", "Math", "abs", "(int)", "summary", "df-generated"]
- ["java.lang", "Math", "abs", "(long)", "summary", "df-generated"]
- ["java.lang", "Math", "absExact", "(int)", "summary", "df-generated"]
- ["java.lang", "Math", "absExact", "(long)", "summary", "df-generated"]
- ["java.lang", "Math", "acos", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "addExact", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Math", "addExact", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Math", "asin", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "atan2", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "atan", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "cbrt", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "ceil", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "copySign", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "copySign", "(float,float)", "summary", "df-generated"]
- ["java.lang", "Math", "cos", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "cosh", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "decrementExact", "(int)", "summary", "df-generated"]
- ["java.lang", "Math", "decrementExact", "(long)", "summary", "df-generated"]
- ["java.lang", "Math", "exp", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "expm1", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "floor", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "floorDiv", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Math", "floorDiv", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Math", "floorDiv", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Math", "floorMod", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Math", "floorMod", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Math", "floorMod", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Math", "fma", "(double,double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "fma", "(float,float,float)", "summary", "df-generated"]
- ["java.lang", "Math", "getExponent", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "getExponent", "(float)", "summary", "df-generated"]
- ["java.lang", "Math", "hypot", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "incrementExact", "(int)", "summary", "df-generated"]
- ["java.lang", "Math", "incrementExact", "(long)", "summary", "df-generated"]
- ["java.lang", "Math", "log10", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "log1p", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "log", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "multiplyExact", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Math", "multiplyExact", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Math", "multiplyExact", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Math", "multiplyFull", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Math", "multiplyHigh", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Math", "negateExact", "(int)", "summary", "df-generated"]
- ["java.lang", "Math", "negateExact", "(long)", "summary", "df-generated"]
- ["java.lang", "Math", "nextAfter", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "nextAfter", "(float,double)", "summary", "df-generated"]
- ["java.lang", "Math", "nextDown", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "nextDown", "(float)", "summary", "df-generated"]
- ["java.lang", "Math", "nextUp", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "nextUp", "(float)", "summary", "df-generated"]
- ["java.lang", "Math", "pow", "(double,double)", "summary", "df-generated"]
- ["java.lang", "Math", "random", "()", "summary", "df-generated"]
- ["java.lang", "Math", "rint", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "round", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "round", "(float)", "summary", "df-generated"]
- ["java.lang", "Math", "scalb", "(double,int)", "summary", "df-generated"]
- ["java.lang", "Math", "scalb", "(float,int)", "summary", "df-generated"]
- ["java.lang", "Math", "signum", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "signum", "(float)", "summary", "df-generated"]
- ["java.lang", "Math", "sin", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "sinh", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "sqrt", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "subtractExact", "(int,int)", "summary", "df-generated"]
- ["java.lang", "Math", "subtractExact", "(long,long)", "summary", "df-generated"]
- ["java.lang", "Math", "tan", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "tanh", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "toDegrees", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "toIntExact", "(long)", "summary", "df-generated"]
- ["java.lang", "Math", "toRadians", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "ulp", "(double)", "summary", "df-generated"]
- ["java.lang", "Math", "ulp", "(float)", "summary", "df-generated"]
- ["java.lang", "Module", "canRead", "(Module)", "summary", "df-generated"]
- ["java.lang", "Module", "canUse", "(Class)", "summary", "df-generated"]
- ["java.lang", "Module", "getResourceAsStream", "(String)", "summary", "df-generated"]
- ["java.lang", "Module", "isExported", "(String)", "summary", "df-generated"]
- ["java.lang", "Module", "isExported", "(String,Module)", "summary", "df-generated"]
- ["java.lang", "Module", "isNamed", "()", "summary", "df-generated"]
- ["java.lang", "Module", "isOpen", "(String)", "summary", "df-generated"]
- ["java.lang", "Module", "isOpen", "(String,Module)", "summary", "df-generated"]
- ["java.lang", "ModuleLayer", "boot", "()", "summary", "df-generated"]
- ["java.lang", "ModuleLayer", "empty", "()", "summary", "df-generated"]
- ["java.lang", "Number", "byteValue", "()", "summary", "df-generated"]
- ["java.lang", "Number", "doubleValue", "()", "summary", "df-generated"]
- ["java.lang", "Number", "floatValue", "()", "summary", "df-generated"]
- ["java.lang", "Number", "intValue", "()", "summary", "df-generated"]
- ["java.lang", "Number", "longValue", "()", "summary", "df-generated"]
- ["java.lang", "Number", "shortValue", "()", "summary", "df-generated"]
- ["java.lang", "Object", "equals", "(Object)", "summary", "df-generated"]
- ["java.lang", "Object", "finalize", "()", "summary", "df-generated"]
- ["java.lang", "Object", "hashCode", "()", "summary", "df-generated"]
- ["java.lang", "Object", "notify", "()", "summary", "df-generated"]
- ["java.lang", "Object", "notifyAll", "()", "summary", "df-generated"]
- ["java.lang", "Object", "wait", "()", "summary", "df-generated"]
- ["java.lang", "Object", "wait", "(long)", "summary", "df-generated"]
- ["java.lang", "Object", "wait", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Package", "getPackages", "()", "summary", "df-generated"]
- ["java.lang", "Package", "isCompatibleWith", "(String)", "summary", "df-generated"]
- ["java.lang", "Package", "isSealed", "()", "summary", "df-generated"]
- ["java.lang", "Package", "isSealed", "(URL)", "summary", "df-generated"]
- ["java.lang", "Process", "children", "()", "summary", "df-generated"]
- ["java.lang", "Process", "descendants", "()", "summary", "df-generated"]
- ["java.lang", "Process", "destroy", "()", "summary", "df-generated"]
- ["java.lang", "Process", "exitValue", "()", "summary", "df-generated"]
- ["java.lang", "Process", "info", "()", "summary", "df-generated"]
- ["java.lang", "Process", "isAlive", "()", "summary", "df-generated"]
- ["java.lang", "Process", "onExit", "()", "summary", "df-generated"]
- ["java.lang", "Process", "pid", "()", "summary", "df-generated"]
- ["java.lang", "Process", "supportsNormalTermination", "()", "summary", "df-generated"]
- ["java.lang", "Process", "waitFor", "()", "summary", "df-generated"]
- ["java.lang", "Process", "waitFor", "(long,TimeUnit)", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder$Redirect", "appendTo", "(File)", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder$Redirect", "file", "()", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder$Redirect", "from", "(File)", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder$Redirect", "to", "(File)", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder$Redirect", "type", "()", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder", "redirectErrorStream", "()", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder", "start", "()", "summary", "df-generated"]
- ["java.lang", "ProcessBuilder", "startPipeline", "(List)", "summary", "df-generated"]
- ["java.lang", "ProcessHandle$Info", "startInstant", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle$Info", "totalCpuDuration", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "allProcesses", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "children", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "current", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "descendants", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "destroy", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "destroyForcibly", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "info", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "isAlive", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "of", "(long)", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "onExit", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "parent", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "pid", "()", "summary", "df-generated"]
- ["java.lang", "ProcessHandle", "supportsNormalTermination", "()", "summary", "df-generated"]
- ["java.lang", "Readable", "read", "(CharBuffer)", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "compareToIgnoreOptional", "(Runtime$Version)", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "equalsIgnoreOptional", "(Object)", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "feature", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "interim", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "major", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "minor", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "parse", "(String)", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "patch", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "security", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "update", "()", "summary", "df-generated"]
- ["java.lang", "Runtime$Version", "version", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "addShutdownHook", "(Thread)", "summary", "df-generated"]
- ["java.lang", "Runtime", "availableProcessors", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "exec", "(String)", "summary", "df-generated"]
- ["java.lang", "Runtime", "exec", "(String,String[])", "summary", "df-generated"]
- ["java.lang", "Runtime", "exec", "(String,String[],File)", "summary", "df-generated"]
- ["java.lang", "Runtime", "exec", "(String[])", "summary", "df-generated"]
- ["java.lang", "Runtime", "exec", "(String[],String[])", "summary", "df-generated"]
- ["java.lang", "Runtime", "exec", "(String[],String[],File)", "summary", "df-generated"]
- ["java.lang", "Runtime", "exit", "(int)", "summary", "df-generated"]
- ["java.lang", "Runtime", "freeMemory", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "gc", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "halt", "(int)", "summary", "df-generated"]
- ["java.lang", "Runtime", "load", "(String)", "summary", "df-generated"]
- ["java.lang", "Runtime", "loadLibrary", "(String)", "summary", "df-generated"]
- ["java.lang", "Runtime", "maxMemory", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "removeShutdownHook", "(Thread)", "summary", "df-generated"]
- ["java.lang", "Runtime", "runFinalization", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "totalMemory", "()", "summary", "df-generated"]
- ["java.lang", "Runtime", "version", "()", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkAccept", "(String,int)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkAccess", "(Thread)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkAccess", "(ThreadGroup)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkConnect", "(String,int)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkConnect", "(String,int,Object)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkCreateClassLoader", "()", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkDelete", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkExec", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkExit", "(int)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkLink", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkListen", "(int)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkMulticast", "(InetAddress)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkMulticast", "(InetAddress,byte)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPackageAccess", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPackageDefinition", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPermission", "(Permission)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPermission", "(Permission,Object)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPrintJobAccess", "()", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPropertiesAccess", "()", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkPropertyAccess", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkRead", "(FileDescriptor)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkRead", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkRead", "(String,Object)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkSecurityAccess", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkSetFactory", "()", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkWrite", "(FileDescriptor)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "checkWrite", "(String)", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "getSecurityContext", "()", "summary", "df-generated"]
- ["java.lang", "SecurityManager", "getThreadGroup", "()", "summary", "df-generated"]
- ["java.lang", "Short", "Short", "(String)", "summary", "df-generated"]
- ["java.lang", "Short", "Short", "(short)", "summary", "df-generated"]
- ["java.lang", "Short", "compare", "(short,short)", "summary", "df-generated"]
- ["java.lang", "Short", "compareUnsigned", "(short,short)", "summary", "df-generated"]
- ["java.lang", "Short", "decode", "(String)", "summary", "df-generated"]
- ["java.lang", "Short", "hashCode", "(short)", "summary", "df-generated"]
- ["java.lang", "Short", "parseShort", "(String)", "summary", "df-generated"]
- ["java.lang", "Short", "parseShort", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Short", "reverseBytes", "(short)", "summary", "df-generated"]
- ["java.lang", "Short", "toUnsignedInt", "(short)", "summary", "df-generated"]
- ["java.lang", "Short", "toUnsignedLong", "(short)", "summary", "df-generated"]
- ["java.lang", "Short", "valueOf", "(String)", "summary", "df-generated"]
- ["java.lang", "Short", "valueOf", "(String,int)", "summary", "df-generated"]
- ["java.lang", "Short", "valueOf", "(short)", "summary", "df-generated"]
- ["java.lang", "StackTraceElement", "getLineNumber", "()", "summary", "df-generated"]
- ["java.lang", "StackTraceElement", "isNativeMethod", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", "getByteCodeIndex", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", "getClassName", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", "getDeclaringClass", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", "getLineNumber", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker$StackFrame", "isNativeMethod", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker", "forEach", "(Consumer)", "summary", "df-generated"]
- ["java.lang", "StackWalker", "getCallerClass", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker", "getInstance", "()", "summary", "df-generated"]
- ["java.lang", "StackWalker", "getInstance", "(StackWalker$Option)", "summary", "df-generated"]
- ["java.lang", "StackWalker", "walk", "(Function)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "IEEEremainder", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "abs", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "abs", "(float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "abs", "(int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "abs", "(long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "absExact", "(int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "absExact", "(long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "acos", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "addExact", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "addExact", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "asin", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "atan2", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "atan", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "cbrt", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "ceil", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "copySign", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "copySign", "(float,float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "cos", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "cosh", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "decrementExact", "(int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "decrementExact", "(long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "exp", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "expm1", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floor", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floorDiv", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floorDiv", "(long,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floorDiv", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floorMod", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floorMod", "(long,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "floorMod", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "fma", "(double,double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "fma", "(float,float,float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "getExponent", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "getExponent", "(float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "hypot", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "incrementExact", "(int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "incrementExact", "(long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "log10", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "log1p", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "log", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "max", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "max", "(float,float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "max", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "max", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "min", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "min", "(float,float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "min", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "min", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "multiplyExact", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "multiplyExact", "(long,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "multiplyExact", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "multiplyFull", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "multiplyHigh", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "negateExact", "(int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "negateExact", "(long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "nextAfter", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "nextAfter", "(float,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "nextDown", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "nextDown", "(float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "nextUp", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "nextUp", "(float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "pow", "(double,double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "random", "()", "summary", "df-generated"]
- ["java.lang", "StrictMath", "rint", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "round", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "round", "(float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "scalb", "(double,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "scalb", "(float,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "signum", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "signum", "(float)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "sin", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "sinh", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "sqrt", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "subtractExact", "(int,int)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "subtractExact", "(long,long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "tan", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "tanh", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "toDegrees", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "toIntExact", "(long)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "toRadians", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "ulp", "(double)", "summary", "df-generated"]
- ["java.lang", "StrictMath", "ulp", "(float)", "summary", "df-generated"]
- ["java.lang", "String", "codePointAt", "(int)", "summary", "df-generated"]
- ["java.lang", "String", "codePointBefore", "(int)", "summary", "df-generated"]
- ["java.lang", "String", "codePointCount", "(int,int)", "summary", "df-generated"]
- ["java.lang", "String", "compareToIgnoreCase", "(String)", "summary", "df-generated"]
- ["java.lang", "String", "contentEquals", "(CharSequence)", "summary", "df-generated"]
- ["java.lang", "String", "contentEquals", "(StringBuffer)", "summary", "df-generated"]
- ["java.lang", "String", "indexOf", "(String,int)", "summary", "df-generated"]
- ["java.lang", "String", "indexOf", "(int,int)", "summary", "df-generated"]
- ["java.lang", "String", "isBlank", "()", "summary", "df-generated"]
- ["java.lang", "String", "lastIndexOf", "(String,int)", "summary", "df-generated"]
- ["java.lang", "String", "lastIndexOf", "(int,int)", "summary", "df-generated"]
- ["java.lang", "String", "matches", "(String)", "summary", "df-generated"]
- ["java.lang", "String", "offsetByCodePoints", "(int,int)", "summary", "df-generated"]
- ["java.lang", "String", "regionMatches", "(boolean,int,String,int,int)", "summary", "df-generated"]
- ["java.lang", "String", "regionMatches", "(int,String,int,int)", "summary", "df-generated"]
- ["java.lang", "String", "startsWith", "(String,int)", "summary", "df-generated"]
- ["java.lang", "String", "transform", "(Function)", "summary", "df-generated"]
- ["java.lang", "String", "valueOf", "(double)", "summary", "df-generated"]
- ["java.lang", "String", "valueOf", "(float)", "summary", "df-generated"]
- ["java.lang", "StringBuffer", "StringBuffer", "(int)", "summary", "df-generated"]
- ["java.lang", "StringIndexOutOfBoundsException", "StringIndexOutOfBoundsException", "(int)", "summary", "df-generated"]
- ["java.lang", "System$Logger$Level", "getName", "()", "summary", "df-generated"]
- ["java.lang", "System$Logger$Level", "getSeverity", "()", "summary", "df-generated"]
- ["java.lang", "System$Logger", "log", "(System$Logger$Level,Object)", "summary", "df-generated"]
- ["java.lang", "System$Logger", "log", "(System$Logger$Level,String)", "summary", "df-generated"]
- ["java.lang", "System$Logger", "log", "(System$Logger$Level,String,Object[])", "summary", "df-generated"]
- ["java.lang", "System$Logger", "log", "(System$Logger$Level,String,Throwable)", "summary", "df-generated"]
- ["java.lang", "System$Logger", "log", "(System$Logger$Level,Supplier)", "summary", "df-generated"]
- ["java.lang", "System$Logger", "log", "(System$Logger$Level,Supplier,Throwable)", "summary", "df-generated"]
- ["java.lang", "System$LoggerFinder", "getLogger", "(String,Module)", "summary", "df-generated"]
- ["java.lang", "System$LoggerFinder", "getLoggerFinder", "()", "summary", "df-generated"]
- ["java.lang", "System", "clearProperty", "(String)", "summary", "df-generated"]
- ["java.lang", "System", "console", "()", "summary", "df-generated"]
- ["java.lang", "System", "gc", "()", "summary", "df-generated"]
- ["java.lang", "System", "getProperties", "()", "summary", "df-generated"]
- ["java.lang", "System", "getProperty", "(String)", "summary", "df-generated"]
- ["java.lang", "System", "getSecurityManager", "()", "summary", "df-generated"]
- ["java.lang", "System", "getenv", "()", "summary", "df-generated"]
- ["java.lang", "System", "inheritedChannel", "()", "summary", "df-generated"]
- ["java.lang", "System", "load", "(String)", "summary", "df-generated"]
- ["java.lang", "System", "loadLibrary", "(String)", "summary", "df-generated"]
- ["java.lang", "System", "mapLibraryName", "(String)", "summary", "df-generated"]
- ["java.lang", "System", "runFinalization", "()", "summary", "df-generated"]
- ["java.lang", "System", "setErr", "(PrintStream)", "summary", "df-generated"]
- ["java.lang", "System", "setIn", "(InputStream)", "summary", "df-generated"]
- ["java.lang", "System", "setOut", "(PrintStream)", "summary", "df-generated"]
- ["java.lang", "System", "setProperties", "(Properties)", "summary", "df-generated"]
- ["java.lang", "System", "setSecurityManager", "(SecurityManager)", "summary", "df-generated"]
- ["java.lang", "Thread$UncaughtExceptionHandler", "uncaughtException", "(Thread,Throwable)", "summary", "df-generated"]
- ["java.lang", "Thread", "activeCount", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "checkAccess", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "countStackFrames", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "dumpStack", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "enumerate", "(Thread[])", "summary", "df-generated"]
- ["java.lang", "Thread", "getAllStackTraces", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "getDefaultUncaughtExceptionHandler", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "getId", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "getPriority", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "getStackTrace", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "getState", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "holdsLock", "(Object)", "summary", "df-generated"]
- ["java.lang", "Thread", "interrupted", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "isAlive", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "isDaemon", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "isInterrupted", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "join", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "join", "(long)", "summary", "df-generated"]
- ["java.lang", "Thread", "join", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Thread", "onSpinWait", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "resume", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "setDaemon", "(boolean)", "summary", "df-generated"]
- ["java.lang", "Thread", "setDefaultUncaughtExceptionHandler", "(Thread$UncaughtExceptionHandler)", "summary", "df-generated"]
- ["java.lang", "Thread", "setPriority", "(int)", "summary", "df-generated"]
- ["java.lang", "Thread", "sleep", "(long,int)", "summary", "df-generated"]
- ["java.lang", "Thread", "stop", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "suspend", "()", "summary", "df-generated"]
- ["java.lang", "Thread", "yield", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "activeCount", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "activeGroupCount", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "allowThreadSuspension", "(boolean)", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "checkAccess", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "destroy", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "getMaxPriority", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "interrupt", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "isDaemon", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "isDestroyed", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "list", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "parentOf", "(ThreadGroup)", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "resume", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "setDaemon", "(boolean)", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "setMaxPriority", "(int)", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "stop", "()", "summary", "df-generated"]
- ["java.lang", "ThreadGroup", "suspend", "()", "summary", "df-generated"]
- ["java.lang", "ThreadLocal", "remove", "()", "summary", "df-generated"]
- ["java.lang", "Throwable", "printStackTrace", "()", "summary", "df-generated"]
- ["java.lang", "Throwable", "printStackTrace", "(PrintStream)", "summary", "df-generated"]

Some files were not shown because too many files have changed in this diff Show More